Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bereichern Sie Ihre Dokumente während der Aufnahme
Sie können Ihre Inhalts- und Dokumentmetadatenfelder oder -Attribute während des Erfassungsprozesses des Dokuments ändern. Mit Amazon Kendra der Funktion zur benutzerdefinierten Dokumentanreicherung können Sie Dokumentattribute und Inhalte erstellen, ändern oder löschen, wenn Sie Ihre Dokumente in aufnehmen. Amazon Kendra Das bedeutet, dass Sie Ihre Daten nach Bedarf bearbeiten und aufnehmen können.
Mit dieser Funktion haben Sie die Kontrolle darüber, wie Ihre Dokumente behandelt und aufgenommen Amazon Kendra werden. Sie können beispielsweise persönlich identifizierbare Informationen in den Metadaten des Dokuments entfernen, während Sie Ihre Dokumente in das Dokument aufnehmen. Amazon Kendra
Sie können diese Funktion auch verwenden, indem Sie eine Lambda-Funktion aufrufen, AWS Lambda um die optische Zeichenerkennung (OCR) für Bilder, die Übersetzung von Text und andere Aufgaben zur Vorbereitung der Daten für die Suche oder Analyse auszuführen. Sie können beispielsweise eine Funktion aufrufen, um OCR auf Bildern auszuführen. Die Funktion könnte Text aus Bildern interpretieren und jedes Bild als Textdokument behandeln. Ein Unternehmen, das Kundenumfragen per Post erhält und diese Umfragen als Bilder speichert, könnte diese Bilder als Textdokumente aufnehmen. Amazon Kendra Das Unternehmen kann dann in nach wertvollen Informationen zu Kundenumfragen suchenAmazon Kendra.
Sie können grundlegende Operationen verwenden, um sie als erste Analyse Ihrer Daten anzuwenden, und dann eine Lambda-Funktion verwenden, um komplexere Operationen auf Ihre Daten anzuwenden. Sie könnten beispielsweise eine einfache Operation verwenden, um einfach alle Werte im Metadatenfeld 'Customer_ID' des Dokuments zu entfernen und dann eine Lambda-Funktion anzuwenden, um Text aus Bildern des Texts in den Dokumenten zu extrahieren.
So funktioniert Custom Document Enrichment
Der Gesamtprozess von Custom Document Enrichment sieht wie folgt aus:
-
Sie konfigurieren Custom Document Enrichment, wenn Sie Ihre Datenquelle erstellen oder aktualisieren oder Ihre Dokumente direkt in Amazon Kendra indexieren.
-
Amazon Kendrawendet Inline-Konfigurationen oder grundlegende Logik an, um Ihre Daten zu ändern. Weitere Informationen finden Sie unter Grundlegende Operationen zum Ändern von Metadaten.
-
Wenn Sie sich dafür entscheiden, die erweiterte Datenmanipulation zu konfigurieren, Amazon Kendra können Sie dies auf Ihre ursprünglichen Rohdokumente oder auf die strukturierten, analysierten Dokumente anwenden. Weitere Informationen finden Sie unter Lambda-Funktionen: Metadaten oder Inhalte extrahieren und ändern.
-
Ihre geänderten Dokumente werden aufgenommen. Amazon Kendra
Wenn Ihre Konfiguration zu irgendeinem Zeitpunkt dieses Vorgangs nicht gültig ist, wird Amazon Kendra ein Fehler ausgelöst.
Wenn Sie BatchPutDocumentAPIs aufrufen CreateDataSourceUpdateDataSource, oder geben Sie Ihre Custom Document Enrichment-Konfiguration an. Wenn Sie anrufenBatchPutDocument
, müssen Sie Custom Document Enrichment bei jeder Anfrage konfigurieren. Wenn Sie die Konsole verwenden, wählen Sie Ihren Index und dann Document Enrichments aus, um Custom Document Enrichment zu konfigurieren.
Wenn Sie Document Enrichments in der Konsole verwenden, können Sie wählen, ob Sie nur grundlegende Operationen oder nur Lambda-Funktionen oder beides konfigurieren möchten, wie Sie es mit der API tun können. Sie können in den Konsolenschritten Weiter auswählen, um keine grundlegenden Operationen und nur Lambda-Funktionen zu konfigurieren, einschließlich der Frage, ob diese auf die Originaldaten (vor der Extraktion) oder auf strukturierte Daten (nach der Extraktion) angewendet werden sollen. Sie können Ihre Konfigurationen nur speichern, indem Sie alle Schritte in der Konsole ausführen. Ihre Dokumentkonfigurationen werden nicht gespeichert, wenn Sie nicht alle Schritte abgeschlossen haben.
Grundlegende Operationen zum Ändern von Metadaten
Sie können Ihre Dokumentfelder und Inhalte mithilfe grundlegender Logik manipulieren. Dazu gehören das Entfernen von Werten in einem Feld, das Ändern von Werten in einem Feld mithilfe einer Bedingung oder das Erstellen eines Felds. Rufen Sie für fortgeschrittene Manipulationen, die über das hinausgehen, was Sie mit grundlegender Logik manipulieren können, eine Lambda-Funktion auf. Weitere Informationen finden Sie unter Lambda-Funktionen: Metadaten oder Inhalte extrahieren und ändern.
Um grundlegende Logik anzuwenden, geben Sie das Zielfeld an, das Sie mithilfe des DocumentAttributeTargetObjekts manipulieren möchten. Sie geben den Attributschlüssel an. Der Schlüssel „Abteilung“ ist beispielsweise ein Feld oder Attribut, das alle Abteilungsnamen enthält, die den Dokumenten zugeordnet sind. Sie können auch einen Wert angeben, der im Zielfeld verwendet werden soll, wenn eine bestimmte Bedingung erfüllt ist. Sie legen die Bedingung mithilfe des DocumentAttributeConditionObjekts fest. Wenn das Feld 'source_URI' beispielsweise 'financial' in seinem URI-Wert enthält, füllen Sie das Zielfeld 'Department' vorab mit dem Zielwert 'Finanzen' für das Dokument aus. Sie können auch die Werte des Zieldokumentattributs löschen.
Um die grundlegende Logik mithilfe der Konsole anzuwenden, wählen Sie Ihren Index und dann im Navigationsmenü die Option Document Enrichments aus. Gehen Sie zu Grundfunktionen konfigurieren, um grundlegende Manipulationen an Ihren Dokumentfeldern und Inhalten vorzunehmen.
Im Folgenden finden Sie ein Beispiel für die Verwendung einer einfachen Logik zum Entfernen aller Kundenidentifikationsnummern aus dem Dokumentfeld mit dem Namen 'Customer_ID'.
Beispiel 1: Entfernen der mit den Dokumenten verknüpften Kundenidentifikationsnummern
Daten vor der grundlegenden Manipulation.
Dokument-ID | Haupttext_Text | Kunden_ID |
---|---|---|
1 | Lorem Ipsum. | CID1234 |
2 | Lorem Ipsum. | CID1235 |
3 | Lorem Ipsum. | CID1236 |
Daten nach erfolgter grundlegender Manipulation.
Dokument-ID | Haupttext_Text | Kunden_ID |
---|---|---|
1 | Lorem Ipsum. | |
2 | Lorem Ipsum. | |
3 | Lorem Ipsum. |
Im Folgenden finden Sie ein Beispiel für die Verwendung grundlegender Logik, um ein Feld mit dem Namen „Abteilung“ zu erstellen und dieses Feld anhand der Informationen aus dem Feld „source_URI“ mit den Abteilungsnamen vorzufüllen. Dabei wird die Bedingung verwendet, dass, wenn das Feld 'source_URI' in seinem URI-Wert 'financial' enthält, das Zielfeld 'Department' mit dem Zielwert 'Finanzen' für das Dokument vorab ausgefüllt wird.
Beispiel 2: Erstellen Sie das Feld „Abteilung“ und füllen Sie es mithilfe einer Bedingung mit den Abteilungsnamen aus, die den Dokumenten zugeordnet sind.
Daten vor der grundlegenden Manipulation.
Dokument-ID | Haupttext_Text | Quelle_URI |
---|---|---|
1 | Lorem Ipsum. | finanziell/1 |
2 | Lorem Ipsum. | finanziell/2 |
3 | Lorem Ipsum. | finanziell/3 |
Daten nach erfolgter grundlegender Manipulation.
Dokument-ID | Haupttext_Text | Quelle_URI | Abteilung |
---|---|---|---|
1 | Lorem Ipsum. | finanziell/1 | Finanzen |
2 | Lorem Ipsum. | finanziell/2 | Finanzen |
3 | Lorem Ipsum. | finanziell/3 | Finanzen |
Anmerkung
Amazon Kendrakann kein Zieldokumentfeld erstellen, wenn es nicht bereits als Indexfeld erstellt wurde. Nachdem Sie Ihr Indexfeld erstellt haben, können Sie mithilfe vonDocumentAttributeTarget
. Amazon Kendraordnet dann Ihr neu erstelltes Dokumentmetadatenfeld Ihrem Indexfeld zu.
Der folgende Code ist ein Beispiel für die Konfiguration der grundlegenden Datenmanipulation, um die mit den Dokumenten verknüpften Kundenidentifikationsnummern zu entfernen.
Lambda-Funktionen: Metadaten oder Inhalte extrahieren und ändern
Sie können Ihre Dokumentfelder und Inhalte mithilfe von Lambda-Funktionen bearbeiten. Dies ist nützlich, wenn Sie über die grundlegende Logik hinausgehen und erweiterte Datenmanipulationen anwenden möchten. Verwenden Sie beispielsweise die optische Zeichenerkennung (OCR), die Text aus Bildern interpretiert und jedes Bild als Textdokument behandelt. Oder Sie rufen das aktuelle Datum und die Uhrzeit in einer bestimmten Zeitzone ab und fügen das Datum und die Uhrzeit ein, wenn ein leerer Wert für ein Datumsfeld vorhanden ist.
Sie können zuerst grundlegende Logik anwenden und dann eine Lambda-Funktion verwenden, um Ihre Daten weiter zu manipulieren, oder umgekehrt. Sie können sich auch dafür entscheiden, nur eine Lambda-Funktion anzuwenden.
Amazon Kendrakann eine Lambda-Funktion aufrufen, um erweiterte Datenmanipulationen während des Erfassungsprozesses als Teil Ihres durchzuführen. CustomDocumentEnrichmentConfiguration Sie geben eine Rolle an, die die Berechtigung beinhaltet, die Lambda-Funktion auszuführen und auf Ihren Amazon S3 Bucket zuzugreifen, um die Ausgabe Ihrer Datenmanipulationen zu speichern — IAM siehe Zugriffsrollen.
Amazon Kendrakann eine Lambda-Funktion auf Ihre ursprünglichen Rohdokumente oder auf die strukturierten, analysierten Dokumente anwenden. Sie können eine Lambda-Funktion konfigurieren, die Ihre Original- oder Rohdaten verwendet und Ihre Datenmanipulationen mithilfe von. PreExtractionHookConfiguration Sie können auch eine Lambda-Funktion konfigurieren, die Ihre strukturierten Dokumente verwendet und Ihre Datenmanipulationen mithilfe von. PostExtractionHookConfiguration Amazon Kendraextrahiert die Metadaten und den Text des Dokuments, um Ihre Dokumente zu strukturieren. Ihre Lambda-Funktionen müssen den obligatorischen Anfrage- und Antwortstrukturen folgen. Weitere Informationen finden Sie unter Datenverträge für Lambda-Funktionen.
Um eine Lambda-Funktion in der Konsole zu konfigurieren, wählen Sie Ihren Index und dann im Navigationsmenü die Option Document Enrichments aus. Gehen Sie zu Lambda-Funktionen konfigurieren, um eine Lambda-Funktion zu konfigurieren.
Sie können nur eine Lambda-Funktion für PreExtractionHookConfiguration
und nur eine Lambda-Funktion für konfigurieren. PostExtractionHookConfiguration
Ihre Lambda-Funktion kann jedoch andere Funktionen aufrufen, die sie benötigt. Sie können beide und/oder PreExtractionHookConfiguration
eines davon konfigurieren. PostExtractionHookConfiguration
Ihre Lambda-Funktion für PreExtractionHookConfiguration
darf eine Laufzeit von 5 Minuten nicht überschreiten und Ihre Lambda-Funktion für PostExtractionHookConfiguration
darf eine Laufzeit von 1 Minute nicht überschreiten. Die Konfiguration von Custom Document Enrichment dauert natürlich länger, bis Ihre Dokumente aufgenommen werden, Amazon Kendra als wenn Sie dies nicht konfigurieren würden.
Sie können so konfigurierenAmazon Kendra, dass eine Lambda-Funktion nur aufgerufen wird, wenn eine Bedingung erfüllt ist. Sie können beispielsweise eine Bedingung angeben, nach der bei leeren Datums- und Uhrzeitwerten eine Funktion aufgerufen werden Amazon Kendra soll, die die aktuelle Uhrzeit einfügt.
Im Folgenden finden Sie ein Beispiel für die Verwendung einer Lambda-Funktion zur Ausführung von OCR, um Text aus Bildern zu interpretieren und diesen Text in einem Feld namens 'Document_Image_Text' zu speichern.
Beispiel 1: Extrahieren von Text aus Bildern zur Erstellung von Textdokumenten
Daten, bevor die erweiterte Manipulation angewendet wurde.
Dokument-ID | Dokument_Bild |
---|---|
1 | image_1.png |
2 | image_2.png |
3 | image_3.png |
Daten nach Anwendung erweiterter Manipulationen.
Dokument-ID | Dokument_Bild | Dokument_Bild_Text |
---|---|---|
1 | image_1.png | Antwort auf die Umfrage per Post |
2 | image_2.png | Antwort auf die Umfrage per Post |
3 | image_3.png | Antwort auf die Umfrage per Post |
Im Folgenden finden Sie ein Beispiel für die Verwendung einer Lambda-Funktion zum Einfügen der aktuellen Datums- und Uhrzeitangabe für leere Datumswerte. Dabei wird die Bedingung verwendet, dass, wenn ein Datumsfeldwert 'Null' ist, dieser durch das aktuelle Datum und Uhrzeit ersetzt wird.
Beispiel 2: Ersetzen leerer Werte im Feld Last_Updated durch das aktuelle Datum und Uhrzeit.
Daten, bevor die erweiterte Manipulation angewendet wurde.
Dokument-ID | Haupttext_Text | Zuletzt aktualisiert |
---|---|---|
1 | Lorem Ipsum. | 1. Januar 2020 |
2 | Lorem Ipsum. | |
3 | Lorem Ipsum. | 1. Juli 2020 |
Daten nach Anwendung erweiterter Manipulationen.
Dokument-ID | Haupttext_Text | Zuletzt aktualisiert |
---|---|---|
1 | Lorem Ipsum. | 1. Januar 2020 |
2 | Lorem Ipsum. | 1. Dezember 2021 |
3 | Lorem Ipsum. | 1. Juli 2020 |
Der folgende Code ist ein Beispiel für die Konfiguration einer Lambda-Funktion für die erweiterte Datenmanipulation an den rohen Originaldaten.
Datenverträge für Lambda-Funktionen
Ihre Lambda-Funktionen für erweiterte Datenmanipulation interagieren mit Amazon Kendra Datenverträgen. Die Verträge sind die verbindlichen Anfrage- und Antwortstrukturen Ihrer Lambda-Funktionen. Wenn Ihre Lambda-Funktionen diesen Strukturen nicht folgen, wird ein Amazon Kendra Fehler ausgegeben.
Ihre Lambda-Funktion für PreExtractionHookConfiguration
sollte die folgende Anforderungsstruktur erwarten:
{ "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> }
Die metadata
Struktur, die die CustomDocumentAttribute
Struktur einschließt, sieht wie folgt aus:
{ "attributes": [<CustomDocumentAttribute<] } CustomDocumentAttribute { "name": <str>, "value": <CustomDocumentAttributeValue> } CustomDocumentAttributeValue { "stringValue": <str>, "integerValue": <int>, "longValue": <long>, "stringListValue": list<str>, "dateValue": <str> }
Ihre Lambda-Funktion für PreExtractionHookConfiguration
muss der folgenden Antwortstruktur entsprechen:
{ "version": <str>, "dataBlobStringEncodedInBase64": <str>, //In the case of a data blob "s3ObjectKey": <str>, //In the case of an S3 bucket "metadataUpdates": [<CustomDocumentAttribute>] }
Ihre Lambda-Funktion für PostExtractionHookConfiguration
sollte die folgende Anforderungsstruktur erwarten:
{ "version": <str>, "s3Bucket": <str>, "s3ObjectKey": <str>, "metadata": <Metadata> }
Ihre Lambda-Funktion für PostExtractionHookConfiguration
muss der folgenden Antwortstruktur entsprechen:
PostExtractionHookConfiguration Lambda Response { "version": <str>, "s3ObjectKey": <str>, "metadataUpdates": [<CustomDocumentAttribute>] }
Ihr geändertes Dokument wird in Ihren Amazon S3 Bucket hochgeladen. Das geänderte Dokument muss dem angegebenen Format entsprechenStrukturiertes Dokumentenformat.
Strukturiertes Dokumentenformat
Amazon Kendralädt Ihr strukturiertes Dokument in den angegebenen Amazon S3 Bucket hoch. Das strukturierte Dokument folgt diesem Format:
Kendra document { "textContent": <TextContent> } TextContent { "documentBodyText": <str> }
Beispiel für eine Lambda-Funktion, die Datenverträge einhält
Der folgende Python-Code ist ein Beispiel für eine Lambda-Funktion, die erweiterte Manipulationen der Metadatenfelder _authors
und des _document_title
Hauptinhalts auf die Rohdokumente oder Originaldokumente anwendet.
Im Fall, dass sich der Körperinhalt in einem Amazon S3 Eimer befindet
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"]}} ] }
Im Fall, dass sich der Textinhalt in einem Datenblob befindet
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"]}} ] }
Der folgende Python-Code ist ein Beispiel für eine Lambda-Funktion, die eine erweiterte Manipulation der Metadatenfelder _authors
und des _document_title
Textinhalts auf die strukturierten oder analysierten Dokumente anwendet.
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"]}} ] }