Terapkan kasus penggunaan RAG AWS dengan menggunakan Terraform dan Amazon Bedrock - AWS Prescriptive Guidance

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). Pola ini memberi Anda solusi untuk aplikasi berbasis RAG berdasarkan LangChain dan kompatibel dengan Amazon Aurora PostgreSQL sebagai penyimpanan vektor. Anda dapat langsung menerapkan solusi ini dengan Terraform ke dalam Akun AWS dan menerapkan kasus penggunaan RAG sederhana berikut:

  1. 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.)

  2. 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.

  3. 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 sebagai model pembuatan teks, keduanya tersedia di Amazon Bedrock.

Prasyarat dan batasan

Prasyarat

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

  • AWS CLI versi 2 atau yang lebih baru

  • Docker versi 26.0.0 atau yang lebih baru

  • Puisi versi 1.7.1 atau yang lebih baru

  • Python versi 3.10 atau yang lebih baru

  • Terraform versi 1.8.4 atau yang lebih baru

Arsitektur

Diagram berikut menunjukkan alur kerja dan komponen arsitektur untuk pola ini.

Alur kerja untuk membuat aplikasi berbasis RAG menggunakan Aurora PostgreSQL dan di Amazon Bedrock. LLMs

Diagram ini menggambarkan hal berikut:

  1. Saat objek dibuat di bucket Amazon S3bedrock-rag-template-<account_id>, notifikasi Amazon S3 akan memanggil fungsi Lambda. data-ingestion-processor

  2. Fungsi Lambda data-ingestion-processor didasarkan pada image Docker yang disimpan di repositori Amazon Elastic Container Registry (Amazon ECR) Registry ECR). bedrock-rag-template

    Fungsi ini menggunakan LangChain S3 FileLoader untuk membaca file sebagai LangChain Dokumen. Kemudian, LangChain RecursiveCharacterTextSplitterpotongan setiap dokumen, diberi a CHUNK_SIZE dan a CHUNK_OVERLAP yang 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 Manager

  3. Pada instance notebook Amazon SageMaker AIaws-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-processor ada 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 Lambdadata-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-1 atau US West (California N.) —. us-west-1 Rekomendasi 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

TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repositori.

Untuk mengkloning GitHub repositori yang disediakan dengan pola ini, gunakan perintah berikut:

git clone https://github.com/aws-samples/terraform-rag-template-using-amazon-bedrock
AWS DevOps

Konfigurasikan variabel.

Untuk mengkonfigurasi parameter untuk pola ini, lakukan hal berikut:

  1. Di komputer Anda, di GitHub repositori, gunakan perintah berikut untuk membuka folderterraform:

    cd terraform
  2. Buka commons.tfvars file, dan sesuaikan parameter sesuai dengan kebutuhan Anda.

AWS DevOps

Menyebarkan solusinya.

Untuk menerapkan solusi, lakukan hal berikut:

  1. Di terraform folder, gunakan perintah berikut untuk menjalankan Terraform dan meneruskan variabel yang Anda sesuaikan:

    terraform init terraform apply -var-file=commons.tfvars
  2. Konfirmasikan bahwa sumber daya yang ditampilkan dalam diagram arsitektur berhasil digunakan.

Penyebaran infrastruktur menyediakan instance SageMaker AI di dalam VPC dan dengan izin untuk mengakses database Aurora PostgreSQL.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Jalankan demo.

Setelah penerapan infrastruktur sebelumnya berhasil, gunakan langkah-langkah berikut untuk menjalankan demo di notebook Jupyter:

  1. Masuk ke AWS Management Console Akun AWS tempat infrastruktur digunakan.

  2. Buka instance notebook SageMaker AIaws-sample-bedrock-rag-template.

  3. Pindahkan rag_demo.ipynb notebook Jupyter ke instance notebook SageMaker AI dengan menggunakan drag and drop.

  4. Buka rag_demo.ipynb pada instance notebook SageMaker AI, dan pilih conda_python3 kernel.

  5. Untuk menjalankan demo, jalankan sel notebook.

Notebook Jupyter memandu Anda melalui proses berikut:

  • Persyaratan pemasangan

  • Definisi penyematan

  • Koneksi basis data

  • Konsumsi data

  • Pengambilan generasi teks tambahan

  • Kueri dokumen yang relevan

AWS Umum
TugasDeskripsiKeterampilan yang dibutuhkan

Bersihkan infrastruktur.

Untuk menghapus semua sumber daya yang Anda buat saat tidak lagi diperlukan, gunakan perintah berikut:

terraform destroy -var-file=commons.tfvars
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-processor dan 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-1 atauus-west-1, lakukan hal berikut:

  1. Di us-west-1 Wilayah us-east-1 atau, buat VPC tambahan termasuk titik akhir VPC untuk. bedrock-runtime

  2. Buat koneksi peering dengan menggunakan VPC peering atau gateway transit ke aplikasi VPC.

  3. Saat mengonfigurasi klien bedrock-runtime boto3 dalam fungsi Lambda apa pun di luar us-east-1 atauus-west-1, teruskan nama DNS pribadi dari titik akhir VPC untuk bedrock-runtime in us-east-1 atau us-west-1 sebagai ke klien boto3. endpoint_url