Sistem RAG (Retrieval-Augmented Generation) berbasis Node.js yang menggabungkan:
- Mistral API untuk embedding dan chat completion
- Supabase (PostgreSQL + pgvector) untuk penyimpanan dokumen, pencarian semantik, dan riwayat chat
UI sederhana tersedia di:
http://localhost:3000
- Tambah dokumen dan simpan embedding ke database
- Chat berbasis konteks dokumen relevan (RAG)
- Simpan dan ambil riwayat chat per session
- CRUD dokumen
- Statistik dan health check API
- Node.js + Express
- Axios
- Supabase JS Client
- Mistral API
- UUID
.
|- index.html # UI sederhana untuk tambah dokumen + chat
|- main.js # Implementasi server Express + semua endpoint
|- server.js # Entry point (require ./main)
|- .env.example # Contoh environment variable
|- package.json
- Node.js 18+ (disarankan LTS)
- Project Supabase aktif
- Tabel/function database untuk RAG sudah dibuat (termasuk RPC
match_documents) - API key Mistral
- Install dependency:
npm install- Copy env:
cp .env.example .envDi Windows PowerShell:
Copy-Item .env.example .env- Isi
.env:
MISTRAL_API_KEY=your_mistral_api_key
SUPABASE_URL=https://your-project-ref.supabase.co
SUPABASE_SERVICE_KEY=your_supabase_service_role_key
DATABASE_PASSWORD=your_database_password
PORT=3000
NODE_ENV=development
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100Development:
npm run devProduction:
npm startServer akan berjalan di:
http://localhost:3000
GET /api/healthGET /api/stats
POST /api/documents- tambah dokumenGET /api/documents- list dokumen (page,limit,search,tags)GET /api/documents/:id- detail dokumenPUT /api/documents/:id- update dokumenDELETE /api/documents/:id- hapus dokumen
POST /api/chat- chat RAGGET /api/chat/history/:sessionId- riwayat chat per sessionDELETE /api/chat/history/:sessionId- hapus riwayat chat sessionGET /api/chat/sessions- list session chat
Tambah dokumen:
curl -X POST http://localhost:3000/api/documents \
-H "Content-Type: application/json" \
-d "{\"title\":\"Node.js\",\"content\":\"Node.js adalah runtime JavaScript\"}"Chat:
curl -X POST http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d "{\"message\":\"Apa itu Node.js?\"}"- Jangan commit
.envke repository. - Gunakan
SUPABASE_SERVICE_KEYhanya di backend server. - Jika secret pernah terekspos, lakukan rotasi key.
MIT