RAG (Retrieval-Augmented Generation)
Alternatif isimler: retrieval augmented generation, retrieval augmented
Modelin cevap üretirken kendi belge tabanınızdan ilgili pasajları getirip kullandığı yaklaşımdır.
RAG; bir kullanıcı sorusunu önce vektör veritabanında ararken (embedding tabanlı), bulunan pasajları prompt'a ekler ve modelin cevabı bu kaynaklara dayanarak üretmesini sağlar. Halüsinasyonu azaltır, modelin bilmediği güncel bilgileri kullanmasına izin verir ve kaynak gösterimini kolaylaştırır.
Pratikte; chunk boyutu, embedding kalitesi ve "context window" yönetimi RAG performansını belirler. İyi bir RAG sistemi: belgeleri 200-500 token'lık parçalara böler, her parçayı embedding modeliyle vektöre çevirir, vektör veritabanına yazar (Pinecone, Weaviate, pgvector), kullanıcı sorusunu da aynı modelle vektöre çevirip kosinüs benzerliği ile en yakın 3-10 parçayı bulur ve bunları prompt'a ekler.
Yeni nesil yaklaşımlar (örneğin reranking, hybrid search ve query rewriting) klasik vektör aramayı yüksek doğrulukla tamamlar.
Örnek prompt
RAG promptu iskeleti
Aşağıdaki kaynaklara dayanarak kullanıcı sorusunu yanıtla. Kaynaklarda olmayan bilgiyi tahmin etme; "Kaynaklarda bu bilgi yok" de.
KAYNAKLAR:
[1] {{chunk1}}
[2] {{chunk2}}
[3] {{chunk3}}
SORU: {{question}}Sık yapılan hatalar
- Çok büyük chunk'lar; modelin doğru pasajı bulmasını zorlaştırır.
- Embedding modeli ile arama dilini eşleştirmemek; Türkçe sorularda İngilizce embedding düşük performans verir.
- Reranking yapmadan ilk N pasajı doğrudan prompt'a koymak; gürültü artar.
Sıkça sorulan sorular
RAG fine-tuning yerine ne zaman tercih edilir?
Bilgi sık güncelleniyorsa, kaynak gösterimi gerekiyorsa ve hızlı yinelemek istiyorsanız RAG çok daha uygundur. Fine-tuning ton ve format öğrenmesi için daha güçlüdür.
RAG için hangi vektör veritabanı seçmeli?
Postgres zaten kullanıyorsanız pgvector pratiktir. Ölçek büyüdükçe Pinecone, Weaviate veya Qdrant değerlendirilir.