pip install -r requirements.txtstreamlit run main.pySkrip ini adalah chat interface AI berbasis dokumen PDF, dibangun menggunakan LangChain, Streamlit, dan Bedrock (AWS). Data chat disimpan di SQLite dan disinkronkan ke S3.
Digunakan untuk memproses dokumen dan membuat RAG (Retrieval-Augmented Generation).
BedrockEmbeddings: Membuat vektor embedding dari teks menggunakan Amazon Bedrock (model foundation).
FAISS: Library untuk menyimpan dan mencari vektor. Dipakai untuk pencarian semantik cepat.
Hasil dari proses ini biasanya disimpan dalam file .faiss dan .pkl:
.faiss: menyimpan index FAISS.
.pkl: menyimpan metadata (contohnya teks asli atau ID-nya).
PyPDFLoader: Untuk memuat konten dari PDF ke dalam format yang bisa diproses.
RecursiveCharacterTextSplitter: Memecah teks panjang menjadi potongan kecil yang lebih mudah diproses oleh LLM.
Biasanya digunakan untuk:
- Upload PDF
- Menampilkan chat
- Menjalankan pertanyaan ke model
Dua tabel disiapkan untuk menyimpan riwayat percakapan:
- chat_sessions: metadata setiap sesi chat.
- chat_messages: isi dari setiap percakapan, dengan referensi ke sesi-nya.
Variabel BUCKET_NAME dan CHAT_DB_S3_KEY dipakai untuk:
- download_file: mengambil financial_ai_chats.db dari S3.
- upload_file: mengunggah hasil update kembali ke S3.
Menangani:
- Sinkronisasi database dari/ke S3
- Inisialisasi database SQLite
- Mungkin juga mengatur insert/delete untuk chat (belum terlihat semua)
| File | Fungsi |
|---|---|
.faiss |
Index untuk pencarian vektor FAISS |
.pkl |
Metadata terkait dokumen / chunk / mapping |
financial_ai_chats.db |
Menyimpan data chat user secara lokal |
| (PDF files) | Diunggah oleh user untuk dijadikan dasar pertanyaan |
User upload PDF via Streamlit.
- Teks di-split jadi chunk kecil → dibuat embedding dengan Bedrock.
- Embeddings disimpan di FAISS index (.faiss + .pkl).
- User bertanya → sistem cari chunk paling relevan → kirim ke LLM.
- Jawaban & history disimpan di SQLite → di-sync ke S3.
