Aplikasi chatbot dengan menggunakan Retrieval Augmented Generation (RAG).
- 🤖 Chatbot berbasis RAG menggunakan model DeepSeek
- 📄 Dukungan unggah dokumen (PDF, CSV, TXT)
- 📝 Manajemen dokumen (tambah, hapus, lihat)
- 💾 Penyimpanan chat history
- 🔍 Pencarian semantik untuk menemukan dokumen yang relevan
/
├── backend.py # API Flask untuk backend
├── ragchat.db # Database SQLite untuk penyimpanan data
├── chatbot-rag/ # Frontend Next.js
│ ├── src/
│ │ ├── app/
│ │ │ ├── components/
│ │ │ │ ├── ChatBox.tsx # Komponen chat
│ │ │ │ ├── DocumentManager.tsx # Komponen manajemen dokumen
│ │ │ │ └── Navigation.tsx # Komponen navigasi
│ │ │ ├── documents/
│ │ │ │ └── page.tsx # Halaman dokumen
│ │ │ ├── page.tsx # Halaman utama (chat)
│ │ │ └── layout.tsx # Layout utama
├── db/ # Database ChromaDB lokal
- Flask: Web Framework
- ChromaDB: Database vektor untuk penyimpanan dan pencarian semantik
- SentenceTransformers: Model embedding untuk pencarian semantik
- PyMuPDF: Ekstraksi teks dari PDF
- SQLite: Database untuk menyimpan riwayat chat, dokumen, dan cache
- Next.js: React framework
- Tailwind CSS: Framework CSS untuk styling
- Buat virtual environment
python3 -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows- Install dependencies
pip install flask faiss-cpu chromadb openai pymupdf pandas sqlite3 sentence-transformers flask-cors- Jalankan backend
python backend.py- Masuk ke direktori frontend
cd chatbot-rag- Install dependencies
npm install- Jalankan frontend
npm run dev- Buka browser dan akses http://localhost:3000
POST /chat: Mengirim pertanyaan ke chatbotPOST /add_document: Menambahkan dokumen secara manualPOST /upload_file: Mengunggah dokumen (PDF/CSV/TXT)GET /documents: Mendapatkan daftar dokumenDELETE /documents/<id>: Menghapus dokumenGET /chat_history: Mendapatkan riwayat chat
Aplikasi ini menggunakan dua metode penyimpanan:
- ChromaDB: Database vektor berbasis file yang digunakan untuk penyimpanan teks dokumen dan melakukan pencarian semantik/vektor
- SQLite: Database SQL ringan berbasis file (ragchat.db) yang digunakan untuk:
- Menyimpan riwayat chat
- Caching hasil pencarian
- Menyimpan metadata dan informasi dokumen
Keuntungan menggunakan SQLite:
- Tidak memerlukan server database terpisah
- Data disimpan dalam file tunggal yang mudah dibackup
- Mudah digunakan untuk pengembangan dan aplikasi dengan beban rendah
- Dokumen diunggah dan disimpan dalam database vektor (ChromaDB) dan SQLite.
- Saat pengguna mengirim pertanyaan, sistem mencari dokumen yang relevan.
- Dokumen yang relevan digunakan sebagai konteks untuk model LLM.
- Model LLM (DeepSeek) menghasilkan jawaban berdasarkan konteks + pertanyaan.