
Merhaba!
Bu yazı serisinde sizlerle, yapay zeka dünyasında adını sıkça duyduğumuz RAG (Retrieval-Augmented Generation) mimarisini birlikte inceleyeceğiz.
Yapay zeka ekosistemi öylesine hızlı gelişiyor ki, çoğu zaman bir teknolojiyi tam sindiremeden bir yenisiyle karşılaşıyoruz. Ben de bu bilgi yoğunluğu içinde zaman zaman yönümü kaybettiğimi hissediyorum. İşte bu yüzden, öğrendiklerimi sistematik ve sade bir şekilde derleyip üç bölüm hâlinde sizlerle paylaşmak istedim.
Bu seri, hem kendi öğrenme sürecimin bir parçası hem de aynı yolda ilerleyenlere yol gösterici olabilecek bir kaynak niteliği taşıyor.
Şimdi gelin, RAG mimarisi nedir ve neden bu kadar önemli hale geldi? sorusuyla başlayalım.
Yazı Serisinin Bölümleri
1. Bölüm:
- RAG'e Neden İhtiyaç Duyarız?
- LLM Davranış Biçimlendirme
- RAG Mimarisi
2. Bölüm:
- Embedding Modelleri
- Vektör Veri Tabanları
- Semantik Arama
3. Bölüm:
- İleri Düzey RAG

