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.
Anreicherung Ihrer Dokumente während der Aufnahme
Anmerkung
Die Funktionsunterstützung variiert je nach Indextyp und API verwendeter Suche. Informationen darüber, ob diese Funktion für den von Ihnen verwendeten Indextyp und die von API Ihnen verwendete Suche unterstützt wird, finden Sie unter Indextypen.
Sie können die Felder oder Attribute Ihrer Inhalts- und Dokumentmetadaten während der Dokumentaufnahme ändern. Mit Amazon Kendra der Funktion zur benutzerdefinierten Dokumentenanreicherung können Sie Dokumentattribute und -inhalte erstellen, ändern oder löschen, wenn Sie Ihre Dokumente 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 werden. Amazon Kendra So können Sie beispielsweise persönlich identifizierbare Informationen aus den Metadaten des Dokuments löschen, 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 Optical Character Recognition (OCR) für Bilder, Übersetzungen für Text und andere Aufgaben zur Vorbereitung der Daten für die Suche oder Analyse auszuführen. Sie können beispielsweise eine Funktion aufrufen, die auf Bildern ausgeführt wirdOCR. 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 suchen. Amazon 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 Dokumentmetadatenfeld 'Customer_ID' zu entfernen und dann eine Lambda-Funktion anzuwenden, um Text aus Bildern des Textes in den Dokumenten zu extrahieren.
So funktioniert die benutzerdefinierte Dokumentenanreicherung
Der Gesamtprozess der benutzerdefinierten Dokumentenanreicherung sieht wie folgt aus:
-
Sie konfigurieren die benutzerdefinierte Dokumentenanreicherung, wenn Sie Ihre Datenquelle erstellen oder aktualisieren oder Ihre Dokumente direkt indizieren. Amazon Kendra
-
Amazon Kendra wendet 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 für die Konfiguration der erweiterten Datenmanipulation entscheiden, Amazon Kendra können Sie diese 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 in diesem Prozess nicht gültig ist, wird ein Amazon Kendra Fehler ausgegeben.
Wenn Sie, oder BatchPutDocumentAPIsaufrufen CreateDataSourceUpdateDataSource, geben Sie Ihre Custom Document Enrichment-Konfiguration an. Wenn Sie anrufenBatchPutDocument
, müssen Sie bei jeder Anfrage Custom Document Enrichment 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 Basisoperationen oder nur Lambda-Funktionen oder beides konfigurieren möchten, wie Sie das verwenden können. API Sie können in den Konsolenschritten Weiter auswählen, um festzulegen, dass keine grundlegenden Operationen und nur Lambda-Funktionen konfiguriert werden sollen, einschließlich der Frage, ob sie auf die Originaldaten (vor der Extraktion) oder auf die strukturierten 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 ausführen.
Grundlegende Operationen zum Ändern von Metadaten
Sie können Ihre Dokumentfelder und Inhalte mithilfe grundlegender Logik bearbeiten. 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. Für fortgeschrittene Manipulationen, die über das hinausgehen, was Sie mit grundlegender Logik manipulieren können, rufen Sie 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 Objekts manipulieren möchten. DocumentAttributeTarget Sie geben den Attributschlüssel an. Der Schlüssel „Abteilung“ ist beispielsweise ein Feld oder ein Attribut, das alle Abteilungsnamen enthält, die mit den Dokumenten verknüpft 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 „Quelle_URI“ beispielsweise den URI Wert „Finanzen“ enthält, füllen Sie das Zielfeld „Abteilung“ 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 aus und wählen Sie dann im Navigationsmenü die Option Dokumentanreicherungen aus. Gehen Sie zu Grundoperationen konfigurieren, um grundlegende Änderungen auf Ihre Dokumentfelder und Inhalte anzuwenden.
Im Folgenden finden Sie ein Beispiel dafür, wie mithilfe von Basislogik alle Kundenidentifikationsnummern aus dem Dokumentfeld „Customer_ID“ entfernt werden.
Beispiel 1: Entfernen von Kundenidentifikationsnummern, die den Dokumenten zugeordnet sind
Daten vor der grundlegenden Manipulation angewendet.
Dokument-ID | Haupttext | Kunden_ID |
---|---|---|
1 | Lorem Ipsum. | CID1234 |
2 | Lorem Ipsum. | CID1235 |
3 | Lorem Ipsum. | CID1236 |
Daten wurden nach der grundlegenden Manipulation angewendet.
Dokument-ID | Haupttext | Kunden_ID |
---|---|---|
1 | Lorem Ipsum. | |
2 | Lorem Ipsum. | |
3 | Lorem Ipsum. |
Im Folgenden finden Sie ein Beispiel für die Erstellung eines Felds mit dem Namen „Abteilung“ mithilfe von Basislogik. Dieses Feld wird anhand der Informationen aus dem Feld „URIQuelle_“ automatisch mit den Namen der Abteilungen gefüllt. Dabei wird die Bedingung verwendet, dass, wenn das Feld „Quelle_URI“ den URI Wert „Finanzen“ enthält, das Zielfeld „Abteilung“ mit dem Zielwert „Finanzen“ für das Dokument vorab gefüllt wird.
Beispiel 2: Erstellen Sie das Feld „Abteilung“ und füllen Sie es vorab mit den Abteilungsnamen aus, die mit den Dokumenten verknüpft sind, wobei eine Bedingung verwendet wird.
Daten vor der grundlegenden Bearbeitung angewendet.
Dokument-ID | Haupttext | Quelle_ URI |
---|---|---|
1 | Lorem Ipsum. | finanzierlich/1 |
2 | Lorem Ipsum. | finanzierlich/2 |
3 | Lorem Ipsum. | finanziell/3 |
Daten wurden nach der grundlegenden Manipulation angewendet.
Dokument-ID | Haupttext | Quelle_ URI | Abteilung |
---|---|---|---|
1 | Lorem Ipsum. | finanzierlich/1 | Finanzen |
2 | Lorem Ipsum. | finanzierlich/2 | Finanzen |
3 | Lorem Ipsum. | finanziell/3 | Finanzen |
Anmerkung
Amazon Kendra kann kein Zieldokumentfeld erstellen, wenn es nicht bereits als Indexfeld erstellt wurde. Nachdem Sie Ihr Indexfeld erstellt haben, können Sie mithilfe von ein Dokumentfeld erstellenDocumentAttributeTarget
. Amazon Kendra ordnet dann Ihr neu erstelltes Dokument-Metadatenfeld Ihrem Indexfeld zu.
Der folgende Code ist ein Beispiel für die Konfiguration grundlegender Datenmanipulationen, um Kundenidentifikationsnummern zu entfernen, die den Dokumenten zugeordnet sind.
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 dort ein, wo 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 Kendra kann eine Lambda-Funktion aufrufen, um erweiterte Datenmanipulationen während des Aufnahmeprozesses als Teil Ihres anzuwenden. 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 IAM zu speichern — siehe Zugriffsrollen.
Amazon Kendra kann 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 anwendet. PreExtractionHookConfiguration Sie können auch eine Lambda-Funktion konfigurieren, die Ihre strukturierten Dokumente verwendet und Ihre Datenmanipulationen mithilfe von anwendet. PostExtractionHookConfiguration Amazon Kendra extrahiert die Metadaten und den Text des Dokuments, um Ihre Dokumente zu strukturieren. Ihre Lambda-Funktionen müssen den obligatorischen Anforderungs- 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 Dokumentenanreicherungen aus. Gehen Sie zu Lambda-Funktionen konfigurieren, um eine Lambda-Funktion zu konfigurieren.
Sie können nur eine Lambda-Funktion für PreExtractionHookConfiguration
und 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 PreExtractionHookConfiguration
und PostExtractionHookConfiguration
oder eine von beiden konfigurieren. 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 naturgemäß länger, bis Ihre Dokumente aufgenommen werden, Amazon Kendra als wenn Sie dies nicht konfigurieren würden.
Sie können so konfigurieren Amazon Kendra , dass eine Lambda-Funktion nur aufgerufen wird, wenn eine Bedingung erfüllt ist. Sie können beispielsweise eine Bedingung angeben, die besagt, dass, wenn leere Datums-/Uhrzeitwerte vorhanden sind, eine Funktion aufgerufen werden Amazon Kendra soll, die die aktuelle Datums-/Uhrzeitangabe einfügt.
Im Folgenden finden Sie ein Beispiel für die Verwendung einer Lambda-Funktion, die ausgeführt wird, um Text aus Bildern OCR zu interpretieren und diesen Text in einem Feld namens „Document_Image_Text“ zu speichern.
Beispiel 1: Extrahieren von Text aus Bildern, um Textdokumente zu erstellen
Daten vor der fortgeschrittenen Bearbeitung wurden angewendet.
Dokument-ID | Dokument_Bild |
---|---|
1 | image_1.png |
2 | image_2.png |
3 | image_3.png |
Daten wurden nach fortgeschrittener Manipulation angewendet.
Dokument-ID | Dokument_Bild | Dokument_Bild_Text |
---|---|---|
1 | image_1.png | Antwort auf die Umfrage per Post gesendet |
2 | image_2.png | Antwort auf die Umfrage per Post gesendet |
3 | image_3.png | Antwort auf die Umfrage per Post gesendet |
Im Folgenden finden Sie ein Beispiel für die Verwendung einer Lambda-Funktion zum Einfügen der aktuellen Datums-/Uhrzeitangabe für leere Datumswerte. Dabei wird die Bedingung verwendet, dass, wenn ein Datumsfeldwert 'Null' ist, dieser Wert durch die aktuelle Datums-/Uhrzeitangabe ersetzt wird.
Beispiel 2: Ersetzen leerer Werte im Feld Last_Updated durch das aktuelle Datum und die aktuelle Uhrzeit.
Daten vor der erweiterten Bearbeitung wurden angewendet.
Dokument-ID | Haupttext | Letztes_aktualisiert |
---|---|---|
1 | Lorem Ipsum. | 1. Januar 2020 |
2 | Lorem Ipsum. | |
3 | Lorem Ipsum. | 1. Juli 2020 |
Daten wurden nach fortgeschrittener Manipulation angewendet.
Dokument-ID | Haupttext | Letztes_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 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 obligatorischen Anforderungs- 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, zu der auch die CustomDocumentAttribute
Struktur gehört, 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 unter angegebenen Format entsprechenStrukturiertes Dokumentformat.
Strukturiertes Dokumentformat
Amazon Kendra lä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 Manipulation der Metadatenfelder und des _authors
_document_title
Hauptinhalts in den Roh- oder Originaldokumenten anwendet.
Im Fall, dass sich der Hauptinhalt in einem Bucket befindet Amazon S3
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 des Hauptinhalts, der sich 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 erweiterte Manipulation der Metadatenfelder und des _authors
_document_title
Textinhalts in den strukturierten oder geparsten Dokumenten 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"]}} ] }