使用自訂轉換 Lambda 函數來定義如何擷取您的資料 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用自訂轉換 Lambda 函數來定義如何擷取您的資料

您可以定義自訂轉換 Lambda 函數,將自己的邏輯注入知識庫擷取程序。

您可能有特定的群集邏輯,Amazon Bedrock 知識庫原生不支援。使用無群集策略選項,同時指定包含群集邏輯的 Lambda 函數。此外,您將需要為知識庫指定 Amazon S3 儲存貯體,以寫入 Lambda 函數要群集的檔案。

群集之後,Lambda 函數會將群集檔案寫入相同的儲存貯體,並傳回知識庫的參考以供進一步處理。您可以選擇提供自己的 AWS KMS 金鑰,以加密存放在 S3 儲存貯體中的檔案。

注意

如果使用 Web 連接器,則會將 Markdown 文字傳遞給 Lambda,而不是 HTML。

或者,您可能要指定區塊層級中繼資料,同時讓知識庫套用其中一個原生支援的群集策略。在此情況下,選取其中一個預先定義的群集策略 (例如預設或固定大小的群集),同時提供 Lambda 函數和 S3 儲存貯體的參考。在此情況下,知識庫會在呼叫 Lambda 函數以進一步新增區塊層級中繼資料之前,將已剖析和預先群集的檔案存放在預先定義的 S3 儲存貯體中。

新增區塊層級中繼資料之後,Lambda 函數會將群集檔案寫入相同的儲存貯體,並傳回知識庫的參考以供進一步處理。請注意,區塊層級中繼資料會優先處理,並在發生任何衝突時,覆寫檔案層級中繼資料。

如需使用 Python Lambda 函數進行自訂群集的範例,請參閱使用 Lambda 函數自訂群集

如需 API 和檔案合約,請參閱下列結構:

使用 Lambda 函數新增自訂轉換時的 API 合約

{ ... "vectorIngestionConfiguration": { "customTransformationConfiguration": { // Custom transformation "intermediateStorage": { "s3Location": { // the location where input/output of the Lambda is expected "uri": "string" } }, "transformations": [{ "transformationFunction": { "transformationLambdaConfiguration": { "lambdaArn": "string" } }, "stepToApply": "string" // enum of POST_CHUNKING }] }, "chunkingConfiguration": { "chunkingStrategy": "string", "fixedSizeChunkingConfiguration": { "maxTokens": "number", "overlapPercentage": "number" } ... } } }

自訂 Lambda 轉換輸入格式

{ "version": "1.0", "knowledgeBaseId": "string", "dataSourceId": "string", "ingestionJobId": "string", "bucketName": "string", "priorTask": "string", "inputFiles": [{ "originalFileLocation": { "type": "S3", "s3_location": { "uri": "string" } }, "fileMetadata": { "key1": "value1", "key2": "value2" }, "contentBatches": [{ "key":"string" }] }] }

自訂 Lambda 轉換輸出格式

{ "outputFiles": [{ "originalFileLocation": { "type": "S3", "s3_location": { "uri": "string" } }, "fileMetadata": { "key1": "value1", "key2": "value2" }, "contentBatches": [{ "key": "string" }] }] }

fileContents 中參考之物件的檔案格式

{ "fileContents": [{ "contentBody": "...", "contentType": "string", // enum of TEXT, PDF, ... "contentMetadata": { "key1": "value1", "key2": "value2" } } ... ] }