Neden İhtiyaç Duyuyoruz?
Büyük dil modelleri (LLM'ler), eğitim sürecinde internet üzerindeki devasa miktarda veriden beslenerek oluşturulurlar. Her tür içerik — doğru, yanlış, güncel ya da eski — bu verilerin içindedir. Bu veri çeşitliliği sayesinde model çok yönlü hale gelir, fakat aynı zamanda bazı zorlukları da beraberinde getirir.
Eğitim süreci tamamlandıktan sonra, bu modeller artık yeni bilgi öğrenemezler. Biz modele bir soru sorduğumuzda, her ne kadar detaylı promptlarla (komutlarla) yönlendirmeye çalışsak da, bazen tatmin edici veya doğru bir cevap alamayabiliriz. İşte tam bu noktada bazı sıkıntılar ortaya çıkar.
Halüsinasyon (Yanıltıcı Bilgi Üretme)
Model, eğitim sırasında gördüğü bilgilerin hangisinin güvenilir veya doğru olduğunu bilemez. Çünkü bu onun doğasında yoktur. Görevi; cümle içindeki bağlama ve önceki kelimelere bakarak, bir sonraki kelimeyi olasılıksal olarak tahmin etmektir. Bu da zaman zaman var olmayan bilgiler uydurmasına neden olabilir. İşte buna "halüsinasyon" diyoruz.
Dil modellerinde halüsinasyon, şu an için kaçınılmaz bir durum. Literatürde bu problem "modelin kalıcı zorluğu" olarak da geçiyor. (Tabii ileride teknoloji gelişip modeller daha hassas hale gelirse, belki bu durum da çözülebilir.)
Araştırmalarda odak noktası artık modelin halüsinasyon üretip üretmediğini anlayabilmek üzerine yoğunlaşmış durumda. Yani sadece çıktıyı üretmek değil, aynı zamanda bu çıktının güvenilir olup olmadığını da sorgulamak gerekiyor.
Literatürde halüsinasyonun tespiti için birçok farklı teknik ve yöntem var. Bir sonraki bölümde, bu tekniklerden popüler olanlara kısaca değinip, avantaj ve dezavantajlarını birlikte inceleyelim.
LogProbability
Araştırmacılar, 3400 adet gerçek ve uydurma çeviri örneğini manuel olarak etiketleyerek bir çalışma yürütmüşler. Modelin verdiği yanıtlarda LogProbability değerleri incelenmiş. Gözlemlenen şu:
- Modelin uydurma (halüsinatif) çevirilerinde log olasılık değerleri daha düşük,
- Emin olduğu doğru çevirilerde ise log değerleri daha yüksek çıkmış.
Bu da log olasılığın, modelin verdiği cevaba ne kadar güvendiğini ölçmekte kullanılabileceğini gösteriyor.
G-Eval
G-Eval, GPT-4 gibi büyük dil modellerini değerlendirici olarak kullanıyor.
- Düşünce zinciri (Chain of Thought — CoT) ve form doldurma yöntemleriyle çalışıyor.
- Her çıktıyı adım adım analiz ederek 1–5 arası puanlar veriyor.
- İnsan benzeri gerekçeler sunabilmesi büyük avantaj.
Ancak:
- Sadece kapalı alan (closed-domain) halüsinasyonlarını tespit edebiliyor.
- Yüksek işlem maliyeti nedeniyle verimli değil.
SelfCheckGPT
Bu yöntem, modelin verdiği cevabı birden fazla kez üreterek kendi iç tutarlılığını ölçmeye çalışıyor.
- Aynı konuda farklı cevaplar veriyorsa, bu çelişkiler halüsinasyon olasılığını artırıyor.
- BERTScore, MQAG ve NGram gibi tekniklerle benzerlik ve tutarlılık analizleri yapılıyor.
Avantajı:
- Güçlü sonuçlar verebilir.
Dezavantajı:
- Yüksek maliyetli çalışır.
- Sadece açık alan (open-domain) halüsinasyonlarını tespit edebilir.
ChainPoll
ChainPoll, hem açık hem kapalı alan halüsinasyonlarını tespit edebilen güçlü bir yöntemdir.
- İki farklı modla çalışır:
- ChainPoll-Doğruluk → Açık alan halüsinasyonları
- ChainPoll-Adherence → Kapalı alan halüsinasyonları
G-Eval'e göre:
- Daha doğru
- Daha hızlı
Ayrıca, RealHall adlı benchmark setiyle yapılan testlerde rakiplerine kıyasla çok daha iyi performans göstermiştir.
Manipülasyon
Büyük dil modelleri yalnızca eğitildikleri veri kümeleri üzerinden bilgi üretir. Ancak bu veri kümeleri kusursuz değildir. İçerdiği yanlış bilgiler, önyargılar ya da eksiklikler, doğrudan modelin çıktısına da yansır.
Bu da manipülasyona açık bir yapı ortaya çıkarır. Yani, model aslında doğru bildiği yanlışları size aktarabilir. Bu durumun kaynağı modelin kendisi değil, beslendiği veridir.
Dezenformasyon
Bazen model bize doğrudan yanlış ya da yanıltıcı bilgi sunabilir. Neden mi?
Çünkü LLM'ler, yalnızca geçmişteki verilere dayanarak çalışır. Eğer bu geçmiş bilgi yanlı, eksik ya da hatalıysa; modelin çıktısı da büyük ihtimalle öyle olacaktır.
Bu noktada farkında olmadan dezenformasyon yayabiliriz. Bu yüzden, LLM tabanlı sistemleri kullanırken her zaman bir kontrol mekanizması şart.
Güncellik
Büyük dil modelleri, belirli bir tarihe kadar olan veriyle eğitilir. Eğitimden sonra yaşanan gelişmeleri doğal olarak bilemezler.
Yani modelin, "şu an ne oluyor" sorusuna vereceği yanıt, o anla değil, eğitildiği dönemdeki bilgilerle sınırlı olacaktır. Bu da özellikle güncel olaylar, değişen bilgiler ya da anlık gelişmelerde modelin yetersiz kalmasına yol açar.
LLM Davranış Biçimlendirme: Yapay Zekaya Karakter Vermek

Hayal et: Herkesin kendine özel bir yapay zekası var. Senin giyinme tarzını bilen, hangi yemekleri sevdiğini anlayan, ruh haline göre seni yönlendiren bir asistan… Oldukça cezbedici, değil mi?
Bu fikir aslında o kadar da uzak değil. Ancak burada performans ile maliyet arasında ciddi bir denge kurulması gerekiyor. Bir dil modelinin davranışlarını şekillendirmek için farklı seviyelerde müdahale yöntemleri bulunuyor. Gelin, bu yöntemleri görseldeki gibi bir piramit yapısı içerisinde adım adım inceleyelim:
Model Training | Model Eğitimi
Bu en alt seviye, yani temelden başlayarak bir model eğitme süreci. Ancak bu işlem yüksek maliyet, büyük veri setleri ve uzmanlık gerektiriyor. Bu nedenle son kullanıcılar için pek ulaşılabilir bir yöntem değil.
Fine-Tuning | İnce Ayar
Modelin bilgi seviyesini değil, davranış biçimini yeniden yönlendirmek istiyorsanız burası devreye giriyor. Fine-tuning, belirli bir alan veya görev için modelin özelleştirilmesini sağlar. Örneğin yalnızca hukuki metinlerle eğitilen bir LLM, bu alanda daha uzmanlaşmış cevaplar verir.
RAG | Bellek Genişletme (Retrieval Augmented Generation)
Piramitin orta katmanında yer alan RAG, kaynak ve uzmanlık ihtiyacını dengeleyerek optimal bir çözüm sunar. RAG, dış bilgi kaynaklarına bağlanarak modele gerçek zamanlı bilgi sağlar. Hem güncellik sorununu aşar hem de davranış biçimlendirmede esneklik sunar.
Prompt Engineering | Girdi Mühendisliği
Modeli eğitmeden ya da ince ayar yapmadan, yalnızca nasıl soru sorduğunuzla modelin davranışını etkileyebilirsiniz. İşte prompt mühendisliği tam olarak bunu sağlar. Doğru bir şekilde yapılandırılmış bir prompt ile, modelden daha doğru, bağlama uygun ve etkili yanıtlar almak mümkündür. Bu alan başlı başına bir araştırma konusudur ve uygulamalı örneklerle ustalık kazanılabilir.
GENEL MİMARİ
Elde edilen veriler, bölümleme işlemi ile alt parçalara ayrılır. Verilerin nasıl bölüneceğini, ileri düzey RAG yazımızda detaylıca inceleyeceğiz. Bu döküman kesitleri, embedding modellerinin yardımıyla vektörleştirilir. Vektörizasyon işlemi, herhangi bir yapay zeka ya da makine öğrenmesi modelinin metinlerle doğrudan çalışamayacağını göz önünde bulundurarak yapılır; çünkü metinler, sayısal verilere dönüştürülmeden işlenemezler. Burada, N adet döküman kesitimiz var ise, N adet vektör oluşacaktır. Her bir döküman kesiti, bir vektöre dönüştürülür.
Peki, bir metin döküman kesiti nasıl vektöre dönüştürülür? Bu konuyu, yazının uzunluğunu kısaltmak adına, diğer "Part-2" yazımızda detaylıca ele alacağız.
Şimdi, elimizde N adet vektör var. Bu vektörleri, yapay zeka modelinin sorgulamalara uygun bir yapıya dönüştürmek ve depolamak için vektör veritabanlarına ihtiyaç duyarız. Bu veri tabanlarının, klasik veri tabanlarından bazı önemli farkları vardır. Bu farklar, veri depolama türleri ve arama yöntemleri ile ilgilidir. İndeksleme, düzensiz bir şekilde yer alan bu vektörleri sorgulanabilir, listelenebilir bir hale getirir. Böylece, veri tabanında bu vektörler ile daha rahat bir iletişim kurmak mümkün olur.
Popüler vektör veritabanları, indeksleme ve arama başlıklarına dair detayları, diğer yazımızda inceleyeceğiz.
Kullanıcı girdisini de, tıpkı döküman kesitlerine yaptığımız gibi, bir embedding modeli yardımıyla bir vektöre dönüştürürüz (Vektör X). RAG'nin amacı, kullanıcı girdisi ile döküman arasında bir uyum oluşturmaktır. Vektör veritabanında depoladığımız döküman vektörlerinin, kullanıcı promptu vektörü ile en uyumlu olmasını hedefleriz. Peki, burada uyum dediğimiz kavram nedir ve bu uyumu nasıl matematiksel olarak tespit ederiz? Bu soruya yanıt ararken, semantik arama yöntemlerine başvururuz. Semantik arama, oldukça geniş bir alanı kapsar. Biz, burada vektör karşılaştırması ile arama yapacağız. Vektör X'imizi, veritabanındaki her döküman vektörü ile tek tek karşılaştıracağız.
Bu konuyu, RAG Notlarım-2'de daha detaylı olarak ele alacağız.
Meta Prompt bölümüne, LLM modelimize "Elimde böyle bir bilgi var, şimdi sana soracağım soru için bu bilgileri kullan" diyerek final promptumuzu oluştururuz. Vektör sorgusundan gelen, en çok benzeyen K adet döküman kesiti ile birlikte, LLM için final promptuna eklemeler yapılır. Son olarak, final promptumuzu LLM dil modeline gönderir ve yanıtımızı alırız.
Part 2'de görüşmek üzere…
Linkedin: https://www.linkedin.com/in/serkanyasar/