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.
Ambil tanggapan untuk basis pengetahuan multimodal asli
Ketika basis pengetahuan Anda menggunakan model penyematan multimodal asli, Retrieve respons mengembalikan metadata yang dapat Anda gunakan untuk menemukan gambar yang cocok, atau segmen tertentu dari file audio atau video. Untuk informasi lebih lanjut tentang pemrosesan multimodal asli, lihatPemrosesan multimodal asli.
catatan
Kami menyarankan Anda mengambil konten multimodal GetDocumentContent dengan memanggil dengan yang documentId dikembalikan dalam Retrieve respons, seperti yang ditunjukkan pada contoh sebelumnya. Bid content ang dalam Retrieve respons menyediakan cara tambahan untuk mengakses informasi gambar, audio, atau video.
Bidang metadata multimodal
Hasil dari basis pengetahuan multimodal asli mencakup bidang metadata berikut:
-
_file_type— Modalitas konten sumber tempat potongan itu dihasilkan. Nilainya adalahAUDIO,VIDEO, atauIMAGE. Anda dapat memfilter bidang ini untuk mengembalikan hasil hanya dari modalitas tertentu. Untuk informasi selengkapnya tentang pemfilteran, lihat Pemfilteran metadata manual. -
_media_start_time_msdan_media_end_time_ms— Untuk potongan audio dan video, waktu mulai dan akhir, dalam milidetik, dari segmen file yang diwakili oleh potongan tersebut.
Hasil gambar
Untuk hasil gambar, Retrieve respons mengembalikan gambar di byteContent bidang sebagai URI data yang dikodekan base64, dengan: type IMAGE
"retrievalResults": [ { "content": { "byteContent": "data:image/png;base64,<base64-encoded-bytes>", "type": "IMAGE" } } ]
Hasil audio dan video
Untuk hasil audio dan video, Retrieve respons mengembalikan URI Amazon S3 yang dapat Anda gunakan untuk mengambil file. Adal type ah AUDIO atauVIDEO, dan URI ada di video objek audio atau yang sesuai.
Contoh berikut menunjukkan hasil audio:
"retrievalResults": [ { "content": { "audio": { "s3Uri": "s3://amzn-s3-demo-bucket/path/to/audio.mp3" }, "type": "AUDIO" } } ]
Contoh berikut menunjukkan hasil video:
"retrievalResults": [ { "content": { "type": "VIDEO", "video": { "s3Uri": "s3://amzn-s3-demo-bucket/path/to/video.mp4" } } } ]