Skip to content

hasanusluu/AgenticRAG-OnboardAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 AgenticRAG-OnboardAI

Intelligent Project Onboarding Assistant

Python FastAPI LangChain LangGraph MongoDB

Yeni geliştiricilerin projeleri hızlıca anlamasını sağlayan akıllı RAG sistemi

🚀 Quick Start📚 Özellikler🔧 Tech Stack🤖 Agentic Nedir?


🤔 Problem

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

💡 Çözüm

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!)

🆚 Normal RAG vs Agentic RAG

Bu proje basit RAG değil, Agentic RAG!

Normal RAG (Basit)

Soru → Ara → Cevapla
  • Tek arama yapar
  • "Yeterli mi?" kontrolü yok
  • Karmaşık sorularda başarısız

Agentic RAG (Bu Proje! 🔥)

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!

🔄 Agentic RAG Akışı

                    ┌──────────────┐
                    │    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      │
       └──────────────┘

💬 Gerçek Dünya Örneği

Soru: "Bu projede authentication nasıl çalışıyor ve hangi database kullanılıyor?"

Normal RAG:

🔍 Arama: "authentication database"
📄 5 sonuç bulundu
✍️ Cevap üretiliyor...
❌ Eksik veya yanlış cevap riski yüksek!

Agentic RAG (Bizim Sistem):

🗣️ [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ı.

🔧 Tech Stack

Backend

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

Frontend

Teknoloji Kullanım
HTML5 Yapı
CSS3 Premium dark theme
JavaScript Interaktivite

☁️ Cloud-Native Mimari

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     │   │
│                                        └─────────────────────┘   │
│                                                                   │
└─────────────────────────────────────────────────────────────────┘

Neden Cloud?

Özellik Lokal Cloud (Bizim)
Ölçeklenebilirlik ❌ Disk sınırlı ✅ Sınırsız
Yedekleme ❌ Manuel ✅ Otomatik
Erişilebilirlik ❌ Tek cihaz ✅ Her yerden
Performans ⚠️ Değişken ✅ Optimize edilmiş
Vector Search ❌ Yavaş ✅ Atlas Search (hızlı!)

Kullanılan Cloud Servisleri

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

✂️ Akıllı Chunking Stratejileri

Bu proje tek tip chunking kullanmaz! Dosya türüne göre 4 farklı strateji uygular:

1️⃣ AST-based Chunking (Kod Dosyaları)

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)

2️⃣ Header-based Chunking (Markdown)

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

3️⃣ Structure-based Chunking (Config)

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

4️⃣ Semantic Chunking (Text/PDF)

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

🧮 Akıllı Embedding Stratejisi

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

📁 Proje Yapısı

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

🚀 Quick Start

1. Clone & Install

git clone https://github.com/hasanuslu/AgenticRAG-OnboardAI.git
cd AgenticRAG-OnboardAI/backend
pip install -r requirements.txt

2. Configure

# .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-rag

3. Run Backend

python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

4. Open Frontend

# Tarayıcıda aç
start frontend/index.html

🔌 API Endpoints

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

📸 Screenshots

Upload & Processing

  • Drag & drop dosya yükleme
  • Real-time progress bar
  • Chunking/Embedding/Indexing görselleştirmesi

Chat Interface

  • Modern dark theme
  • Source citation
  • Agent thought process panel

🤝 Katkıda Bulunma

  1. Fork the repo
  2. Create feature branch (git checkout -b feature/amazing)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing)
  5. Open Pull Request

📄 Lisans

MIT License - Detaylar için LICENSE dosyasına bakın.


⭐ Bu projeyi beğendiysen yıldız vermeyi unutma! ⭐

Made with ❤️ by [Hasan Uslu]

Releases

No releases published

Packages

No packages published