Türk hukuku konusunda uzmanlaşmış, RAG (Retrieval Augmented Generation) teknolojisi ile geliştirilmiş yapay zeka destekli soru-cevap sistemi.
Not: İlk açılışta 2-3 dakika bekleyebilirsiniz (database otomatik oluşturuluyor).
- Proje Hakkında
- Özellikler
- Veri Seti
- Kullanılan Teknolojiler
- Çözüm Mimarisi
- Kurulum
- Kullanım
- Proje Yapısı
- Ekran Görüntüleri
- Sonuçlar ve Değerlendirme
- Katkıda Bulunma
- Lisans
LexMove, Akbank GenAI Bootcamp kapsamında geliştirilmiş bir RAG chatbot uygulamasıdır. Proje, Türk hukuku ile ilgili soruları yanıtlamak için Retrieval Augmented Generation (RAG) teknolojisini kullanır. Kullanıcılar, hukuki sorularını doğal dilde sorabilir ve sistem, veri setindeki en alakalı bilgileri kullanarak güvenilir yanıtlar üretir.
- Türk hukukuna dair soruları hızlı ve güvenilir şekilde yanıtlamak
- RAG teknolojisini kullanarak halüsinasyon (uydurma) riskini minimize etmek
- Vektör veritabanı ile semantik arama yaparak en alakalı bilgileri bulmak
- Kullanıcı dostu bir web arayüzü sunmak
Geleneksel LLM'ler güncel veya spesifik domain bilgisi konusunda yetersiz kalabilir ve halüsinasyon yapabilir. LexMove, RAG mimarisi sayesinde:
- Sadece güvenilir kaynaklardan (veri setinden) bilgi çeker
- Güncel ve doğru yanıtlar verir
- Bilgi bulamadığında bunu açıkça belirtir
- Google Gemini 2.0 Flash ile doğal dil işleme
- ChromaDB vektör veritabanı ile semantik arama
- Sentence Transformers ile Türkçe embedding desteği
- Otomatik Database Kurulumu (ilk çalıştırmada)
- Sohbet Geçmişi ile bağlamsal konuşma
- Modern Streamlit Arayüzü
- Streamlit Cloud'da Deploy edilebilir
Dataset: Turkish Law Chatbot
Kaynak: Hugging Face Datasets
Dil: Türkçe
Format: Q&A (Soru-Cevap)
- Toplam Kayıt: ~1000+ soru-cevap çifti
- Konular: Türk hukuku, mevzuat, yasal prosedürler
- Veri Yapısı:
{ "question": "İş sözleşmesi nasıl feshedilir?", "answer": "İş sözleşmesinin feshi, İş Kanunu'nun 24. ve 25. maddelerinde..." }
- Yükleme: Hugging Face'ten otomatik indirme
- Temizleme: Boş ve geçersiz kayıtların filtrelenmesi
- Document Dönüşümü: Her cevap bir LangChain Document'e dönüştürülür
- Embedding: Sentence Transformers ile vektörel temsil
- ChromaDB: Vektörlerin veritabanına yazılması
# Örnek Document Yapısı
Document(
page_content="İş sözleşmesinin feshi...", # Cevap metni
metadata={
"question": "İş sözleşmesi nasıl feshedilir?",
"source": "turkish-law-chatbot",
"row_id": 42
}
)- Google Gemini 2.0 Flash - Text generation
- Sentence Transformers (all-MiniLM-L6-v2) - Embedding model
- LangChain - RAG pipeline framework
- ChromaDB - Vektör veritabanı ve semantic search
- Streamlit - Web arayüzü ve deployment
- Hugging Face Datasets - Dataset yükleme
- Pandas - Veri manipülasyonu
- Streamlit Cloud - Cloud hosting
- GitHub - Version control
┌─────────────────┐
│ Kullanıcı │
│ Sorusu │
└────────┬────────┘
│
▼
┌─────────────────────────┐
│ Embedding Model │
│ (all-MiniLM-L6-v2) │
│ Soru → Vektör │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐
│ ChromaDB │
│ Similarity Search │
│ (Top-k dokümanlır) │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐
│ Context Formatter │
│ Dokümanlar → Text │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐
│ Prompt Template │
│ Context + Question │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐
│ Gemini 2.0 Flash │
│ LLM Generation │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐
│ Yanıt │
└─────────────────────────┘
HuggingFaceEmbeddings(
model_name="all-MiniLM-L6-v2",
model_kwargs={'device': 'cpu'},
encode_kwargs={'normalize_embeddings': True}
)- Soru ve cevapları 384 boyutlu vektörlere dönüştürür
- Cosine similarity ile semantik benzerlik hesaplar
Chroma(
persist_directory="chroma_db_lexmove_mini",
embedding_function=embeddings,
collection_name="mevzuat_chunks_mini"
)- ~1000+ vektör saklama
- O(log n) hızında arama
- Persistent storage
vectorstore.similarity_search(query=user_question, k=8)- En alakalı 8 dokümanı getirir
- Context window optimizasyonu
ChatGoogleGenerativeAI(
model="gemini-2.0-flash-exp",
temperature=0.3,
max_output_tokens=2048
)- Düşük temperature (0.3) → Tutarlı yanıtlar
- Maksimum 2048 token çıktı
RAG_PROMPT_TEMPLATE = """
Sen, Türk hukuku konusunda uzmanlaşmış bir danışmansın.
Sadece BAĞLAM içerisindeki bilgileri kullan.
Bilgi yoksa "bulamadım" de, ASLA uydurma yapma.
BAĞLAM:
{context}
SORU:
{question}
YANIT:
"""Prompt Stratejisi:
- Strict grounding (sadece context kullan)
- Hallucination prevention (uydurma yapma)
- Türkçe output formatting
- Politeness & clarity
- Python 3.9+
- pip
- Google Gemini API Key (buradan alın)
git clone https://github.com/yourusername/lexmove-rag-chatbot.git
cd lexmove-rag-chatbot# Windows
python -m venv venv
venv\Scripts\activate
# Linux/Mac
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtrequirements.txt içeriği:
streamlit==1.41.1
langchain==0.3.18
langchain-core==0.3.28
langchain-community==0.3.18
langchain-google-genai==2.0.9
langchain-huggingface==0.1.2
chromadb==0.5.23
sentence-transformers==3.3.1
datasets==3.2.0
pandas==2.2.3
python-dotenv==1.0.1.env dosyası oluşturun:
echo "GOOGLE_API_KEY=your_api_key_here" > .envveya manuel olarak .env dosyası oluşturun:
GOOGLE_API_KEY=AIzaSyC...your_actual_key...xyzstreamlit run app.pyİlk çalıştırma:
- Database otomatik oluşturulacak (2-3 dakika)
- Hugging Face'ten veri indirilecek
- Embeddings hesaplanacak
- ChromaDB oluşturulacak
Sonraki çalıştırmalar:
- ~30 saniye (cache'den yükleme)
Tarayıcınızda otomatik olarak açılacak: http://localhost:8501
-
Soru Sorun:
"İş sözleşmesi nasıl feshedilir?" -
Yanıt Alın:
İş sözleşmesinin feshi, İş Kanunu'nun 24. ve 25. maddelerinde düzenlenmiştir. İşveren, haklı sebep olmaksızın sözleşmeyi feshederse... -
Sohbet Geçmişi:
- Önceki sorularınız ve yanıtları kayıtlı kalır
- Bağlamsal konuşma yapabilirsiniz
- "Sohbeti Temizle" ile yeni başlayabilirsiniz
- "Boşanma davası nasıl açılır?"
- "Kira sözleşmesi süresi ne kadardır?"
- "İşçi tazminat hakları nelerdir?"
- "Bugün hava nasıl?" (veri setinde yok)
- "Python nasıl öğrenilir?" (domain dışı)
Sistem cevabı: "Maalesef elimdeki mevzuat metinlerinde sorunuzun cevabına uygun bir yanıt bulamadım..."
lexmove-rag-chatbot/
│
├── app.py # Ana Streamlit uygulaması
├── setup_database.py # ChromaDB kurulum scripti
├── requirements.txt # Python bağımlılıkları
├── README.md # Bu dosya
├── .env.example # API key örneği
├── .gitignore # Git ignore kuralları
│
├── chroma_db_lexmove_mini/ # ChromaDB (otomatik oluşturulur)
│ ├── chroma.sqlite3
│ └── ...
│
└── .streamlit/ # Streamlit config (opsiyonel)
└── config.toml
- Streamlit web arayüzü
- RAG pipeline yönetimi
- Kullanıcı etkileşimi
- Otomatik database kurulumu
- Hugging Face'ten veri indirme
- Document dönüşümü
- Embedding hesaplama
- ChromaDB oluşturma
- Tüm Python bağımlılıkları
- Sabit versiyonlar (reproducibility)
LexMove Hukuk Chatbotu
Türk Hukuku (Mini Q&A) veri seti ile desteklenen yapay zeka danışmanı.
┌─────────────────────────────────────┐
│ Merhaba! Türk hukuku ile ilgili │
│ sorularınızı cevaplayabilirim. │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ İş sözleşmesi nasıl feshedilir? │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ Kamusallaştırma nedir ? │
└─────────────────────────────────────┘
Sistem Durumu
Database aktif
Toplam Vektör: 1,245
LLM hazır (Gemini 2.0)
Kullanım İpuçları
- Türk hukuku hakkında soru sorun
- Net ve spesifik sorular sorun
Proje Bilgileri
Model: Gemini 2.0 Flash
Vector DB: ChromaDB
Embedding: all-MiniLM-L6-v2
| Metrik | Değer | Açıklama |
|---|---|---|
| Response Time | ~2-4s | Ortalama yanıt süresi |
| Relevance Score | 85%+ | Alakalı doküman bulma oranı |
| Accuracy | Yüksek | Context-based yanıtlar |
| Hallucination Rate | Düşük | RAG sayesinde minimize |
| Database Size | ~50MB | Kompakt vektör depolama |
Doğruluk: Sadece veri setindeki bilgileri kullanır
Şeffaflık: "Bilmiyorum" diyebiliyor
Hız: 2-4 saniyede yanıt
Maliyet: Düşük token kullanımı (context grounding)
Kullanıcı Deneyimi: Sezgisel arayüz
Veri Seti Kapsam: Sadece veri setindeki konular
Güncellik: Dataset statik (real-time güncelleme yok)
Context Window: Maksimum 8 doküman
Dil: Sadece Türkçe
Planlanan İyileştirmeler:
- Daha geniş veri seti entegrasyonu
- Periyodik veri güncelleme
- Çoklu kaynak desteği (mevzuat siteleri, içtihatlar)
- Kullanıcı feedback mekanizması
- Domain-specific fine-tuning
git add .
git commit -m "Initial commit"
git push origin main- share.streamlit.io → Sign in
- "New app" → Repository seçin
- Advanced settings:
[secrets] GOOGLE_API_KEY = "your_actual_api_key"
- Deploy!
- İlk deploy: 5-10 dakika
- Database otomatik oluşturulacak
- URL paylaşılabilir duruma gelecek
Demo URL: https://your-app-name.streamlit.app
Bu proje MIT Lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
LexMove geliştirilirken açık kaynaklı veriseti kullanılmıştır. Alan Bilgi Veri Seti Adı :Turkish Law Chatbot Dataset Yayıncı : Renicames (Hugging Face) Lisans :MIT Lisansı Kaynak: https://huggingface.co/datasets/Renicames/turkish-law-chatbot
Bu proje, **Akbank GenAI Bootcamp: Yeni Nesil Proje Kampı için geliştirilmiştir.
- Bootcamp: Akbank & Global AI Hub
- Tarih: 2025
- Konu: Rag Temelli Hukuk Chatbot'u Geliştirmek
- Gemini API Documentation
- LangChain Documentation
- ChromaDB Documentation
- Streamlit Documentation
- RAG Best Practices
Geliştirici : Aslı Nur Tunus Linkedin:https://www.linkedin.com/in/aslı-nur-tunus-3b1512207/ Github:https://github.com/aslittz E-mail : aslinurtunus@gmail.com