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.
So verwenden Sie eine benutzerdefinierte Transformations-Lambda-Funktion, um zu bestimmen, wie Ihre Daten aufgenommen werden
Sie haben die Möglichkeit, eine benutzerdefinierte Transformations-Lambda-Funktion zu definieren, um Ihre eigene Logik in den Aufnahmeprozess der Wissensdatenbank einzubringen.
Möglicherweise verfügen Sie über eine spezifische Chunking-Logik, die von Wissensdatenbanken in Amazon Bedrock nicht nativ unterstützt wird. Verwenden Sie die Strategieoption „Kein Chunking“ und geben Sie gleichzeitig eine Lambda-Funktion an, die Ihre Chunking-Logik enthält. Darüber hinaus müssen Sie einen Amazon-S3-Bucket für die Wissensdatenbank angeben, um Dateien zu schreiben, die von Ihrer Lambda-Funktion in Blöcke aufgeteilt werden sollen.
Nach dem Chunking schreibt Ihre Lambda-Funktion die aufgeteilten Dateien in denselben Bucket zurück und gibt Referenzen für die Wissensdatenbank zur weiteren Verarbeitung zurück. Sie haben optional die Möglichkeit, Ihren eigenen AWS KMS-Schlüssel für die Verschlüsselung von Dateien bereitzustellen, die in Ihrem S3-Bucket gespeichert sind.
Anmerkung
Wenn Web-Connectors verwendet werden, wird anstelle von HTML ein Markdown-Text an Lambda übergeben.
Alternativ können Sie Metadaten auf Blockebene angeben, während die Wissensdatenbank eine der nativ unterstützten Chunking-Strategien anwendet. Wählen Sie in diesem Fall eine der vordefinierten Chunking-Strategien (z. B. Standard-Chunking oder Chunking mit fester Größe) aus und geben Sie gleichzeitig einen Verweis auf Ihre Lambda-Funktion und Ihren S3-Bucket an. In diesem Fall speichert die Wissensdatenbank geparste und vorab aufgeteilte Dateien im vordefinierten S3-Bucket, bevor Ihre Lambda-Funktion aufgerufen wird, um weitere Metadaten auf Blockebene hinzuzufügen.
Nach dem Hinzufügen von Metadaten auf Blockebene schreibt Ihre Lambda-Funktion aufgeteilte Dateien in denselben Bucket zurück und gibt Referenzen für die Wissensdatenbank zur weiteren Verarbeitung zurück. Bitte beachten Sie, dass Metadaten auf Blockebene Vorrang haben und Metadaten auf Dateiebene im Falle von Kollisionen überschreiben.
Ein Beispiel für die Verwendung einer Python-Lambda-Funktion für benutzerdefiniertes Chunking finden Sie unter Benutzerdefiniertes Chunking mit Lambda-Funktion
API- und Dateiverträge finden Sie in den folgenden Strukturen:
API-Vertrag beim Hinzufügen einer benutzerdefinierten Transformation mithilfe der Lambda-Funktion
{ ... "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" } ... } } }
Benutzerdefiniertes Eingabeformat für die Lambda-Transformation
{ "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" }] }] }
Benutzerdefiniertes Ausgabeformat für die Lambda-Transformation
{ "outputFiles": [{ "originalFileLocation": { "type": "S3", "s3_location": { "uri": "string" } }, "fileMetadata": { "key1": "value1", "key2": "value2" }, "contentBatches": [{ "key": "string" }] }] }
Dateiformat für Objekte, auf die in fileContents verwiesen wird
{ "fileContents": [{ "contentBody": "...", "contentType": "string", // enum of TEXT, PDF, ... "contentMetadata": { "key1": "value1", "key2": "value2" } } ... ] }