Utilisation d’une fonction Lambda de transformation personnalisée pour définir la manière dont vos données sont ingérées - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d’une fonction Lambda de transformation personnalisée pour définir la manière dont vos données sont ingérées

Il est possible de définir une fonction Lambda de transformation personnalisée pour injecter votre propre logique dans le processus d’ingestion de la base de connaissances.

Vous avez peut-être une logique de découpage spécifique, qui n’est pas prise en charge de manière native par les bases de connaissances Amazon Bedrock. Utilisez l’option de stratégie d’absence de découpage, tout en spécifiant une fonction Lambda contenant votre logique de découpage. En outre, vous devez spécifier un compartiment Amazon S3 pour la base de connaissances afin d’écrire les fichiers à découper par votre fonction Lambda.

Après le découpage, votre fonction Lambda réécrit les fichiers découpés dans le même compartiment et renvoie des références à la base de connaissances pour un traitement ultérieur. Vous pouvez éventuellement fournir votre propre clé AWS KMS pour le chiffrement des fichiers stockés dans votre compartiment S3.

Note

Si des connecteurs Web sont utilisés, un texte Markdown est transmis à Lambda au lieu du HTML.

Vous pouvez également spécifier des métadonnées au niveau des segments, tout en demandant à la base de connaissances d’appliquer l’une des stratégies de découpage prises en charge de manière native. Dans ce cas, sélectionnez l’une des stratégies de découpage prédéfinies (par exemple, découpage par défaut ou de taille fixe), tout en fournissant une référence à votre fonction Lambda et à votre compartiment S3. Dans ce cas, la base de connaissances stockera les fichiers analysés et pré-découpés dans le compartiment S3 prédéfini, avant d’appeler votre fonction Lambda pour ajouter des métadonnées au niveau des segments.

Après l’ajout de métadonnées au niveau des segments, votre fonction Lambda réécrit les fichiers découpés dans le même compartiment et renvoie des références à la base de connaissances pour un traitement ultérieur. Veuillez noter que les métadonnées au niveau des segments sont prioritaires et remplacent les métadonnées au niveau du fichier, en cas de collision.

Pour un exemple d’utilisation d’une fonction Lambda Python pour un découpage personnalisé, consultez Découpage personnalisé à l’aide de la fonction Lambda.

Pour les contrats d’API et de fichiers, reportez-vous aux structures ci-dessous :

Contrat d’API lors de l’ajout d’une transformation personnalisée à l’aide de la fonction 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" } ... } } }

Format d’entrée de transformation Lambda personnalisée

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

Format de sortie de transformation Lambda personnalisée

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

Le format de fichier pour les objets est référencé sous fileContents

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