Sistem RAG multi-strategi untuk pembuatan modul ajar otomatis dengan optimisasi matematis dan validasi komprehensif.
- Multi-Strategy Retrieval: 5 strategi retrieval (S1-S5) dengan optimisasi matematis
- Multi-Strategy Generation: 5 strategi generasi (G1-G5) dengan validasi terintegrasi
- Cost-Aware Routing: Optimisasi biaya dan latensi menggunakan utility functions
- Mathematical Features: Feature engineering komprehensif untuk chunks dan queries
- Claim Validation: Validasi klaim, konsistensi numerik, dan deteksi kontradiksi
- Web Content Enhancement: Pengayaan konten dari web scraping Google
- FAISS Vector Search: Database vektor untuk pencarian semantik
- MongoDB Storage: Penyimpanan hasil dan logging
multiple/
├── config/ # Konfigurasi sistem
├── core/ # Komponen inti RAG
├── strategies/ # Implementasi strategi S1-S5 dan G1-G5
├── models/ # Schema data dan models
├── storage/ # Database dan penyimpanan
├── utils/ # Utilities dan web scraping
├── data/ # Data lokal modul ajar
├── templates/ # Template modul ajar
└── main.py # API server utama
- S1: Single-pass Dense - Retrieval sederhana dengan semantic similarity
- S2: Hybrid BM25+Dense - Kombinasi keyword dan semantic matching
- S3: Multi-hop Iterative - Retrieval bertahap untuk query kompleks
- S4: Clustered Selection - Seleksi dokumen beragam dari berbagai cluster
- S5: Query Rewrite/Decomposition - Dekomposisi query untuk handling ambiguitas
- G1: Fusion-in-Decoder - Fusi multi-dokumen dalam decoder
- G2: Rerank-then-Generate - Reranking sebelum generasi
- G3: Chain-of-Thought - Reasoning eksplisit step-by-step
- G4: Evidence-Aware - Generasi dengan sitasi eksplisit
- G5: Validator-Augmented - Generasi dengan validasi terintegrasi
- Install Dependencies
pip install -r requirements.txt- Setup Environment
# Copy dan edit .env file
copy .env.example .env
# Isi OPENAI_API_KEY dan konfigurasi lainnya- Setup MongoDB
# Pastikan MongoDB running di localhost:27017
# Atau update MONGODB_URL di .env- Siapkan Data
# Letakkan file modul ajar (.docx, .pdf, .txt) di folder data/modul_ajar/
# Sistem akan otomatis memproses dan membuat index- Jalankan Server
python main.pyServer akan running di http://localhost:8000
POST /generate- Generate modul ajarGET /health- Health check sistemGET /history- Riwayat generasi
GET /strategies- Info strategi yang tersediaGET /template- Struktur template modul ajarGET /stats- Statistik sistem
import requests
request_data = {
"nama_guru": "Siti Aisyah",
"nama_sekolah": "SDN 1 Jakarta",
"mata_pelajaran": "Matematika",
"topik": "Pecahan",
"sub_topik": "Penjumlahan Pecahan",
"alokasi_waktu": "2 x 35 menit",
"kelas": "5",
"fase": "C",
"llm_used": "openai"
}
response = requests.post("http://localhost:8000/generate", json=request_data)
result = response.json(){
"request_id": "uuid",
"generated_sections": {
"identitas": {...},
"tujuan_pembelajaran": {...},
"profil_pelajar_pancasila": {...},
// ... sections lainnya
},
"overall_quality_score": 0.85,
"total_cost": 0.15,
"processing_time": 12.5,
"strategies_used": {...},
"created_at": "2024-01-01T10:00:00"
}- Database connections
- Model configurations
- Strategy parameters
- Cost optimization weights
- Feature engineering weights
OPENAI_API_KEY: API key OpenAIMONGODB_URL: URL MongoDBLOG_LEVEL: Level logging
Sistem menggunakan logging yang cantik dengan:
- Console output berwarna dengan Rich
- File logging dengan rotasi
- Error tracking
- Performance metrics
- Request/response logging
Log files tersimpan di folder logs/:
app.log- Log utama aplikasierror.log- Log khusus error
Sistem menggunakan pendekatan matematis untuk:
- Entropy calculation untuk information content
- Lexical diversity measurement
- Dependency scoring dengan weighted combination
- Query ambiguity using entropy
- Strategy utility dengan weighted features
- Cost-aware expected utility calculation
- Confidence-based fallback mechanisms
- Probability distribution untuk strategy selection
- Faithfulness scoring dengan cosine similarity
- Numeric consistency checking
- Contradiction detection using NLI
- Overall confidence calculation
- Content Retrieval: Mencari konten relevan dari database lokal + web
- Feature Extraction: Ekstraksi fitur matematis dari query dan chunks
- Strategy Selection: Pemilihan strategi optimal berdasarkan utility
- Content Generation: Generasi konten menggunakan strategi terpilih
- Validation: Validasi klaim dan konsistensi konten
- Synthesis: Penggabungan dan finalisasi output
- Latency: ~10-30 detik per modul ajar (tergantung kompleksitas)
- Quality: Score rata-rata 0.75-0.90 dengan validasi
- Cost: Optimisasi token usage dan API calls
- Scalability: Horizontal scaling ready dengan async/await
- Inherit dari
BaseRetrievalStrategyatauBaseGenerationStrategy - Implement method
retrieve()ataugenerate() - Add ke factory classes
- Update utility calculations di
RouterEngine
Edit file di templates/template.json untuk mengubah struktur modul ajar.
Proyek ini untuk keperluan pendidikan dan pengembangan sistem RAG.