View a markdown version of this page

Rufen Sie den Inhalt von Dokumenten aus der Wissensdatenbank ab - Amazon Bedrock

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.

Rufen Sie den Inhalt von Dokumenten aus der Wissensdatenbank ab

Mit der GetDocumentContent API können Sie den Inhalt von Dokumenten abrufen, die in eine Amazon Bedrock Knowledge Base aufgenommen wurden. Diese API gibt eine vorsignierte URL zurück, die einen temporären, sicheren Zugriff zum Herunterladen oder Anzeigen des ursprünglichen oder des extrahierten Inhalts eines Dokuments bietet.

Dies ist nützlich, wenn Sie:

  • Greifen Sie auf das Quelldokument zu, auf das in einer Retrieve API-Antwort verwiesen wird

  • Laden Sie die Originaldatei (PDF, Word, HTML usw.) aus einer Wissensdatenbank herunter

  • Ruft den extracted/parsed Textinhalt eines Dokuments im JSON-Format ab

  • Erstellen Sie Anwendungen, mit denen Benutzer Quelldokumente hinter Retrieve API-Antworten anzeigen oder herunterladen können

Funktionsweise

  1. Sie rufen GetDocumentContent mit der Knowledgebase-ID, der Datenquellen-ID und der Dokument-ID an.

  2. Der Dienst überprüft Ihre Zugriffsberechtigungen (einschließlich aller in der Wissensdatenbank konfigurierten ACL-based Zugriffskontrollen).

  3. Die API gibt eine vorsignierte URL und den MIME-Typ des Dokuments zurück.

  4. Sie verwenden die vorsignierte URL, um den Dokumentinhalt herunterzuladen. Die URL läuft nach 5 Minuten ab.

IAM-Berechtigungen

Zum Aufrufen GetDocumentContent sind bedrock:Retrieve sowohl bedrock:GetDocumentContent IAM-Aktionen für die Wissensdatenbank-Ressource erforderlich. Dies liegt daran, dass die API intern den Zugriff auf Abrufebene validiert, bevor der Dokumentinhalt zurückgegeben wird. Stellen Sie sicher, dass Ihre IAM-Richtlinie beide Aktionen umfasst:

{ "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:region:account-id:knowledge-base/kb-id" }

Verwendungsbeispiele

Dasselbe Konto mit aktivierter ACL

Wenn in Ihrer Wissensdatenbank die ACL-based Zugriffskontrolle aktiviert ist, geben userContext Sie die Identität des Benutzers weiter, um sicherzustellen, dass die Berechtigungen auf Dokumentebene überprüft werden:

import boto3 import requests client = boto3.client('bedrock-agent-runtime') # Step 1: Retrieve relevant documents retrieve_response = client.retrieve( knowledgeBaseId='KBID1234567', retrievalQuery={'text': 'What is the refund policy?'} ) # Step 2: Get the full document content for the top result result = retrieve_response['retrievalResults'][0] doc_response = client.get_document_content( knowledgeBaseId='KBID1234567', dataSourceId=result['metadata']['_data_source_id'], documentId=result['documentId'], outputFormat='RAW', userContext={ 'userId': 'user-email', 'groups': [ {'id': 'group-engineering'}, {'id': 'group-project-alpha'} ] } ) # Step 3: Download the document download = requests.get(doc_response['presignedUrl']) with open('document.pdf', 'wb') as f: f.write(download.content)

Dasselbe Konto ohne aktivierte ACL

Wenn ACLs nicht konfiguriert sind, lassen Sie Folgendes weg: userContext

import boto3 import requests client = boto3.client('bedrock-agent-runtime') # Step 1: Retrieve relevant documents retrieve_response = client.retrieve( knowledgeBaseId='KBID1234567', retrievalQuery={'text': 'What is the refund policy?'} ) # Step 2: Get the full document content result = retrieve_response['retrievalResults'][0] doc_response = client.get_document_content( knowledgeBaseId='KBID1234567', dataSourceId=result['metadata']['_data_source_id'], documentId=result['documentId'], outputFormat='RAW' ) # Step 3: Download the document download = requests.get(doc_response['presignedUrl']) with open('document.pdf', 'wb') as f: f.write(download.content)

Cross-account ohne aktivierte ACL

Für den kontoübergreifenden Zugriff muss der Besitzer der Wissensdatenbank seiner Wissensdatenbank eine Ressourcenrichtlinie beifügen, die dem Anrufer die Kontoberechtigung erteilt. Dann verwendet der Anrufer den vollständigen ARN der Wissensdatenbank.

Schritt 1: Der KB-Besitzer fügt der Wissensdatenbank eine Ressourcenrichtlinie hinzu

Das Konto, dem die Wissensdatenbank gehört (z. B.999999999999), muss eine Ressourcenrichtlinie hinzufügen, die dem Anruferkonto (z. B.111111111111) Zugriff gewährt:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111111111111" }, "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:us-east-1:999999999999:knowledge-base/KBID1234567" } ] }

Dies erfolgt über die PutKnowledgeBaseResourcePolicy API oder über die Amazon Bedrock-Konsole.

Schritt 2: Das Anruferkonto verfügt über IAM-Berechtigungen zum Aufrufen der API

Das IAM role/user (im Konto111111111111) des Anrufers benötigt eine IAM-Richtlinie, die die Aktionen auf dem kontoübergreifenden KB-ARN zulässt:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:us-east-1:999999999999:knowledge-base/KBID1234567" } ] }

Schritt 3: Rufen Sie die API mit dem vollständigen KB-ARN auf

import boto3 import requests client = boto3.client('bedrock-agent-runtime') CROSS_ACCOUNT_KB_ARN = 'arn:aws:bedrock:us-east-1:999999999999:knowledge-base/KBID1234567' # Step 1: Retrieve relevant documents using the KB ARN retrieve_response = client.retrieve( knowledgeBaseId=CROSS_ACCOUNT_KB_ARN, retrievalQuery={'text': 'What is the refund policy?'} ) # Step 2: Get the full document content using the same ARN result = retrieve_response['retrievalResults'][0] doc_response = client.get_document_content( knowledgeBaseId=CROSS_ACCOUNT_KB_ARN, dataSourceId=result['metadata']['_data_source_id'], documentId=result['documentId'], outputFormat='RAW' ) # Step 3: Download the document download = requests.get(doc_response['presignedUrl']) with open('document.pdf', 'wb') as f: f.write(download.content)

Sowohl die Ressourcenrichtlinie (auf der Seite des KB-Besitzers) als auch die IAM-Richtlinie (auf der Seite des Aufrufers) müssen vorhanden sein. Der Zugriff wird verweigert, wenn eine der beiden Komponenten fehlt.