View a markdown version of this page

Récupérez le contenu des documents depuis la base de connaissances - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Récupérez le contenu des documents depuis la base de connaissances

L'GetDocumentContentAPI vous permet de récupérer le contenu des documents qui ont été ingérés dans une base de connaissances Amazon Bedrock. Cette API renvoie une URL pré-signée qui fournit un accès temporaire et sécurisé pour télécharger ou consulter le contenu original ou extrait d'un document.

Ceci est utile lorsque vous souhaitez :

  • Accédez au document source référencé dans une réponse d'RetrieveAPI

  • Téléchargez le fichier original (PDF, Word, HTML, etc.) depuis une base de connaissances

  • Récupérer le contenu extracted/parsed textuel d'un document au format JSON

  • Créez des applications qui permettent aux utilisateurs de visualiser ou de télécharger des documents sources à l'aide de réponses Retrieve d'API

Comment ça marche

  1. Vous appelez GetDocumentContent avec l'ID de la base de connaissances, l'ID de la source de données et l'ID du document.

  2. Le service valide vos autorisations d'accès (y compris les contrôles d' ACL-based accès configurés dans la base de connaissances).

  3. L'API renvoie une URL pré-signée et le type MIME du document.

  4. Vous utilisez l'URL pré-signée pour télécharger le contenu du document. L'URL expire au bout de 5 minutes.

Autorisations IAM

L'appel GetDocumentContent nécessite à la fois bedrock:Retrieve des actions et des actions bedrock:GetDocumentContent IAM sur la ressource de la base de connaissances. En effet, l'API valide en interne l'accès au niveau de la récupération avant de renvoyer le contenu du document. Assurez-vous que votre politique IAM inclut les deux actions suivantes :

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

Exemples d’utilisation

Même compte avec ACL activée

Lorsque le contrôle d' ACL-based accès est activé dans votre base de connaissances, indiquez userContext l'identité de l'utilisateur pour vérifier les autorisations au niveau du document :

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)

Même compte sans ACL activée

Lorsque les ACL ne sont pas configurées, userContext omettez :

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 sans ACL activée

Pour accéder à plusieurs comptes, le propriétaire de la base de connaissances doit associer à sa base de connaissances une politique de ressources qui autorise le compte de l'appelant. L'appelant utilise ensuite l'ARN complet de la base de connaissances.

Étape 1 : le propriétaire de la base de connaissances associe une politique de ressources à la base de connaissances

Le compte propriétaire de la base de connaissances (par exemple999999999999) doit joindre une politique de ressources accordant au compte de l'appelant (par exemple111111111111) l'accès :

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

Cela se fait via l'PutKnowledgeBaseResourcePolicyAPI ou via la console Amazon Bedrock.

Étape 2 : le compte de l'appelant dispose des autorisations IAM pour invoquer l'API

L'IAM de l'appelant role/user (dans le compte111111111111) a besoin d'une politique IAM autorisant les actions sur l'ARN KB intercomptes :

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

Étape 3 : appelez l'API à l'aide de l'ARN KB complet

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)

La politique de ressources (du côté du propriétaire de la base de connaissances) et la politique IAM (du côté de l'appelant) doivent être en place. L'accès est refusé si l'un des deux est absent.

Récupérez les réponses pour les bases de connaissances multimodales natives

Lorsque votre base de connaissances utilise un modèle d'intégration multimodal natif, la Retrieve réponse renvoie des métadonnées que vous pouvez utiliser pour localiser l'image correspondante ou le segment spécifique d'un fichier audio ou vidéo. Pour plus d'informations sur le traitement multimodal natif, consultezTraitement multimodal natif.

Note

Nous vous recommandons de récupérer le contenu multimodal en appelant GetDocumentContent avec le documentId renvoyé dans la Retrieve réponse, comme indiqué dans les exemples précédents. Le content champ de la Retrieve réponse fournit un moyen supplémentaire d'accéder aux informations relatives à l'image, au son ou à la vidéo.

Champs de métadonnées multimodaux

Les résultats d'une base de connaissances multimodale native incluent les champs de métadonnées suivants :

  • _file_type— Modalité du contenu source à partir duquel le morceau a été généré. La valeur est AUDIOVIDEO, ouIMAGE. Vous pouvez filtrer sur ce champ pour renvoyer les résultats d'une modalité spécifique uniquement. Pour plus d’informations sur le filtrage, veuillez consulter la rubrique Filtrage manuel des métadonnées.

  • _media_start_time_mset _media_end_time_ms — Pour les segments audio et vidéo, les heures de début et de fin, en millisecondes, du segment du fichier que le bloc représente.

Résultats de l'image

Pour les résultats d'image, la Retrieve réponse renvoie l'image du byteContent champ sous la forme d'un URI de données codé en base64, avec l'une type des valeurs suivantes : IMAGE

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

Résultats audio et vidéo

Pour les résultats audio et vidéo, la Retrieve réponse renvoie un URI Amazon S3 que vous pouvez utiliser pour récupérer le fichier. Le type est AUDIO ouVIDEO, et l'URI se trouve dans l'videoobjet audio ou correspondant.

L'exemple suivant montre un résultat audio :

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

L'exemple suivant montre le résultat d'une vidéo :

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