View a markdown version of this page

Recupera il contenuto dei documenti dalla knowledge base - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Recupera il contenuto dei documenti dalla knowledge base

L'GetDocumentContentAPI consente di recuperare il contenuto dei documenti che sono stati inseriti in una Knowledge Base di Amazon Bedrock. Questa API restituisce un URL prefirmato che fornisce un accesso temporaneo e sicuro per scaricare o visualizzare il contenuto originale o estratto di un documento.

Questa funzionalità è utile quando si desidera:

  • Accedere al documento sorgente a cui si fa riferimento in una risposta Retrieve API

  • Scarica il file originale (PDF, Word, HTML, ecc.) da una knowledge base

  • Recupera il contenuto extracted/parsed testuale di un documento in formato JSON

  • Crea applicazioni che consentano agli utenti di visualizzare o scaricare i documenti sorgente protetti dalle risposte delle API Retrieve

Come funziona

  1. Chiamate GetDocumentContent con l'ID della knowledge base, l'ID della fonte di dati e l'ID del documento.

  2. Il servizio convalida le autorizzazioni di accesso (inclusi eventuali controlli di ACL-based accesso configurati nella knowledge base).

  3. L'API restituisce un URL prefirmato e il tipo MIME del documento.

  4. L'URL prefirmato viene utilizzato per scaricare il contenuto del documento. L'URL scade dopo 5 minuti.

autorizzazioni IAM

GetDocumentContentLa chiamata richiede entrambe le azioni bedrock:Retrieve e le azioni bedrock:GetDocumentContent IAM sulla risorsa della knowledge base. Questo perché l'API convalida internamente l'accesso a livello di recupero prima di restituire il contenuto del documento. Assicurati che la tua policy IAM includa entrambe le azioni:

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

Esempi di utilizzo

Stesso account con ACL abilitato

Quando nella knowledge base è abilitato il controllo degli ACL-based accessi, inserisci l'identità dell'utente per garantire i controlli userContext delle autorizzazioni a livello di documento:

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)

Stesso account senza ACL abilitato

Quando gli ACL non sono configurati, ometti: 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 senza ACL abilitato

Per l'accesso da più account, il proprietario della knowledge base deve allegare alla propria knowledge base una politica delle risorse che conceda l'autorizzazione all'account del chiamante. Quindi il chiamante utilizza l'ARN della knowledge base completa.

Fase 1: il proprietario della KB allega una politica delle risorse alla knowledge base

L'account proprietario della knowledge base (ad esempio,999999999999) deve allegare una politica delle risorse che conceda all'account del chiamante (ad esempio,111111111111) l'accesso:

{ "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" } ] }

Questa operazione viene eseguita tramite l'PutKnowledgeBaseResourcePolicyAPI o tramite la console Amazon Bedrock.

Passaggio 2: l'account chiamante dispone delle autorizzazioni IAM per richiamare l'API

L'IAM role/user (in account111111111111) del chiamante necessita di una policy IAM che consenta le azioni sull'ARN KB tra account:

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

Passaggio 3: richiama l'API utilizzando l'ARN KB completo

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)

Devono essere valide sia la politica delle risorse (sul lato del proprietario della KB) che la politica IAM (sul lato del chiamante). L'accesso è negato se manca una delle due.