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.

Ciò è utile quando desideri:

  • Accedere al documento di origine 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 dietro le risposte API Retrieve

Come funziona

  1. Si chiama 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 bedrock:Retrieve sia 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 la tua knowledge base ha il controllo degli ACL-based accessi abilitato, inserisci userContext l'identità dell'utente per garantire i controlli 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 con più account, il proprietario della knowledge base deve allegare alla propria knowledge base una politica relativa alle risorse che conceda l'autorizzazione all'account del chiamante. Quindi il chiamante utilizza l'ARN della knowledge base completa.

Fase 1: Il proprietario del KB allega una policy sulle risorse alla knowledge base

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

{ "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 (nell'account111111111111) del chiamante necessita di una policy IAM che consenta le azioni sul KB ARN multiaccount:

{ "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 presenti sia la policy sulle risorse (lato proprietario della KB) che la policy IAM (lato chiamante). L'accesso è negato se manca una delle due.

Recupera le risposte per le basi di conoscenza multimodali native

Quando la knowledge base utilizza un modello di incorporamento multimodale nativo, la Retrieve risposta restituisce metadati che è possibile utilizzare per individuare l'immagine corrispondente o il segmento specifico di un file audio o video. Per ulteriori informazioni sull'elaborazione multimodale nativa, vedere. Elaborazione multimodale nativa

Nota

Si consiglia di recuperare il contenuto multimodale chiamando GetDocumentContent con il valore documentId restituito nella Retrieve risposta, come mostrato negli esempi precedenti. Il content campo nella Retrieve risposta fornisce un ulteriore modo per accedere alle informazioni sull'immagine, sull'audio o sul video.

Campi di metadati multimodali

I risultati di una knowledge base multimodale nativa includono i seguenti campi di metadati:

  • _file_type— La modalità del contenuto sorgente da cui è stato generato il blocco. Il valore èAUDIO,VIDEO, o. IMAGE Puoi filtrare questo campo per restituire risultati solo da una modalità specifica. Per ulteriori informazioni sul filtro, consulta Filtro manuale dei metadati.

  • _media_start_time_mse_media_end_time_ms: per i blocchi audio e video, le ore di inizio e di fine, in millisecondi, del segmento del file rappresentato dal blocco.

Risultati dell'immagine

Per i risultati delle immagini, la Retrieve risposta restituisce l'immagine nel byteContent campo come URI di dati con codifica base64, con un valore di: type IMAGE

"retrievalResults": [ { "content": { "byteContent": "data:image/png;base64,<base64-encoded-bytes>", "type": "IMAGE" } } ]

Risultati audio e video

Per i risultati audio e video, la Retrieve risposta restituisce un URI Amazon S3 che puoi utilizzare per recuperare il file. typeÈ AUDIO or e VIDEO l'URI si trova nell'oggetto audio or video corrispondente.

L'esempio seguente mostra un risultato audio:

"retrievalResults": [ { "content": { "audio": { "s3Uri": "s3://amzn-s3-demo-bucket/path/to/audio.mp3" }, "type": "AUDIO" } } ]

L'esempio seguente mostra un risultato video:

"retrievalResults": [ { "content": { "type": "VIDEO", "video": { "s3Uri": "s3://amzn-s3-demo-bucket/path/to/video.mp4" } } } ]