Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengambil isi dokumen dari basis pengetahuan
GetDocumentContentAPI memungkinkan Anda mengambil konten dokumen yang telah dicerna ke Basis Pengetahuan Amazon Bedrock. API ini mengembalikan URL yang telah ditandatangani sebelumnya yang menyediakan akses sementara dan aman untuk mengunduh atau melihat konten asli atau yang diekstrak dari dokumen.
Ini berguna ketika Anda ingin:
Akses dokumen sumber yang direferensikan dalam respons
RetrieveAPIUnduh file asli (PDF, Word, HTML, dll.) Dari basis pengetahuan
Mengambil konten extracted/parsed teks dokumen dalam format JSON
Membangun aplikasi yang memungkinkan pengguna melihat atau mengunduh dokumen sumber di balik tanggapan
RetrieveAPI
Cara kerjanya
Anda memang
GetDocumentContentgil dengan ID basis pengetahuan, ID sumber data, dan ID dokumen.Layanan memvalidasi izin akses Anda (termasuk kontrol ACL-based akses yang dikonfigurasi pada basis pengetahuan).
API mengembalikan URL yang telah ditandatangani sebelumnya dan jenis MIME dokumen.
Anda menggunakan URL yang telah ditandatangani sebelumnya untuk mengunduh konten dokumen. URL kedaluwarsa setelah 5 menit.
Izin IAM
Mem GetDocumentContent anggil membutuhkan keduanya bedrock:Retrieve dan tindakan bedrock:GetDocumentContent IAM pada sumber daya basis pengetahuan. Ini karena API secara internal memvalidasi akses tingkat pengambilan sebelum mengembalikan konten dokumen. Pastikan kebijakan IAM Anda mencakup kedua tindakan:
{ "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:region:account-id:knowledge-base/kb-id" }
Contoh penggunaan
Akun yang sama dengan ACL diaktifkan
Saat basis pengetahuan Anda ACL-based mengaktifkan kontrol akses, berikan userContext identitas pengguna untuk memastikan pemeriksaan izin tingkat dokumen:
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)
Akun yang sama tanpa ACL diaktifkan
Ketika ACL tidak dikonfigurasi, hilangkan: 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 tanpa ACL diaktifkan
Untuk akses lintas akun, pemilik basis pengetahuan harus melampirkan kebijakan sumber daya ke basis pengetahuan mereka yang memberikan izin akun pemanggil. Kemudian penelepon menggunakan basis pengetahuan lengkap ARN.
Langkah 1: Pemilik KB melampirkan kebijakan sumber daya ke basis pengetahuan
Akun yang memiliki basis pengetahuan (misalnya,999999999999) harus melampirkan kebijakan sumber daya yang memberikan akses akun pemanggil (misalnya,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" } ] }
Ini dilakukan melalui PutKnowledgeBaseResourcePolicy API atau melalui konsol Amazon Bedrock.
Langkah 2: Akun pemanggil memiliki izin IAM untuk memanggil API
IAM pemanggil role/user (dalam akun111111111111) memerlukan kebijakan IAM yang memungkinkan tindakan pada KB ARN lintas akun:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:us-east-1:999999999999:knowledge-base/KBID1234567" } ] }
Langkah 3: Panggil API menggunakan KB ARN lengkap
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)
Kebijakan sumber daya (di sisi pemilik KB) dan kebijakan IAM (di sisi penelepon) harus ada. Akses ditolak jika salah satunya hilang.