As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Recupere o conteúdo dos documentos da base de conhecimento
A GetDocumentContent API permite que você recupere o conteúdo de documentos que foram ingeridos em uma base de conhecimento da Amazon Bedrock. Essa API retorna um URL pré-assinado que fornece acesso temporário e seguro para baixar ou visualizar o conteúdo original ou extraído de um documento.
Isso é útil quando você quer:
Acesse o documento de origem referenciado em uma resposta
Retrieveda APIBaixe o arquivo original (PDF, Word, HTML etc.) de uma base de conhecimento
Recuperar o conteúdo de extracted/parsed texto de um documento no formato JSON
Crie aplicativos que permitem que os usuários visualizem ou baixem documentos de origem por trás das respostas
Retrieveda API
Como funciona
Você liga
GetDocumentContentcom a ID da base de conhecimento, a ID da fonte de dados e a ID do documento.O serviço valida suas permissões de acesso (incluindo quaisquer controles de ACL-based acesso configurados na base de conhecimento).
A API retorna um URL pré-assinado e o tipo MIME do documento.
Você usa o URL pré-assinado para baixar o conteúdo do documento. O URL expira após 5 minutos.
Permissões do IAM
A chamada GetDocumentContent exige ações bedrock:GetDocumentContent do IAM bedrock:Retrieve e do IAM no recurso da base de conhecimento. Isso ocorre porque a API valida internamente o acesso em nível de recuperação antes de retornar o conteúdo do documento. Certifique-se de que sua política de IAM inclua as duas ações:
{ "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:region:account-id:knowledge-base/kb-id" }
Exemplos de uso
Mesma conta com a ACL ativada
Quando sua base de conhecimento tiver o controle de ACL-based acesso ativado, passe userContext com a identidade do usuário para garantir verificações de permissão no nível do 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)
Mesma conta sem ACL habilitada
Quando as ACLs não estiverem 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 sem ACL habilitado
Para acesso entre contas, o proprietário da base de conhecimento deve anexar uma política de recursos à sua base de conhecimento que conceda permissão à conta do chamador. Em seguida, o chamador usa o ARN completo da base de conhecimento.
Etapa 1: o proprietário do KB anexa uma política de recursos à base de conhecimento
A conta proprietária da base de conhecimento (por exemplo,999999999999) deve anexar uma política de recursos que conceda à conta do chamador (por exemplo,111111111111) acesso:
{ "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" } ] }
Isso é feito por meio da PutKnowledgeBaseResourcePolicy API ou do console Amazon Bedrock.
Etapa 2: A conta do chamador tem permissões do IAM para invocar a API
O IAM do chamador role/user (na conta111111111111) precisa de uma política de IAM que permita as ações no KB ARN de várias contas:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:us-east-1:999999999999:knowledge-base/KBID1234567" } ] }
Etapa 3: chame a API usando o 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)
Tanto a política de recursos (no lado do proprietário do KB) quanto a política do IAM (no lado do chamador) devem estar em vigor. O acesso é negado se algum deles estiver ausente.