Yeni geliştiricilerin projeleri hızlıca anlamasını sağlayan akıllı RAG sistemi
🚀 Quick Start • 📚 Özellikler • 🔧 Tech Stack • 🤖 Agentic Nedir?
Yeni bir projeye katıldığında:
- 📁 Yüzlerce dosya var, nereden başlayacağını bilmiyorsun
- 📖 Dokümantasyon eksik veya güncel değil
- ⏰ Senior developer'a sürekli soru sormak zaman alıyor
- 🔍 Kod içinde kayboluyorsun
Agentic RAG - Projenizi anlayan akıllı asistan:
- ✅ Tüm proje dosyalarını yükle (ZIP, PDF, kod, dokümantasyon)
- ✅ AI otomatik olarak parse, chunk, embed ve indexle
- ✅ Doğal dilde soru sor, kaynaklarıyla birlikte cevap al
- ✅ Agent'ın düşünme sürecini izle (şeffaflık!)
Bu proje basit RAG değil, Agentic RAG!
Soru → Ara → Cevapla
- Tek arama yapar
- "Yeterli mi?" kontrolü yok
- Karmaşık sorularda başarısız
Soru → Analiz → Decompose → Multi-hop Search → Self-Reflect → [Retry?] → Generate
- Sorguyu analiz eder ve gerekirse parçalar
- Birden fazla arama yapar (multi-hop)
- "Yeterli bilgi var mı?" diye kendini sorgular (self-reflection)
- Eksikse tekrar arar (retry with refined queries)
- Şeffaf: Tüm adımları görebilirsin!
┌──────────────┐
│ START │
│ (Soru) │
└──────┬───────┘
▼
┌──────────────┐
│ 🧠 ANALYZE │ ← "Bu soru basit mi, karmaşık mı?"
└──────┬───────┘
▼
┌──────────────┐
│ 🔀 DECOMPOSE │ ← Karmaşıksa → ["soru1", "soru2", "soru3"]
└──────┬───────┘
▼
┌───────────────────────┐
│ 🔍 MULTI-HOP │ ← Her sub-query için ayrı arama
│ SEARCH │
└───────────┬───────────┘
▼
┌───────────────────────┐
│ 🪞 SELF-REFLECT │ ← "Bu bilgiler yeterli mi?"
└───────────┬───────────┘
▼
┌─────────────┐
│ Yeterli? │
└──────┬──────┘
│
┌───────────┴───────────┐
▼ ▼
[EVET] [HAYIR]
│ │
│ ┌───────┴───────┐
│ │ 🔄 RETRY │ ← Eksik bilgi için ek arama
│ └───────┬───────┘
│ │
│ ▼
│ (Tekrar Search'e git)
│
▼
┌──────────────┐
│ ✍️ GENERATE │ ← Tüm context ile cevap üret
└──────┬───────┘
▼
┌──────────────┐
│ 📝 CITE │ ← Kaynakları göster
└──────┬───────┘
▼
┌──────────────┐
│ END │
└──────────────┘
🔍 Arama: "authentication database"
📄 5 sonuç bulundu
✍️ Cevap üretiliyor...
❌ Eksik veya yanlış cevap riski yüksek!
🗣️ [USER_QUERY] "Bu projede authentication nasıl çalışıyor ve hangi database kullanılıyor?"
🤔 [THINKING] Sorguyu analiz ediyorum...
🔀 [DECOMPOSED] Karmaşık sorgu tespit edildi, parçalıyorum:
└─ [1] "authentication sistemi nasıl çalışıyor"
└─ [2] "hangi database teknolojisi kullanılıyor"
└─ [3] "database bağlantısı nasıl yapılıyor"
🔍 [SEARCHING] [1/3] authentication sistemi
📄 [FOUND] 4 sonuç (auth.py, middleware.py, config.py, README.md)
🔍 [SEARCHING] [2/3] database teknolojisi
📄 [FOUND] 3 sonuç (db.py, models.py, config.yaml)
🔍 [SEARCHING] [3/3] database bağlantısı
📄 [FOUND] 3 sonuç (connection.py, utils.py, .env.example)
🪞 [REFLECTING] Sonuçları değerlendiriyorum...
🪞 [REFLECTING] ✓ Context is sufficient
✍️ [GENERATING] Cevap oluşturuluyor...
✅ [COMPLETE] Cevap hazır. 10 kaynak kullanıldı.
| Teknoloji | Versiyon | Kullanım |
|---|---|---|
| Python | 3.9+ | Ana dil |
| FastAPI | 0.109 | REST API framework |
| LangChain | 0.3+ | LLM orchestration |
| LangGraph | 0.2+ | Graph-based agent |
| MongoDB Atlas | - | Vector database |
| Google Gemini | 2.0 Flash | LLM |
| Google Embeddings | text-embedding-004 | Vektör oluşturma |
| Teknoloji | Kullanım |
|---|---|
| HTML5 | Yapı |
| CSS3 | Premium dark theme |
| JavaScript | Interaktivite |
Bu proje lokal depolama kullanmaz! Tüm veriler cloud'da tutulur:
┌─────────────────────────────────────────────────────────────────┐
│ CLOUD ARCHITECTURE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 📁 Dosya Yükle │
│ │ │
│ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ PARSE │ → │ CHUNK │ → │ EMBED │ │
│ │ (Backend) │ │ (Backend) │ │ (Google Cloud AI) │ │
│ └─────────────┘ └─────────────┘ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ MONGODB ATLAS │ │
│ │ ☁️ CLOUD │ │
│ │ ───────────────── │ │
│ │ • Vector embeddings│ │
│ │ • Chunk metadata │ │
│ │ • Search index │ │
│ └─────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
| Özellik | Lokal | Cloud (Bizim) |
|---|---|---|
| Ölçeklenebilirlik | ❌ Disk sınırlı | ✅ Sınırsız |
| Yedekleme | ❌ Manuel | ✅ Otomatik |
| Erişilebilirlik | ❌ Tek cihaz | ✅ Her yerden |
| Performans | ✅ Optimize edilmiş | |
| Vector Search | ❌ Yavaş | ✅ Atlas Search (hızlı!) |
| Servis | Sağlayıcı | Kullanım |
|---|---|---|
| Vector Database | MongoDB Atlas | Embedding depolama & arama |
| LLM API | Google Cloud | Gemini 2.0 Flash |
| Embeddings API | Google Cloud | text-embedding-004 |
Bu proje tek tip chunking kullanmaz! Dosya türüne göre 4 farklı strateji uygular:
Dosyalar: .py, .java, .js, .ts
# YANLIŞ: Naive chunking (karakter bazlı)
"def get_user(id):\n user = db.fi" # Kırık!
"nd(id)\n return user" # Anlamsız!
# DOĞRU: AST-based chunking
"def get_user(id):\n user = db.find(id)\n return user" # Tam fonksiyon!Nasıl Çalışır:
- Python AST parser kullanır
- Her fonksiyon/class ayrı chunk
- Metadata:
name,start_line,end_line,docstring - Overlap: YOK (doğal sınırlar var)
Dosyalar: .md, README
# Kurulum ← Chunk 1
Pip ile kurulum...
## Windows için ← Chunk 2 (parent: Kurulum)
Windows adımları...
## Linux için ← Chunk 3 (parent: Kurulum)
Linux adımları...Özellikler:
- Her başlık yeni chunk
- Hiyerarşi korunur (
parent_section) - Overlap: YOK
Dosyalar: .yaml, .yml, .json
database: # Chunk 1: "database config"
host: localhost
port: 5432
api: # Chunk 2: "api config"
version: v1Özellikler:
- Top-level key = 1 chunk
- Config araması çok hızlı
- Overlap: YOK
Dosyalar: .txt, .pdf, .docx
[......... Chunk 1 (1000 char) .........]
[overlap 100]
[....... Chunk 2 (1000 char) .......]
Özellikler:
- Karakter limiti: 1000
- Overlap: 100 karakter (bağlam kaybını önler)
- Cümle sonunda kesmeye çalışır
Chunk türüne göre prefix ekliyoruz - retrieval kalitesi artıyor!
# Embedding öncesi prefix ekleme
prefix_map = {
"function": "Code function: ",
"class": "Code class: ",
"method": "Code method: ",
"markdown_section": "Documentation: ",
"yaml_block": "Configuration: ",
"json_block": "Data structure: ",
"semantic": "Text: ",
}
# Örnek:
# Chunk: "def get_user(id): return db.find(id)"
# Embedded text: "Code function: def get_user(id): return db.find(id)"Neden?
- Model chunk türünü anlıyor
- "Fonksiyon ara" deyince sadece fonksiyonlar geliyor
- Retrieval precision artıyor
Agentic-RAG/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI endpoints
│ │ ├── config.py # Environment config
│ │ ├── models/
│ │ │ └── schemas.py # Pydantic models
│ │ ├── services/
│ │ │ ├── file_processor.py # Parse (PDF, kod, MD, YAML)
│ │ │ ├── chunker.py # 4 strateji
│ │ │ ├── embedder.py # LangChain embeddings
│ │ │ ├── vector_store.py # MongoDB Atlas
│ │ │ └── agent.py # 🔥 LangGraph Agentic RAG
│ │ └── utils/
│ │ └── logger.py # Terminal visualization
│ └── requirements.txt
├── frontend/
│ ├── index.html # Modern UI
│ ├── css/style.css # Dark theme
│ └── js/app.js # Frontend logic
└── README.md
git clone https://github.com/hasanuslu/AgenticRAG-OnboardAI.git
cd AgenticRAG-OnboardAI/backend
pip install -r requirements.txt# .env dosyası oluştur
cp .env.example .env
# Düzenle:
GOOGLE_API_KEY=your-api-key
MONGODB_URI=mongodb+srv://...
MONGODB_DB_NAME=diet_db
MONGODB_COLLECTION=agentic_rag
VECTOR_INDEX_NAME=agentic-ragpython -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000# Tarayıcıda aç
start frontend/index.html| Method | Endpoint | Açıklama |
|---|---|---|
POST |
/upload |
Dosya yükle (ZIP, PDF, kod) |
POST |
/prepare |
Knowledge base hazırla |
GET |
/status |
İşlem durumu |
POST |
/chat |
Soru sor |
GET |
/knowledge-status |
KB istatistikleri |
DELETE |
/reset |
KB temizle |
- Drag & drop dosya yükleme
- Real-time progress bar
- Chunking/Embedding/Indexing görselleştirmesi
- Modern dark theme
- Source citation
- Agent thought process panel
- Fork the repo
- Create feature branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing) - Open Pull Request
MIT License - Detaylar için LICENSE dosyasına bakın.
⭐ Bu projeyi beğendiysen yıldız vermeyi unutma! ⭐
Made with ❤️ by [Hasan Uslu]