Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Terapkan kasus penggunaan RAG AWS dengan menggunakan Terraform dan Amazon Bedrock
Martin Maritsch, Nicolas Jacob Baer, Olivier Brique, Julian Ferdinand Grueber, Alice Morano, dan Nicola D Orazio, Amazon Web Services
Ringkasan
AWS menyediakan berbagai opsi untuk membangun kasus penggunaan AI generatif yang diaktifkan Retrieval Augmented Generation (RAG)
Pengguna mengunggah file secara manual ke bucket Amazon Simple Storage Service (Amazon S3), seperti file Microsoft Excel atau dokumen PDF. (Untuk informasi selengkapnya tentang jenis file yang didukung, lihat Dokumentasi tidak terstruktur
.) Isi file diekstraksi dan disematkan ke dalam database pengetahuan yang didasarkan pada Aurora PostgreSQL kompatibel tanpa server, yang mendukung konsumsi hampir real-time dokumen ke dalam penyimpanan vektor. Pendekatan ini memungkinkan model RAG untuk mengakses dan mengambil informasi yang relevan untuk kasus penggunaan di mana latensi rendah penting.
Ketika pengguna terlibat dengan model pembuatan teks, itu meningkatkan interaksi melalui augmentasi pengambilan konten yang relevan dari file yang diunggah sebelumnya.
Pola ini menggunakan Amazon Titan Text Embeddings v2 sebagai model embedding dan Anthropic Claude 3 Soneta
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS.
AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi dengan Anda Akun AWS. Untuk petunjuk penginstalan, lihat Menginstal atau memperbarui ke versi terbaru dari AWS CLI dokumentasi. AWS CLI Untuk meninjau AWS kredensi Anda dan akses Anda ke akun Anda, lihat Pengaturan konfigurasi dan file kredensi dalam dokumentasi. AWS CLI
Akses model yang diaktifkan untuk model bahasa besar yang diperlukan (LLMs) di konsol Amazon Bedrock Anda Akun AWS. Pola ini membutuhkan yang berikut LLMs:
amazon.titan-embed-text-v2:0anthropic.claude-3-sonnet-20240229-v1:0
Batasan
Contoh arsitektur ini tidak menyertakan antarmuka untuk menjawab pertanyaan terprogram dengan database vektor. Jika kasus penggunaan Anda memerlukan API, pertimbangkan untuk menambahkan Amazon API Gateway dengan AWS Lambda fungsi yang menjalankan tugas pengambilan dan penjawab pertanyaan.
Contoh arsitektur ini tidak menyertakan fitur pemantauan untuk infrastruktur yang digunakan. Jika kasus penggunaan Anda memerlukan pemantauan, pertimbangkan untuk menambahkan layanan AWS pemantauan.
Jika Anda mengunggah banyak dokumen dalam jangka waktu singkat ke bucket Amazon S3, fungsi Lambda mungkin mengalami batas tarif. Sebagai solusinya, Anda dapat memisahkan fungsi Lambda dengan antrian Amazon Simple Queue Service (Amazon SQS) di mana Anda dapat mengontrol laju pemanggilan Lambda.
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat Layanan AWS berdasarkan Wilayah
. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.
Versi produk
Arsitektur
Diagram berikut menunjukkan alur kerja dan komponen arsitektur untuk pola ini.

