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

Die GetDocumentContent API ermöglicht es Ihnen, den Inhalt von Dokumenten abzurufen, die in eine Amazon Bedrock Knowledge Base aufgenommen wurden. Diese API gibt eine vorsignierte URL zurück, die temporären, sicheren Zugriff zum Herunterladen oder Anzeigen des ursprünglichen oder extrahierten Inhalts eines Dokuments bietet.

Das 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

  • Rufen Sie 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 Knowledge-Base-ID, der Datenquellen-ID und der Dokument-ID an.

  2. Der Service validiert 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 Inhalt des Dokuments herunterzuladen. Die URL läuft nach 5 Minuten ab.

IAM-Berechtigungen

Für das Aufrufen GetDocumentContent sind bedrock:Retrieve sowohl bedrock:GetDocumentContent IAM-Aktionen als auch IAM-Aktionen für die Wissensdatenbank-Ressource erforderlich. Dies liegt daran, dass die API den Zugriff auf Abrulebene intern 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 an, 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 hinzufügen, die dem Anrufer die Kontoberechtigung erteilt. Dann verwendet der Anrufer den vollständigen Knowledge-Base-ARN.

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 anhängen, 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 KB-Eigentümerseite) als auch die IAM-Richtlinie (auf der Anruferseite) müssen vorhanden sein. Der Zugriff wird verweigert, wenn einer der beiden fehlt.