Utilizzo di una funzione Lambda di trasformazione personalizzata per definire come vengono importati i dati - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di una funzione Lambda di trasformazione personalizzata per definire come vengono importati i dati

Hai la possibilità di definire una funzione Lambda di trasformazione personalizzata per iniettare la logica personalizzata nel processo di importazione della knowledge base.

Potresti avere una logica di suddivisione in blocchi specifica, non supportata in modo nativo da Knowledge Base per Amazon Bedrock. Utilizza l’opzione Strategia di chunking, specificando una funzione Lambda che contenga la logica di chunking. Inoltre, è necessario specificare un bucket Amazon S3 affinché la knowledge base possa scrivere i file di cui eseguire il chunking dalla funzione Lambda.

Dopo il chunking, la funzione Lambda riscriverà i file suddivisi in chunk nello stesso bucket e restituirà i riferimenti alla knowledge base per ulteriori elaborazioni. Facoltativamente, hai la possibilità di fornire la chiave AWS KMS per la crittografia dei file archiviati nel bucket S3.

Nota

Se si utilizzano connettori web, Lambda riceverà un testo markdown anziché HTML.

In alternativa, è possibile specificare metadati a livello di chunk, mentre la knowledge base applica una delle strategie di chunking supportate in modo nativo. In questo caso, seleziona una delle strategie di chunking predefinite (ad esempio, chunking predefinito o a dimensioni fisse), fornendo al contempo un riferimento alla funzione Lambda e al bucket S3. In questo caso, la knowledge base archivierà i file analizzati e pre-suddivisi in chunk nel bucket S3 predefinito, prima di chiamare la funzione Lambda per aggiungere ulteriori metadati a livello di chunk.

Dopo aver aggiunto i metadati a livello di chunk, la funzione Lambda riscriverà i file suddivisi in chunk nello stesso bucket e restituirà i riferimenti alla knowledge base per ulteriori elaborazioni. Tieni presente che, in caso di conflitti, i metadati a livello di chunk hanno la precedenza e sovrascrivono i metadati a livello di file.

Per un esempio di utilizzo di una funzione Lambda di Python per il chunking personalizzato, consulta Chunking personalizzato utilizzando la funzione Lambda.

Per i contratti API e file, consulta le seguenti strutture:

Contratto API quando si aggiunge una trasformazione personalizzata utilizzando la funzione Lambda

{ ... "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" } ... } } }

Formato di input personalizzato per la trasformazione 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" }] }] }

Formato di output personalizzato per la trasformazione Lambda

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

Formato di file per gli oggetti a cui si fa riferimento in fileContents

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