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.
Enrichir vos documents lors de l'ingestion
Note
La prise en charge des fonctionnalités varie en fonction du type d'index et de l'API de recherche utilisés. Pour savoir si cette fonctionnalité est prise en charge pour le type d'index et l'API de recherche que vous utilisez, consultez la section Types d'index.
Vous pouvez modifier le contenu et les champs ou attributs des métadonnées du document pendant le processus d'ingestion du document. Grâce à Amazon Kendra la fonction d'enrichissement personnalisé des documents, vous pouvez créer, modifier ou supprimer les attributs et le contenu des documents lorsque vous les ingérez. Amazon Kendra Cela signifie que vous pouvez manipuler et ingérer vos données selon vos besoins.
Cette fonctionnalité vous permet de contrôler la manière dont vos documents sont traités et ingérés. Amazon Kendra Par exemple, vous pouvez supprimer les informations personnellement identifiables contenues dans les métadonnées du document lors de l'ingestion de vos documents. Amazon Kendra
Vous pouvez également utiliser cette fonctionnalité en invoquant une fonction Lambda AWS Lambda pour exécuter la reconnaissance optique de caractères (OCR) sur des images, une traduction sur du texte et d'autres tâches de préparation des données pour la recherche ou l'analyse. Par exemple, vous pouvez appeler une fonction pour exécuter l'OCR sur des images. La fonction pouvait interpréter le texte des images et traiter chaque image comme un document textuel. Une entreprise qui reçoit des enquêtes clients envoyées par la poste et qui les stocke sous forme d'images pourrait intégrer ces images sous forme de documents textuels. Amazon Kendra L'entreprise peut ensuite rechercher des informations précieuses issues de sondages auprès des clients dans Amazon Kendra.
Vous pouvez utiliser des opérations de base à appliquer lors de la première analyse de vos données, puis utiliser une fonction Lambda pour appliquer des opérations plus complexes à vos données. Par exemple, vous pouvez utiliser une opération de base pour simplement supprimer toutes les valeurs du champ de métadonnées du document « Customer_ID », puis appliquer une fonction Lambda pour extraire le texte des images du texte des documents.
Comment fonctionne l'enrichissement personnalisé des documents
Le processus global d'enrichissement de documents personnalisés est le suivant :
-
Vous configurez l'enrichissement personnalisé des documents lorsque vous créez ou mettez à jour votre source de données, ou lorsque vous y indexez directement vos documents Amazon Kendra.
-
Amazon Kendra applique des configurations intégrées ou une logique de base pour modifier vos données. Pour de plus amples informations, veuillez consulter Opérations de base pour modifier les métadonnées.
-
Si vous choisissez de configurer la manipulation avancée des données, vous Amazon Kendra pouvez l'appliquer à vos documents bruts originaux ou aux documents structurés et analysés. Pour de plus amples informations, veuillez consulter Fonctions Lambda : extraire et modifier les métadonnées ou le contenu.
-
Vos documents modifiés sont ingérés dans. Amazon Kendra
À tout moment de ce processus, si votre configuration n'est pas valide, une Amazon Kendra erreur est générée.
Lorsque vous appelez CreateDataSource, ou UpdateDataSourceBatchPutDocument APIs, vous fournissez votre configuration personnalisée d'enrichissement de documents. Si vous appelezBatchPutDocument
, vous devez configurer l'enrichissement personnalisé des documents à chaque demande. Si vous utilisez la console, vous sélectionnez votre index, puis sélectionnez Enrichissements de documents pour configurer l'enrichissement de documents personnalisé.
Si vous utilisez les enrichissements de documents dans la console, vous pouvez choisir de configurer uniquement les opérations de base ou uniquement les fonctions Lambda, ou les deux, comme vous pouvez le faire avec l'API. Vous pouvez sélectionner Suivant dans les étapes de la console pour choisir de ne pas configurer les opérations de base et uniquement les fonctions Lambda, notamment si elles doivent s'appliquer aux données d'origine (pré-extraction) ou structurées (après extraction). Vous ne pouvez enregistrer vos configurations qu'en effectuant toutes les étapes dans la console. Les configurations de vos documents ne sont pas enregistrées si vous n'effectuez pas toutes les étapes.
Opérations de base pour modifier les métadonnées
Vous pouvez manipuler les champs et le contenu de votre document à l'aide d'une logique de base. Cela inclut la suppression de valeurs dans un champ, la modification des valeurs d'un champ à l'aide d'une condition ou la création d'un champ. Pour les manipulations avancées qui vont au-delà de ce que vous pouvez manipuler en utilisant la logique de base, appelez une fonction Lambda. Pour de plus amples informations, veuillez consulter Fonctions Lambda : extraire et modifier les métadonnées ou le contenu.
Pour appliquer la logique de base, vous devez spécifier le champ cible que vous souhaitez manipuler à l'aide de l'DocumentAttributeTargetobjet. Vous fournissez la clé d'attribut. Par exemple, la clé « Département » est un champ ou un attribut qui contient tous les noms de départements associés aux documents. Vous pouvez également spécifier une valeur à utiliser dans le champ cible si une certaine condition est remplie. Vous définissez la condition à l'aide de l'DocumentAttributeConditionobjet. Par exemple, si le champ « Source_URI » contient « financier » dans sa valeur d'URI, préremplissez le champ cible « Department » avec la valeur cible « Finance » pour le document. Vous pouvez également supprimer les valeurs de l'attribut du document cible.
Pour appliquer une logique de base à l'aide de la console, sélectionnez votre index, puis sélectionnez Enrichissements de documents dans le menu de navigation. Accédez à Configurer les opérations de base pour appliquer des manipulations de base aux champs et au contenu de votre document.
Voici un exemple d'utilisation de la logique de base pour supprimer tous les numéros d'identification des clients dans le champ du document appelé « Customer_ID ».
Exemple 1 : Supprimer les numéros d'identification des clients associés aux documents
Données avant l'application de la manipulation de base.
Identifiant du document | Corps_Text | Identifiant_client |
---|---|---|
1 | Lorem Ipsum. | CID1234 |
2 | Lorem Ipsum. | CID1235 |
3 | Lorem Ipsum. | CID1236 |
Données appliquées après manipulation de base.
Identifiant du document | Corps_Text | Identifiant_client |
---|---|---|
1 | Lorem Ipsum. | |
2 | Lorem Ipsum. | |
3 | Lorem Ipsum. |
Voici un exemple d'utilisation de la logique de base pour créer un champ appelé « Department » et préremplir ce champ avec les noms des départements en fonction des informations du champ « Source_URI ». Cela utilise la condition selon laquelle si le champ « Source_URI » contient « financier » dans sa valeur d'URI, le champ cible « Department » est prérempli avec la valeur cible « Finance » pour le document.
Exemple 2 : créer le champ « Département » et le préremplir avec les noms des départements associés aux documents à l'aide d'une condition.
Données avant l'application de la manipulation de base.
Identifiant du document | Corps_Text | URI de la source |
---|---|---|
1 | Lorem Ipsum. | financier/1 |
2 | Lorem Ipsum. | financier/2 |
3 | Lorem Ipsum. | financier/3 |
Données appliquées après manipulation de base.
Identifiant du document | Corps_Text | URI de la source | Département |
---|---|---|---|
1 | Lorem Ipsum. | financier/1 | Finance |
2 | Lorem Ipsum. | financier/2 | Finance |
3 | Lorem Ipsum. | financier/3 | Finance |
Note
Amazon Kendra Impossible de créer un champ de document cible s'il n'est pas déjà créé en tant que champ d'index. Après avoir créé votre champ d'index, vous pouvez créer un champ de document à l'aide deDocumentAttributeTarget
. Amazon Kendra fait ensuite correspondre le champ de métadonnées du document que vous venez de créer à votre champ d'index.
Le code suivant est un exemple de configuration de la manipulation de base des données pour supprimer les numéros d'identification des clients associés aux documents.
Pour configurer la manipulation de base des données afin de supprimer les numéros d'identification des clients
-
Dans le volet de navigation de gauche, sous Index, sélectionnez Enrichissements de documents, puis sélectionnez Ajouter un enrichissement de document.
-
Sur la page Configurer les opérations de base, choisissez dans le menu déroulant la source de données dont vous souhaitez modifier les champs et le contenu du document. Choisissez ensuite dans le menu déroulant le nom du champ du document « Customer_ID », sélectionnez dans le menu déroulant le nom du champ d'index « Customer_ID » et sélectionnez dans le menu déroulant l'action cible Supprimer. Sélectionnez ensuite Ajouter une opération de base.
Fonctions Lambda : extraire et modifier les métadonnées ou le contenu
Vous pouvez manipuler les champs et le contenu de votre document à l'aide des fonctions Lambda. Cela est utile si vous souhaitez aller au-delà de la logique de base et appliquer des manipulations de données avancées. Par exemple, utiliser la reconnaissance optique de caractères (OCR), qui interprète le texte des images et traite chaque image comme un document textuel. Vous pouvez également récupérer la date-heure actuelle dans un certain fuseau horaire et insérer la date-heure là où il y a une valeur vide pour un champ de date.
Vous pouvez d'abord appliquer une logique de base, puis utiliser une fonction Lambda pour continuer à manipuler vos données, ou vice versa. Vous pouvez également choisir de n'appliquer qu'une fonction Lambda.
Amazon Kendra peut invoquer une fonction Lambda pour appliquer des manipulations de données avancées pendant le processus d'ingestion dans le cadre de votre. CustomDocumentEnrichmentConfiguration Vous spécifiez un rôle qui inclut l'autorisation d'exécuter la fonction Lambda et d'accéder à votre Amazon S3 bucket pour stocker le résultat de vos manipulations IAM de données (voir rôles d'accès).
Amazon Kendra peut appliquer une fonction Lambda sur vos documents bruts originaux ou sur les documents structurés et analysés. Vous pouvez configurer une fonction Lambda qui prend vos données d'origine ou brutes et applique vos manipulations de données à l'aide de. PreExtractionHookConfiguration Vous pouvez également configurer une fonction Lambda qui prend vos documents structurés et applique vos manipulations de données à l'aide de. PostExtractionHookConfiguration Amazon Kendra extrait les métadonnées et le texte du document pour structurer vos documents. Vos fonctions Lambda doivent respecter les structures de demande et de réponse obligatoires. Pour de plus amples informations, veuillez consulter Contrats de données pour les fonctions Lambda.
Pour configurer une fonction Lambda dans la console, sélectionnez votre index, puis sélectionnez Enrichissements de documents dans le menu de navigation. Accédez à Configurer les fonctions Lambda pour configurer une fonction Lambda.
Vous ne pouvez configurer qu'une seule fonction Lambda pour PreExtractionHookConfiguration
et une seule fonction Lambda pour. PostExtractionHookConfiguration
Toutefois, votre fonction Lambda peut invoquer d'autres fonctions dont elle a besoin. Vous pouvez configurer les deux PostExtractionHookConfiguration
ou PreExtractionHookConfiguration
l'un ou l'autre. Votre fonction Lambda pour ne PreExtractionHookConfiguration
doit pas dépasser une durée d'exécution de 5 minutes et votre fonction Lambda pour ne PostExtractionHookConfiguration
doit pas dépasser une durée d'exécution de 1 minute. La configuration de l'enrichissement personnalisé des documents prend naturellement plus de temps pour intégrer vos documents Amazon Kendra que si vous ne le configuriez pas.
Vous pouvez configurer Amazon Kendra pour appeler une fonction Lambda uniquement si une condition est remplie. Par exemple, vous pouvez spécifier une condition selon laquelle, s'il existe des valeurs date-heure vides, invoque une fonction qui insère la date-heure actuelle. Amazon Kendra
Voici un exemple d'utilisation d'une fonction Lambda pour exécuter l'OCR afin d'interpréter du texte à partir d'images et de stocker ce texte dans un champ appelé « Document_Image_Text ».
Exemple 1 : extraction de texte à partir d'images pour créer des documents textuels
Données avant application de la manipulation avancée.
Identifiant du document | Document_Image |
---|---|
1 | image_1.png |
2 | image_2.png |
3 | image_3.png |
Données appliquées après manipulation avancée.
Identifiant du document | Document_Image | Document_Image_Texte |
---|---|---|
1 | image_1.png | Réponse au sondage envoyée par la poste |
2 | image_2.png | Réponse au sondage envoyée par la poste |
3 | image_3.png | Réponse au sondage envoyée par la poste |
Voici un exemple d'utilisation d'une fonction Lambda pour insérer la date-heure actuelle pour les valeurs de date vides. Cela utilise la condition selon laquelle si la valeur d'un champ de date est « nulle », remplacez-la par la date-heure actuelle.
Exemple 2 : remplacement des valeurs vides du champ Last_Updated par la date-heure actuelle.
Données avant application de la manipulation avancée.
Identifiant du document | Corps_Text | Dernière mise à jour |
---|---|---|
1 | Lorem Ipsum. | 1er janvier 2020 |
2 | Lorem Ipsum. | |
3 | Lorem Ipsum. | 1er juillet 2020 |
Données appliquées après manipulation avancée.
Identifiant du document | Corps_Text | Dernière mise à jour |
---|---|---|
1 | Lorem Ipsum. | 1er janvier 2020 |
2 | Lorem Ipsum. | 1er décembre 2021 |
3 | Lorem Ipsum. | 1er juillet 2020 |
Le code suivant est un exemple de configuration d'une fonction Lambda pour la manipulation avancée des données d'origine brutes.
Pour configurer une fonction Lambda pour une manipulation avancée des données d'origine brutes
-
Dans le volet de navigation de gauche, sous Index, sélectionnez Enrichissements de documents, puis sélectionnez Ajouter un enrichissement de document.
-
Sur la page Configurer les fonctions Lambda, dans la section Lambda pour la pré-extraction, sélectionnez dans les listes déroulantes l'ARN de votre fonction Lambda et votre bucket. Amazon S3 Ajoutez votre rôle IAM d'accès en sélectionnant l'option permettant de créer un nouveau rôle dans le menu déroulant. Cela crée les Amazon Kendra autorisations requises pour créer l'enrichissement du document.
Contrats de données pour les fonctions Lambda
Vos fonctions Lambda pour la manipulation avancée des données interagissent avec les contrats de Amazon Kendra données. Les contrats sont les structures de demande et de réponse obligatoires de vos fonctions Lambda. Si vos fonctions Lambda ne suivent pas ces structures, une erreur est Amazon Kendra générée.
Votre fonction Lambda pour PreExtractionHookConfiguration
devrait s'attendre à la structure de requête suivante :
{
"version": <str>,
"dataBlobStringEncodedInBase64": <str>, //In the case of a data blob
"s3Bucket": <str>, //In the case of an S3 bucket
"s3ObjectKey": <str>, //In the case of an S3 bucket
"metadata": <Metadata>
}
La metadata
structure, qui inclut la CustomDocumentAttribute
structure, est la suivante :
{
"attributes": [<CustomDocumentAttribute<]
}
CustomDocumentAttribute
{
"name": <str>,
"value": <CustomDocumentAttributeValue>
}
CustomDocumentAttributeValue
{
"stringValue": <str>,
"integerValue": <int>,
"longValue": <long>,
"stringListValue": list<str>,
"dateValue": <str>
}
Votre fonction Lambda pour PreExtractionHookConfiguration
doit respecter la structure de réponse suivante :
{
"version": <str>,
"dataBlobStringEncodedInBase64": <str>, //In the case of a data blob
"s3ObjectKey": <str>, //In the case of an S3 bucket
"metadataUpdates": [<CustomDocumentAttribute>]
}
Votre fonction Lambda pour PostExtractionHookConfiguration
devrait s'attendre à la structure de requête suivante :
{
"version": <str>,
"s3Bucket": <str>,
"s3ObjectKey": <str>,
"metadata": <Metadata>
}
Votre fonction Lambda pour PostExtractionHookConfiguration
doit respecter la structure de réponse suivante :
PostExtractionHookConfiguration Lambda Response
{
"version": <str>,
"s3ObjectKey": <str>,
"metadataUpdates": [<CustomDocumentAttribute>]
}
Votre document modifié est chargé dans votre Amazon S3 compartiment. Le document modifié doit suivre le format indiqué dansFormat de document structuré.
Format de document structuré
Amazon Kendra télécharge votre document structuré dans le Amazon S3 compartiment indiqué. Le document structuré suit le format suivant :
Kendra document
{
"textContent": <TextContent>
}
TextContent
{
"documentBodyText": <str>
}
Exemple de fonction Lambda qui respecte les contrats de données
Le code Python suivant est un exemple de fonction Lambda qui applique une manipulation avancée des champs _authors
de métadonnées et du contenu du corps des documents bruts ou originaux. _document_title
Dans le cas où le contenu corporel se trouve dans un Amazon S3 compartiment
import json
import boto3
s3 = boto3.client("s3")
# Lambda function for advanced data manipulation
def lambda_handler(event, context):
# Get the value of "S3Bucket" key name or item from the given event input
s3_bucket = event.get("s3Bucket")
# Get the value of "S3ObjectKey" key name or item from the given event input
s3_object_key = event.get("s3ObjectKey")
content_object_before_CDE = s3.get_object(Bucket = s3_bucket, Key = s3_object_key)
content_before_CDE = content_object_before_CDE["Body"].read().decode("utf-8");
content_after_CDE = "CDEInvolved " + content_before_CDE
# Get the value of "metadata" key name or item from the given event input
metadata = event.get("metadata")
# Get the document "attributes" from the metadata
document_attributes = metadata.get("attributes")
s3.put_object(Bucket = s3_bucket, Key = "dummy_updated_kendra_document", Body=json.dumps(content_after_CDE))
return {
"version": "v0",
"s3ObjectKey": "dummy_updated_kendra_document",
"metadataUpdates": [
{"name":"_document_title", "value":{"stringValue":"title_from_pre_extraction_lambda"}},
{"name":"_authors", "value":{"stringListValue":["author1", "author2"]}}
]
}
Dans le cas où le contenu du corps réside dans un blob de données
import json
import boto3
import base64
# Lambda function for advanced data manipulation
def lambda_handler(event, context):
# Get the value of "dataBlobStringEncodedInBase64" key name or item from the given event input
data_blob_string_encoded_in_base64 = event.get("dataBlobStringEncodedInBase64")
# Decode the data blob string in UTF-8
data_blob_string = base64.b64decode(data_blob_string_encoded_in_base64).decode("utf-8")
# Get the value of "metadata" key name or item from the given event input
metadata = event.get("metadata")
# Get the document "attributes" from the metadata
document_attributes = metadata.get("attributes")
new_data_blob = "This should be the modified data in the document by pre processing lambda ".encode("utf-8")
return {
"version": "v0",
"dataBlobStringEncodedInBase64": base64.b64encode(new_data_blob).decode("utf-8"),
"metadataUpdates": [
{"name":"_document_title", "value":{"stringValue":"title_from_pre_extraction_lambda"}},
{"name":"_authors", "value":{"stringListValue":["author1", "author2"]}}
]
}
Le code Python suivant est un exemple de fonction Lambda qui applique une manipulation avancée des champs _authors
de métadonnées et du contenu du corps des documents structurés ou analysés. _document_title
import json
import boto3
import time
s3 = boto3.client("s3")
# Lambda function for advanced data manipulation
def lambda_handler(event, context):
# Get the value of "S3Bucket" key name or item from the given event input
s3_bucket = event.get("s3Bucket")
# Get the value of "S3ObjectKey" key name or item from the given event input
s3_key = event.get("s3ObjectKey")
# Get the value of "metadata" key name or item from the given event input
metadata = event.get("metadata")
# Get the document "attributes" from the metadata
document_attributes = metadata.get("attributes")
kendra_document_object = s3.get_object(Bucket = s3_bucket, Key = s3_key)
kendra_document_string = kendra_document_object['Body'].read().decode('utf-8')
kendra_document = json.loads(kendra_document_string)
kendra_document["textContent"]["documentBodyText"] = "Changing document body to a short sentence."
s3.put_object(Bucket = s3_bucket, Key = "dummy_updated_kendra_document", Body=json.dumps(kendra_document))
return {
"version" : "v0",
"s3ObjectKey": "dummy_updated_kendra_document",
"metadataUpdates": [
{"name": "_document_title", "value":{"stringValue": "title_from_post_extraction_lambda"}},
{"name": "_authors", "value":{"stringListValue":["author1", "author2"]}}
]
}