Diagram ini menggambarkan hal berikut:
Saat objek dibuat di bucket Amazon S3
bedrock-rag-template-<account_id>, notifikasi Amazon S3 akan memanggil fungsi Lambda.data-ingestion-processorFungsi Lambda
data-ingestion-processordidasarkan pada image Docker yang disimpan di repositori Amazon Elastic Container Registry (Amazon ECR) Registry ECR).bedrock-rag-templateFungsi ini menggunakan LangChain S3 FileLoader
untuk membaca file sebagai LangChain Dokumen . Kemudian, LangChain RecursiveCharacterTextSplitter potongan setiap dokumen, diberi a CHUNK_SIZEdan aCHUNK_OVERLAPyang bergantung pada ukuran token maksimum model penyematan Amazon Titan Text Embedding V2. Selanjutnya, fungsi Lambda memanggil model embedding di Amazon Bedrock untuk menyematkan potongan ke dalam representasi vektor numerik. Terakhir, vektor-vektor ini disimpan dalam database Aurora PostgreSQL. Untuk mengakses database, fungsi Lambda pertama-tama mengambil nama pengguna dan kata sandi dari. AWS Secrets ManagerPada instance notebook Amazon SageMaker AI
aws-sample-bedrock-rag-template, pengguna dapat menulis prompt pertanyaan. Kode memanggil Claude 3 di Amazon Bedrock dan menambahkan informasi basis pengetahuan ke konteks prompt. Akibatnya, Claude 3 memberikan tanggapan menggunakan informasi dalam dokumen.
Pendekatan pola ini terhadap jaringan dan keamanan adalah sebagai berikut:
Fungsi Lambda
data-ingestion-processorada di subnet pribadi dalam virtual private cloud (VPC). Fungsi Lambda tidak diizinkan untuk mengirim lalu lintas ke internet publik karena grup keamanannya. Akibatnya, lalu lintas ke Amazon S3 dan Amazon Bedrock dirutekan melalui titik akhir VPC saja. Akibatnya, lalu lintas tidak melintasi internet publik, yang mengurangi latensi dan menambahkan lapisan keamanan tambahan di tingkat jaringan.Semua sumber daya dan data dienkripsi kapan pun berlaku dengan menggunakan kunci AWS Key Management Service (AWS KMS) dengan alias.
aws-sample/bedrock-rag-template
Otomatisasi dan skala
Pola ini menggunakan Terraform untuk menyebarkan infrastruktur dari repositori kode ke file. Akun AWS
Alat
Layanan AWS
Amazon Aurora PostgreSQL Compatible Edition adalah mesin database relasional yang dikelola sepenuhnya dan sesuai dengan ACID yang membantu Anda mengatur, mengoperasikan, dan menskalakan penerapan PostgreSQL. Dalam pola ini, Aurora PostgreSQL kompatibel menggunakan plugin pgvector sebagai database vektor.
Amazon Bedrock adalah layanan yang dikelola sepenuhnya yang membuat model foundation berkinerja tinggi (FMs) dari startup AI terkemuka dan Amazon tersedia untuk Anda gunakan melalui API terpadu.
AWS Command Line Interface (AWS CLI) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal. Dalam pola ini, Amazon ECR meng-host image Docker untuk fungsi Lambda
data-ingestion-processor.AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
AWS Key Management Service (AWS KMS) membantu Anda membuat dan mengontrol kunci kriptografi untuk membantu melindungi data Anda.
AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan. Dalam pola ini, Lambda menyerap data ke dalam penyimpanan vektor.
Amazon SageMaker AI adalah layanan pembelajaran mesin terkelola (ML) yang membantu Anda membangun dan melatih model ML, lalu menerapkannya ke lingkungan host yang siap produksi.
AWS Secrets Managermembantu Anda mengganti kredensi hardcode dalam kode Anda, termasuk kata sandi, dengan panggilan API ke Secrets Manager untuk mengambil rahasia secara terprogram.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
Amazon Virtual Private Cloud (Amazon VPC) membantu Anda meluncurkan AWS sumber daya ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur yang dapat diskalakan. AWS VPC mencakup subnet dan tabel routing untuk mengontrol arus lalu lintas.
Alat lainnya
Docker
adalah seperangkat produk platform as a service (PaaS) yang menggunakan virtualisasi pada tingkat sistem operasi untuk mengirimkan perangkat lunak dalam wadah. HashiCorp Terraform
adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud. Puisi
adalah alat untuk manajemen ketergantungan dan pengemasan dengan Python. Python adalah bahasa
pemrograman komputer tujuan umum.
Repositori kode
Kode untuk pola ini tersedia di repositori GitHub terraform-rag-template-using-amazon-bedrock
Praktik terbaik
Meskipun contoh kode ini dapat digunakan di mana pun Wilayah AWS, kami menyarankan Anda menggunakan US East (Virginia N.) —
us-east-1atau US West (California N.) —.us-west-1Rekomendasi ini didasarkan pada ketersediaan fondasi dan model penyematan di Amazon Bedrock pada saat publikasi pola ini. Untuk up-to-date daftar dukungan model fondasi Amazon Bedrock di Wilayah AWS, lihat Dukungan model oleh Wilayah AWS dalam dokumentasi Amazon Bedrock. Untuk informasi tentang menerapkan contoh kode ini ke Wilayah lain, lihat Informasi tambahan.Pola ini hanya menyediakan proof-of-concept (PoC) atau demo percontohan. Jika Anda ingin membawa kode ke produksi, pastikan untuk menggunakan praktik terbaik berikut:
Aktifkan pencatatan akses server untuk Amazon S3.
Siapkan pemantauan dan peringatan untuk fungsi Lambda.
Jika kasus penggunaan Anda memerlukan API, pertimbangkan untuk menambahkan Amazon API Gateway dengan fungsi Lambda yang menjalankan tugas pengambilan dan penjawab pertanyaan.
Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Berikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi IAM.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repositori. | Untuk mengkloning GitHub repositori yang disediakan dengan pola ini, gunakan perintah berikut:
| AWS DevOps |
Konfigurasikan variabel. | Untuk mengkonfigurasi parameter untuk pola ini, lakukan hal berikut:
| AWS DevOps |
Menyebarkan solusinya. | Untuk menerapkan solusi, lakukan hal berikut:
Penyebaran infrastruktur menyediakan instance SageMaker AI di dalam VPC dan dengan izin untuk mengakses database Aurora PostgreSQL. | AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Jalankan demo. | Setelah penerapan infrastruktur sebelumnya berhasil, gunakan langkah-langkah berikut untuk menjalankan demo di notebook Jupyter:
Notebook Jupyter memandu Anda melalui proses berikut:
| AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Bersihkan infrastruktur. | Untuk menghapus semua sumber daya yang Anda buat saat tidak lagi diperlukan, gunakan perintah berikut:
| AWS DevOps |
Sumber daya terkait
AWS sumber daya
Sumber daya lainnya
Informasi tambahan
Menerapkan database vektor
Pola ini menggunakan Aurora PostgreSQL kompatibel untuk mengimplementasikan database vektor untuk RAG. Sebagai alternatif untuk Aurora PostgreSQL, AWS menyediakan kemampuan dan layanan lain untuk RAG, seperti Amazon Bedrock Knowledge Bases dan Amazon Service. OpenSearch Anda dapat memilih solusi yang paling sesuai dengan kebutuhan spesifik Anda:
Amazon OpenSearch Service menyediakan mesin pencari dan analitik terdistribusi yang dapat Anda gunakan untuk menyimpan dan menanyakan data dalam jumlah besar.
Amazon Bedrock Knowledge Bases dirancang untuk membangun dan menyebarkan basis pengetahuan sebagai abstraksi tambahan untuk menyederhanakan proses konsumsi dan pengambilan RAG. Pangkalan Pengetahuan Amazon Bedrock dapat bekerja dengan Aurora PostgreSQL dan Amazon Service. OpenSearch
Menyebarkan ke yang lain Wilayah AWS
Seperti yang dijelaskan dalam Arsitektur, kami menyarankan Anda menggunakan Region US East (Virginia N.) — us-east-1 atau US West (California N.) — us-west-1 untuk menyebarkan contoh kode ini. Namun, ada dua cara yang mungkin untuk menyebarkan contoh kode ini ke Wilayah selain us-east-1 danus-west-1. Anda dapat mengonfigurasi Wilayah penyebaran dalam commons.tfvars file. Untuk akses model pondasi lintas wilayah, pertimbangkan opsi berikut:
Melintasi internet publik — Jika lalu lintas dapat melintasi internet publik, tambahkan gateway internet ke VPC. Kemudian, sesuaikan grup keamanan yang ditetapkan ke fungsi Lambda
data-ingestion-processordan instance notebook SageMaker AI untuk memungkinkan lalu lintas keluar ke internet publik.Tidak melintasi internet publik — Untuk menyebarkan sampel ini ke Wilayah mana pun selain
us-east-1atauus-west-1, lakukan hal berikut:
Di
us-west-1Wilayahus-east-1atau, buat VPC tambahan termasuk titik akhir VPC untuk.bedrock-runtimeBuat koneksi peering dengan menggunakan VPC peering atau gateway transit ke aplikasi VPC.
Saat mengonfigurasi klien
bedrock-runtimeboto3 dalam fungsi Lambda apa pun di luarus-east-1atauus-west-1, teruskan nama DNS pribadi dari titik akhir VPC untukbedrock-runtimeinus-east-1atau us-west-1 sebagai ke klien boto3.endpoint_url