View a markdown version of this page

Recupere el contenido de los documentos de la base de conocimientos - Amazon Bedrock

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Recupere el contenido de los documentos de la base de conocimientos

La GetDocumentContent API le permite recuperar el contenido de los documentos que se han incorporado a una base de conocimientos de Amazon Bedrock. Esta API devuelve una URL prefirmada que proporciona acceso temporal y seguro para descargar o ver el contenido original o extraído de un documento.

Esto es útil cuando quieres:

  • Acceder al documento fuente al que se hace referencia en una respuesta Retrieve de la API

  • Descargue el archivo original (PDF, Word, HTML, etc.) de una base de conocimientos

  • Recupera el contenido extracted/parsed textual de un documento en formato JSON

  • Cree aplicaciones que permitan a los usuarios ver o descargar los documentos fuente detrás de las respuestas de la Retrieve API

Funcionamiento

  1. Llama GetDocumentContent con el ID de la base de conocimientos, el ID de la fuente de datos y el ID del documento.

  2. El servicio valida tus permisos de acceso (incluidos los controles de ACL-based acceso configurados en la base de conocimientos).

  3. La API devuelve una URL prefirmada y el tipo de MIME del documento.

  4. Utiliza la URL prefirmada para descargar el contenido del documento. La URL caduca a los 5 minutos.

Permisos de IAM

Las llamadas GetDocumentContent requieren acciones bedrock:Retrieve tanto de bedrock:GetDocumentContent IAM como de IAM en el recurso de la base de conocimientos. Esto se debe a que la API valida internamente el acceso a nivel de recuperación antes de devolver el contenido del documento. Asegúrese de que su política de IAM incluya ambas acciones:

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

Ejemplos de uso

La misma cuenta con la ACL habilitada

Cuando su base de conocimientos tenga activado el control de ACL-based acceso, introduzca userContext la identidad del usuario para comprobar los permisos a nivel de 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)

La misma cuenta sin la ACL habilitada

Cuando las ACL no estén configuradas, userContext omita:

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 sin ACL habilitada

Para el acceso entre cuentas, el propietario de la base de conocimientos debe adjuntar una política de recursos a su base de conocimientos que conceda permiso a la cuenta de la persona que llama. A continuación, la persona que llama utiliza el ARN completo de la base de conocimientos.

Paso 1: el propietario de la KB adjunta una política de recursos a la base de conocimientos

La cuenta propietaria de la base de conocimientos (por ejemplo999999999999) debe adjuntar una política de recursos que conceda acceso a la cuenta de la persona que llama (por ejemplo111111111111):

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

Esto se hace a través de la PutKnowledgeBaseResourcePolicy API o de la consola de Amazon Bedrock.

Paso 2: La cuenta de la persona que llama tiene permisos de IAM para invocar la API

El IAM de la persona que llama role/user (en la cuenta111111111111) necesita una política de IAM que permita realizar las acciones en el KB ARN multicuenta:

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

Paso 3: Llama a la API con el KB ARN 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)

Deben existir tanto la política de recursos (del lado del propietario de la KB) como la política de IAM (del lado de la persona que llama). Se deniega el acceso si falta alguna de ellas.