Şirket içi dokümanlar (Confluence, PDF, wiki) üzerinde soru cevaplayan bir RAG sistemi tasarlayın.
Cevap
RAG (Retrieval-Augmented Generation), soruyla ilgili doküman parçalarını bulup LLM'e bağlam olarak vererek cevabı bu kaynaklara dayandırma yaklaşımıdır. Tasarım iki pipeline'dan oluşur: indexing (offline) ve query (online).
1. Indexing pipeline
- Ingestion: Confluence, Drive, PDF connector'ları. Değişen dokümanlar için incremental senkronizasyon.
- Parsing: PDF'lerde tablo ve başlık yapısını koruyan parser'lar. OCR gerekebilir.
- Chunking: Başlık/bölüm yapısına göre bölme (yapısal chunking), tipik olarak 300–800 token, %10–20 overlap. Her chunk'a doküman başlığı ve bölüm yolu eklenir (contextual chunking).
- Metadata: Kaynak URL, tarih, departman, erişim yetkisi (ACL).
- Embedding: Çok dilli (Türkçe destekli) bir embedding modeli.
- Index: Vector DB (pgvector, Qdrant, Weaviate, OpenSearch) + BM25 için keyword index.
2. Query pipeline
- Query işleme: Sohbet geçmişine göre soruyu bağımsız hale getirme (query rewriting), gerekirse alt sorulara bölme.
- Hybrid retrieval: Dense (embedding) + sparse (BM25) arama, sonuçlar Reciprocal Rank Fusion ile birleştirilir. Ürün kodu, hata kodu gibi tam eşleşmelerde BM25 kritiktir.
- Yetki filtresi: Kullanıcının göremeyeceği dokümanlar retrieval aşamasında filtrelenir. Prompt'a "gösterme" demek güvenlik değildir.
- Reranking: İlk 50 aday bir cross-encoder reranker ile yeniden sıralanır, en iyi 5–10 tanesi alınır.
- Generation: "Sadece verilen kaynaklara dayan, yoksa bilmediğini söyle, her iddia için kaynak göster" talimatı. Cevapta citation linkleri.
Kullanıcı -> query rewrite -> [BM25 + vector] -> RRF -> ACL filtresi -> reranker -> top-k
-> LLM (kaynaklı prompt) -> cevap + citation -> log + feedback3. Değerlendirme
- Retrieval metrikleri: Recall@k, MRR, nDCG. Etiketli soru-doküman çiftlerinden oluşan bir golden set ile.
- Generation metrikleri: Faithfulness (cevap kaynaklarla destekleniyor mu), answer relevance, context precision. RAGAS gibi araçlar ve LLM-as-judge.
- Production'da kullanıcı geri bildirimi (beğeni/beğenmeme) ve "cevap bulunamadı" oranı.
4. Production konuları
Embedding modeli değişirse tüm index yeniden oluşturulmalı (versiyonlama). Eski/çelişen dokümanlar için tarih bazlı önceliklendirme. Sık sorular için cache. PII maskeleme. Gecikme bütçesi (retrieval + rerank + generation).
İlgili LLM & Üretken YZ soruları
- RAG'de chunking stratejisi, hybrid search ve reranker neden önemlidir? Retrieval kalitesi düşükse ne yaparsınız?
- Hangi prompt engineering tekniklerini kullanırsınız? Few-shot ve chain-of-thought ne zaman işe yarar?
- LLM'lerde temperature, top-k ve top-p (nucleus) sampling parametreleri ne işe yarar?
- Production'daki bir LLM uygulamasında maliyeti ve gecikmeyi (latency) nasıl düşürürsünüz?
- Prompt injection nedir? LLM tabanlı bir uygulamayı ve agent'ı buna karşı nasıl korursunuz?
- Bir LLM uygulamasını nasıl değerlendirirsiniz? Benchmark'lar ve LLM-as-judge yaklaşımının sınırlamaları nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.