Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membangun aplikasi RAG menggunakan Amazon Bedrock Knowledge Bases
Banyak perusahaan mengumpulkan repositori besar dokumen pada berbagi file NFS dan SMB mereka - manual produk, dokumen kebijakan, kontrak, laporan penelitian, spesifikasi teknik, dan konten yang dibuat pengguna.
Dengan jalur akses Amazon S3 yang terpasang pada FSx untuk volume ONTAP, Pangkalan Pengetahuan Amazon Bedrock menyerap konten langsung dari volume. Foundation-model tanggapan didasarkan pada dokumen tempat tim Anda menyimpannya melalui NFS atau SMB. Konten yang diperbarui penulis pada bagian menjadi tersedia untuk basis pengetahuan pada sinkronisasi berikutnya.
Dalam tutorial ini, Anda mengunggah satu set kecil sampel PDF ke FSx Anda untuk volume ONTAP melalui jalur akses Amazon S3, membuat basis pengetahuan Amazon Bedrock yang mengarah ke titik akses, menelan dokumen, dan menjalankan pertanyaan melalui API. RetrieveAndGenerate
catatan
Tutorial ini membutuhkan waktu sekitar 35 hingga 45 menit untuk menyelesaikannya. Yang Layanan AWS digunakan dikenakan biaya untuk sumber daya yang Anda buat. Jika Anda menyelesaikan semua langkah, termasuk bagian Pembersihan segera, biaya yang diharapkan kurang dari $1 di AS Timur (Virginia Utara). Wilayah AWS Perkiraan ini tidak termasuk biaya yang sedang berlangsung untuk FSx untuk volume ONTAP itu sendiri.
Prasyarat
Sebelum Anda mulai, pastikan Anda memiliki yang berikut:
FSx untuk volume ONTAP dengan titik akses Amazon S3 terpasang. Jalur akses harus memiliki asal jaringan internet sehingga layanan Amazon Bedrock dapat mencapainya. Untuk petunjuk tentang cara membuat titik akses, lihatMembuat titik akses.
Akses model diaktifkan untuk model penyematan yang didukung oleh Pangkalan Pengetahuan Amazon Bedrock dan setidaknya satu model pembuatan teks (misalnya,
amazon.nova-lite-v1:0) di Wilayah AWS tempat Anda akan membuat basis pengetahuan. Tutorial ini menggunakanamazon.titan-embed-text-v2:0(1024 dimensi) sebagai model embedding; Cohere Embed model juga didukung. Jika Anda memilih model penyematan yang berbeda, sesuaikan dimensi indeks vektor di Langkah 2 agar sesuai dengan dimensi keluaran model. Akses model diaktifkan di konsol Amazon Bedrock di bawah akses Model. Untuk informasi selengkapnya, lihat Mengakses model foundation Amazon Bedrock di Panduan Pengguna Amazon Bedrock.AWS CLI versi 2 diinstal dan dikonfigurasi dengan kredensil yang dapat membuat peran IAM, sumber daya Vektor Amazon S3, dan Pangkalan Pengetahuan Amazon Bedrock.
Langkah 1: Unggah dokumen sampel ke titik akses
Unduh beberapa PDF publik untuk digunakan sebagai korpus sampel, lalu unggah ke titik akses Anda menggunakan alias jalur akses Amazon S3.
-
Buat direktori lokal dan unduh contoh PDF.
$mkdir -p ~/kb-pdfs && cd ~/kb-pdfs curl -sSL -o aws-overview.pdf https://d1.awsstatic.com/whitepapers/aws-overview.pdf curl -sSL -o wellarchitected-framework.pdf https://docs.aws.amazon.com/pdfs/wellarchitected/latest/framework/wellarchitected-framework.pdf curl -sSL -o s3-userguide.pdf https://docs.aws.amazon.com/pdfs/AmazonS3/latest/userguide/s3-userguide.pdf -
Unggah setiap file ke titik akses. Ganti
access-point-aliasdengan alias titik akses Anda (misalnya,my-kb-ap-a1b2c3d4e5f6g7h8i9j0kl1mnop2uuse1a-ext-s3alias). Anda dapat menemukan alias di konsol Amazon FSx di bawah titik akses Amazon S3 terlampir untuk volume Anda, atau dengan menjalankan.aws fsx describe-s3-access-point-attachments$for f in *.pdf; do aws s3 cp "$f" "s3://access-point-alias/$f" done -
Verifikasi file yang mendarat di volume.
$aws s3 ls s3://access-point-alias/
catatan
Amazon Bedrock Knowledge Bases memberlakukan ukuran file maksimum 50 MB per dokumen. File yang lebih besar dari 50 MB dilewati selama konsumsi.
Langkah 2: Buat toko vektor
Basis pengetahuan menyimpan penyematan dokumen di toko vektor. Pangkalan Pengetahuan Amazon Bedrock mendukung beberapa penyimpanan vektor; tutorial ini menggunakan Vektor Amazon S3 sebagai default karena dioptimalkan biaya untuk beban kerja RAG dan memerlukan penyiapan minimal. Amazon OpenSearch Serverless juga didukung; lihat bagian yang dapat dilipat di akhir langkah ini untuk petunjuk tersebut.
Untuk membuat penyimpanan vektor menggunakan konsol
Jika Anda menggunakan konsol untuk membuat basis pengetahuanLangkah 4: Buat basis pengetahuan dan sumber data, pilih Cepat buat penyimpanan vektor baru di langkah database Vektor, dan pilih Vektor Amazon S3 (disarankan) atau Amazon Tanpa Server. OpenSearch Amazon Bedrock membuat penyimpanan vektor dan semua konfigurasi yang diperlukan secara otomatis. Lewati ke Langkah 3: Buat peran IAM untuk basis pengetahuan.
Untuk membuat penyimpanan vektor Amazon S3 Vectors menggunakan AWS CLI
-
Buat bucket vektor Amazon S3. Nama bucket vektor mengikuti aturan keunikan global yang sama dengan bucket Amazon S3 standar. Tutorial ini menggunakan
fsxn-kb-vectors; ganti dengan nama yang unik.$aws s3vectors create-vector-bucket --vector-bucket-name fsxn-kb-vectors -
Buat indeks vektor di ember. Dimensi indeks harus sesuai dengan dimensi output dari model embedding; Titan Text Embeddings v2 menghasilkan 1024 dimensi.
nonFilterableMetadataKeysPengaturan menandai bidang metadata Bedrock sebagai tidak dapat difilter, yang menjauhkannya dari batas metadata yang dapat difilter per vektor 2 KB.$aws s3vectors create-index --vector-bucket-name fsxn-kb-vectors \ --index-name bedrock-kb-index \ --dimension 1024 --distance-metric cosine --data-type float32 \ --metadata-configuration '{"nonFilterableMetadataKeys":["AMAZON_BEDROCK_METADATA","AMAZON_BEDROCK_TEXT"]}'Perhatikan
indexArndalam respon; Anda menggunakannya diLangkah 4: Buat basis pengetahuan dan sumber data.
Jika Anda lebih suka OpenSearch Service Serverless (untuk kueri yang lebih tinggi per detik, fitur penelusuran lanjutan, atau keakraban operasional yang ada), gunakan langkah-langkah berikut alih-alih prosedur Vektor Amazon S3 di atas.
-
Buat enkripsi dan kebijakan keamanan jaringan untuk koleksi.
$aws opensearchserverless create-security-policy --name kb-enc --type encryption \ --policy '{"Rules":[{"ResourceType":"collection","Resource":["collection/fsxn-kb"]}],"AWSOwnedKey":true}' aws opensearchserverless create-security-policy --name kb-net --type network \ --policy '[{"Rules":[{"ResourceType":"collection","Resource":["collection/fsxn-kb"]},{"ResourceType":"dashboard","Resource":["collection/fsxn-kb"]}],"AllowFromPublic":true}]' -
Buat kebijakan akses data yang memberikan peran basis pengetahuan dan izin pengguna Anda saat ini untuk membaca dan menulis koleksi. Ganti
account-iddancurrent-userdengan nilai-nilai Anda.$aws opensearchserverless create-access-policy --name kb-data --type data --policy '[{ "Rules":[ {"ResourceType":"index","Resource":["index/fsxn-kb/*"],"Permission":["aoss:*"]}, {"ResourceType":"collection","Resource":["collection/fsxn-kb"],"Permission":["aoss:*"]} ], "Principal":[ "arn:aws:iam::account-id:role/fsxn-kb-role", "arn:aws:iam::account-id:user/current-user" ] }]' -
Buat koleksi dan tunggu sampai menjadi
ACTIVE.$aws opensearchserverless create-collection --name fsxn-kb --type VECTORSEARCH aws opensearchserverless batch-get-collection --names fsxn-kb \ --query 'collectionDetails[0].{status:status,endpoint:collectionEndpoint}' -
Buat indeks vektor pada koleksi menggunakan skrip Python dengan permintaan yang ditandatangani. Indeks harus menggunakan dimensi 1024 (untuk Titan Text Embeddings v2) dan nama bidang yang diharapkan oleh Amazon Bedrock Knowledge Bases. Untuk skrip lengkap dan langkah konfigurasi berikutnya, lihat Prasyarat untuk menggunakan OpenSearch Layanan Tanpa Server di Panduan Pengguna Amazon Bedrock. Gunakan ARN koleksi yang dihasilkan dan nama indeks di Langkah 4 dengan
storage-configurationtipe.OPENSEARCH_SERVERLESS
Langkah 3: Buat peran IAM untuk basis pengetahuan
Basis pengetahuan memerlukan peran IAM yang dapat diasumsikan untuk memanggil model penyematan, membaca objek melalui jalur akses Amazon S3, dan mengakses penyimpanan vektor. Kebijakan yang ditunjukkan di bawah ini memberikan akses ke penyimpanan vektor Vektor Amazon S3. Jika Anda menggunakan OpenSearch Service Serverless sebagai gantinya, ganti S3Vectors pernyataan dengan pernyataan yang memberikan aoss:APIAccessAll pada koleksi ARN.
Untuk membuat peran menggunakan konsol
Saat Anda membuat basis pengetahuan menggunakan konsol Amazon Bedrock diLangkah 4: Buat basis pengetahuan dan sumber data, pilih Buat dan gunakan peran layanan baru. Amazon Bedrock menciptakan peran dengan kepercayaan dan izin yang diperlukan, yang mencakup basis pengetahuan Anda, model penyematan, penyimpanan vektor, dan sumber data. Lewati ke Langkah 4: Buat basis pengetahuan dan sumber data.
-
Simpan kebijakan kepercayaan berikut sebagai
kb-trust-policy.json. Hal ini memungkinkan Amazon Bedrock untuk mengambil peran. Gantiaccount-iddengan Akun AWS ID Anda.{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "bedrock.amazonaws.com"}, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"aws:SourceAccount": "account-id"}} }] } -
Simpan kebijakan izin berikut sebagai
kb-permissions.json. Ini memberikan akses ke model embedding, jalur akses Amazon S3, dan penyimpanan vektor. Ganti placeholder dengan nilai Anda.{ "Version": "2012-10-17", "Statement": [ { "Sid": "FoundationModel", "Effect": "Allow", "Action": ["bedrock:InvokeModel"], "Resource": ["arn:aws:bedrock:region::foundation-model/amazon.titan-embed-text-v2:0"] }, { "Sid": "S3AccessPoint", "Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:region:account-id:accesspoint/access-point-name", "arn:aws:s3:region:account-id:accesspoint/access-point-name/object/*" ] }, { "Sid": "S3Vectors", "Effect": "Allow", "Action": [ "s3vectors:GetIndex", "s3vectors:PutVectors", "s3vectors:GetVectors", "s3vectors:ListVectors", "s3vectors:DeleteVectors", "s3vectors:QueryVectors" ], "Resource": [ "arn:aws:s3vectors:region:account-id:bucket/fsxn-kb-vectors", "arn:aws:s3vectors:region:account-id:bucket/fsxn-kb-vectors/index/*" ] } ] } -
Buat peran dan lampirkan kebijakan izin.
$aws iam create-role --role-name fsxn-kb-role \ --assume-role-policy-document file://kb-trust-policy.json aws iam put-role-policy --role-name fsxn-kb-role --policy-name kb-access \ --policy-document file://kb-permissions.json
Langkah 4: Buat basis pengetahuan dan sumber data
Sumber data menunjuk pada alias jalur akses Amazon S3 Anda. Amazon Bedrock Knowledge Bases menerima alias access point sebagai pengganti nama bucket.
Untuk membuat basis pengetahuan menggunakan konsol
-
Buka konsol Amazon Bedrock di https://console.aws.amazon.com/bedrock/
. -
Di panel navigasi kiri, pilih Basis pengetahuan, lalu pilih Buat basis pengetahuan.
-
Di bawah Detail dasar Pengetahuan, masukkan nama (misalnya,
fsxn-kb) dan deskripsi. -
Di bawah izin IAM, pilih Buat dan gunakan peran layanan baru.
-
Untuk Sumber data, pilih Amazon S3, lalu pilih Berikutnya.
-
Masukkan nama sumber data (misalnya,
fsxn-s3ap-source). -
Untuk URI S3, masukkan
s3://diikuti dengan alias titik akses Anda, misalnya.s3://my-kb-ap-a1b2c3d4e5f6g7h8i9j0kl1mnop2uuse1a-ext-s3aliasKonsol tidak membedakan antara nama bucket dan alias access point di bidang ini; alias access point diterima apa adanya. -
Pilih Berikutnya.
-
Di bawah model Embeddings, pilih Titan Text Embeddings v2.
-
Di bawah Database vektor, pilih Cepat buat penyimpanan vektor baru dan pilih Vektor Amazon S3. Pilih Berikutnya.
-
Tinjau konfigurasi dan pilih Buat basis pengetahuan. Basis pengetahuan dapat memakan waktu beberapa menit untuk dibuat.
Untuk membuat basis pengetahuan menggunakan AWS CLI
-
Buat basis pengetahuan. Ganti placeholder dengan nilai Anda.
indexArnIni adalah ARN dari indeks vektor Amazon S3 yang Anda buat di Langkah 2.$aws bedrock-agent create-knowledge-base --name fsxn-kb \ --role-arn arn:aws:iam::account-id:role/fsxn-kb-role \ --knowledge-base-configuration '{ "type":"VECTOR", "vectorKnowledgeBaseConfiguration":{ "embeddingModelArn":"arn:aws:bedrock:region::foundation-model/amazon.titan-embed-text-v2:0" } }' \ --storage-configuration '{ "type":"S3_VECTORS", "s3VectorsConfiguration":{ "indexArn":"index-arn" } }'Catat
knowledgeBaseIddalam respons. -
Buat sumber data. Lewati alias jalur akses Amazon S3 sebagai nama bucket di
bucketArnbidang, menggunakan formulir.arn:aws:s3:::access-point-alias$aws bedrock-agent create-data-source \ --knowledge-base-idknowledge-base-id\ --name fsxn-s3ap-source \ --data-source-configuration '{ "type":"S3", "s3Configuration":{"bucketArn":"arn:aws:s3:::access-point-alias"} }'Catat
dataSourceIddalam respons.
Langkah 5: Menelan dokumen
Jalankan tugas konsumsi untuk merayapi dokumen melalui titik akses, menghasilkan penyematan, dan mengindeksnya di penyimpanan vektor.
Untuk menjalankan konsumsi menggunakan konsol
-
Di konsol Amazon Bedrock, buka basis pengetahuan Anda.
-
Di bagian Sumber data, pilih sumber data Anda, lalu pilih Sinkronkan.
-
Tunggu status Sinkronisasi ditampilkan Siap.
Untuk menjalankan konsumsi menggunakan AWS CLI
-
Mulai pekerjaan menelan.
$aws bedrock-agent start-ingestion-job \ --knowledge-base-idknowledge-base-id\ --data-source-iddata-source-idCatat
ingestionJobIddalam respons. -
Polling pekerjaan sampai selesai.
$aws bedrock-agent get-ingestion-job \ --knowledge-base-idknowledge-base-id\ --data-source-iddata-source-id\ --ingestion-job-idingestion-job-idTransisi
statuslapangan dariIN_PROGRESSkeCOMPLETE.statisticsBidang menunjukkan berapa banyak dokumen yang dipindai dan diindeks.
Langkah 6: Kueri basis pengetahuan
Ajukan basis pengetahuan pertanyaan yang didasarkan pada dokumen yang dicerna. Tanggapan tersebut mencakup kutipan yang mereferensikan dokumen sumber melalui alias jalur akses Amazon S3.
Untuk kueri menggunakan konsol
-
Di konsol Amazon Bedrock, buka basis pengetahuan Anda.
-
Pilih Basis pengetahuan Uji.
-
Di bawah Menghasilkan tanggapan, pilih model pembuatan teks (misalnya, Nova Lite).
-
Masukkan pertanyaan seperti
What are the pillars of the AWS Well-Architected Framework?dan pilih Jalankan. Jawabannya ditampilkan dengan referensi kutipan yang menautkan ke dokumen sumber di jalur akses Amazon S3.
Untuk kueri menggunakan AWS CLI
Gunakan perintah retrieve-and-generate. Ganti placeholder dengan nilai Anda. modelArnHarus merujuk ke profil inferensi untuk model pembuatan teks yang dapat Anda akses.
$aws bedrock-agent-runtime retrieve-and-generate \ --input '{"text":"What are the pillars of the AWS Well-Architected Framework?"}' \ --retrieve-and-generate-configuration '{ "type":"KNOWLEDGE_BASE", "knowledgeBaseConfiguration":{ "knowledgeBaseId":"knowledge-base-id", "modelArn":"arn:aws:bedrock:region:account-id:inference-profile/us.amazon.nova-lite-v1:0" } }'
Respons berisi jawaban yang dihasilkan output.text dan daftar kutipan dalam citations array. Setiap kutipan mencakup s3Location.uri bidang yang menunjuk ke dokumen sumber melalui alias titik akses, dalam formulir. s3://access-point-alias/file.pdf
Pemecahan masalah
- File laporan pekerjaan menelan diabaikan
Amazon Bedrock Knowledge Bases memberlakukan ukuran file maksimum 50 MB per dokumen. File yang lebih besar dari 50 MB terdaftar
failureReasonsdan dilewati. Pisahkan atau kompres dokumen besar sebelum mengunggah.ValidationException: model ditandai sebagai LegacyModel pembuatan teks yang Anda tentukan tidak digunakan lagi untuk akun Anda. Pilih profil inferensi aktif, seperti
us.amazon.nova-lite-v1:0atau model lain yang saat ini didukung. Jalankanaws bedrock list-inference-profileske daftar profil yang tersedia.AccessDeniedExceptionselama konsumsiVerifikasi bahwa peran IAM basis pengetahuan memiliki
s3:GetObjectdans3:ListBucketpada titik akses ARN (bukan pada volume yang mendasarinya) dan bahwa titik akses memiliki asal jaringan internet sehingga layanan Amazon Bedrock dapat mencapainya. Jika Anda memilih alternatif OpenSearch Service Serverless di Langkah 2, pastikan juga bahwa kebijakan akses data mencantumkan peran sebagai prinsipal.- Pekerjaan penyerapan berhasil tetapi kueri tidak mengembalikan bagian yang relevan
Konfirmasikan bahwa indeks vektor dibuat dengan
dimension: 1024(untuk Titan Text Embeddings v2) dan bahwa nama bidang dalam pemetaan indeks cocok dengan nama bidang yang dikonfigurasi pada basis pengetahuan.
Bersihkan
Untuk menghindari tagihan yang sedang berlangsung, hapus sumber daya yang Anda buat:
Basis pengetahuan Amazon Bedrock dan sumber data
Indeks vektor Amazon S3 dan bucket vektor (atau koleksi OpenSearch Service Serverless, jika Anda menggunakan alternatif di Langkah 2)
Peran IAM dan kebijakan inline
Objek yang diunggah ke titik akses (jika tidak diperlukan lagi)
$aws bedrock-agent delete-data-source --knowledge-base-idknowledge-base-id--data-source-iddata-source-idaws bedrock-agent delete-knowledge-base --knowledge-base-idknowledge-base-idaws s3vectors delete-index --vector-bucket-name fsxn-kb-vectors --index-name bedrock-kb-index aws s3vectors delete-vector-bucket --vector-bucket-name fsxn-kb-vectors aws iam delete-role-policy --role-name fsxn-kb-role --policy-name kb-access aws iam delete-role --role-name fsxn-kb-role
Jika Anda memilih alternatif OpenSearch Service Serverless di Langkah 2, ganti s3vectors perintah di atas dengan yang berikut ini. Idle OpenSearch Service Serverless koleksi dikenakan OCU-hour biaya, jadi hapus segera setelah Anda selesai dengan tutorial.
$# Get the collection ID (required by delete-collection; the name is not accepted) COLLECTION_ID=$(aws opensearchserverless batch-get-collection --names fsxn-kb \ --query 'collectionDetails[0].id' --output text) # Delete the collection, then the policies aws opensearchserverless delete-collection --id "$COLLECTION_ID" aws opensearchserverless delete-access-policy --name kb-data --type data aws opensearchserverless delete-security-policy --name kb-net --type network aws opensearchserverless delete-security-policy --name kb-enc --type encryption