Repositori ini berisi contoh praktis tentang cara membuat aplikasi Tanya Jawab yang mampu menjawab pertanyaan terkait dokumen pribadi Anda menggunakan layanan GenAI AWS.
Sebelumnya, saya membuat aplikasi Tanya Jawab menggunakan Azure OpenAI GPT-4 dan Pinecone (Anda dapat menemukannya di sini) .
Dalam repositori ini saya akan membuat aplikasi yang persis sama tetapi hanya menggunakan layanan AWS (+ Streamlit untuk UI).
Lebih tepatnya, aplikasi ini memiliki arsitektur berikut:
Dan itu menggunakan teknologi berikut:
Repositori ini berisi aplikasi berikut:
Streamlit
, yang memungkinkan kami menanyakan data yang disimpan di AWS Kendra menggunakan salah satu model AWS Bedrock LLM yang tersedia.Dokumen pribadi disimpan dalam ember s3.
Indeks Kendra dikonfigurasi untuk menggunakan konektor s3. Indeks memeriksa bucket s3 setiap N menit untuk mencari konten baru. Jika konten baru ditemukan di bucket, konten tersebut secara otomatis diuraikan dan disimpan ke dalam database Kendra.
Saat pengguna menjalankan kueri melalui aplikasi Streamlit
, aplikasi mengikuti langkah-langkah berikut:
Jika alih-alih menggunakan aplikasi Streamlit
, Anda lebih memilih untuk menjalankan petunjuk langkah demi langkah untuk menyiapkan pola RAG, Anda memiliki notebook Jupyter ( /notebooks/rag-with-langchain.ipynb
) yang memungkinkan Anda melakukan hal ini.
Aplikasi Streamlit
banyak menggunakan perpustakaan LangChain
untuk mengimplementasikan pola RAG. Jika Anda memilih untuk tidak menggunakan perpustakaan pihak ketiga dan mengatur pola RAG hanya dengan perpustakaan boto3
, Anda memiliki notebook Jupyter kedua ( /notebooks/rag-with-only-boto3.ipynb
) yang memungkinkan Anda melakukan ini .
Di folder /infra
, Anda akan menemukan serangkaian file Terraform yang akan membuat setiap layanan AWS yang diperlukan agar aplikasi berfungsi dengan baik.
File Terraform ini akan membuat sumber daya berikut:
Ada beberapa prasyarat yang harus Anda waspadai sebelum mencoba menjalankan aplikasi.
Di bagian "Akses Model", Anda memiliki gambaran umum tentang LLM mana yang dapat Anda akses dan mana yang tidak Anda akses.
Untuk sepenuhnya menggunakan aplikasi ini, Anda harus memiliki akses ke setiap LLM pihak ketiga AWS Bedrock .
boto3
disiapkan untuk mengambil kredensial AWS dari profil default
file konfigurasi AWS di mesin lokal Anda. Untuk gambaran umum tentang pendekatan kelipatan untuk mengonfigurasi kredensial boto3
, buka tautan berikut:
Sebelum mencoba menjalankan aplikasi, baca bagian Infrastruktur AWS dan Prasyarat .
Repositori memiliki file .env
yang berisi variabel lingkungan yang diperlukan aplikasi agar berhasil dijalankan:
KENDRA_INDEX='<kendra-index>'
AWS_BEDROCK_REGION='<bedrock-region>'
AWS_KENDRA_REGION='<region-where-kendra-index-is-deployed>'
Ubah nilainya sesuai.
pip install -r requirements.txt
Saat Anda menginstal Streamlit
, alat baris perintah (CLI) juga diinstal. Tujuan alat ini adalah untuk menjalankan aplikasi Streamlit
.
Untuk menjalankan aplikasi, jalankan saja perintah berikut:
streamlit run app.py
Repositori ini memiliki
Dockerfile
jika Anda lebih suka menjalankan aplikasi pada sebuah container.
docker build -t aws-rag-app .
docker run -p 5050:5050
-e KENDRA_INDEX="<kendra-index>"
-e AWS_BEDROCK_REGION="<bedrock-region>"
-e AWS_KENDRA_REGION="<region-where-kendra-index-is-deploy>"
-e AWS_ACCESS_KEY_ID="<aws-access-key>"
-e AWS_SECRET_ACCESS_KEY="<aws-secret-access-key>"
aws-rag-app
app.py
agar kompatibel dengan perubahan Batuan Dasar terbaru.boto3
dan botocore3
. boto3
yang kompatibel dengan Bedrock akhirnya tersedia untuk umum.