Yerel-PDF-RAG: Kaynak Gösteren PDF Soru-Cevap Sistemi
Yüklediğin PDF'lere Türkçe soru sorabildiğin, her cevabı belge ve sayfa numarasıyla kaynak göstererek veren, tamamen kendi bilgisayarında çalışan bir RAG uygulaması.
- Doğruluk (bulut modeli)
- %74 → %93
- Kritik hata
- 3 → 0
- Fakülte takvimi soruları
- 0/6 → 5/6
- Yerel yanıt süresi
- ~4 sn

Problem
Uzun yönetmelikler, akademik takvimler ve raporlar içinde aranan bilgiyi bulmak zaman alıyor. Genel amaçlı yapay zekâ sohbet araçları ise belgede olmayan bilgiyi uydurabiliyor ya da cevabın nereden geldiğini göstermiyor.
Bu sistem yalnızca yüklenen belgelere dayanarak cevap veriyor, her iddianın kaynağını belge ve sayfa olarak gösteriyor; bilgi belgede yoksa açıkça "bilgi yok" diyor. Yerel sürümde belgeler bilgisayardan hiç çıkmıyor.
Yaklaşım
- Çıkarım. PDF'ler kelime konumlarıyla okunuyor. İki sütunlu sayfalar, sayfalarda tekrar eden üst/alt bilgiler ve çizgisiz tablolar ayrıca ele alınıyor. Tablo satırları "Etiket | Sütun: değer" biçimine çevrilerek modelin anlayacağı hale getiriliyor.
- Hibrit arama. Türkçe köklemeli kelime araması (BM25) ile anlamsal arama (e5 embedding) RRF ile birleştiriliyor. Takip sorularında önceki sorunun bağlamı korunuyor.
- Cevap üretimi. Tek bir model çağrısı yapılıyor. Çıktı JSON şemasıyla zorunlu kılınıyor (cevaplandı / bilgi yok / açıklama iste) ve kaynak kimlikleri doğrulanıyor. Token bütçesi modelin kendi tokenizer'ıyla hesaplanıyor.
- Ölçümle geliştirme. Ayrı geliştirme, doğrulama ve kabul soru setleri hazırlandı; arama ve cevap kalitesi ayrı ayrı ölçüldü. Yalnızca genel hata sınıflarını hedefleyen değişiklikler kabul edildi, tek bir soruya ya da belgeye özel düzeltme yapılmadı. Daha önce görülmemiş belgelerle temiz testler yapılarak skorların iyimser olup olmadığı denetlendi.
Yerel sürüm Ollama ile Qwen3.5 4B üzerinde çalışıyor; canlı sürümde Groq API (Qwen3.8 27B), Docker ve Hugging Face Spaces kullanılıyor.
Öne çıkan özellikler
- Numaralı kaynaklar; tıklanınca ilgili PDF sayfası yan panelde açılıyor.
- Cevap kelime kelime akarak geliyor (SSE).
- Cevabı belgede olmayan sorularda uydurmuyor, "bilgi yok" diyor.
- Çok tablolu belgeler destekleniyor: aynı satır adları farklı birim tablolarında tekrar etse bile hangi birime ait olduğu korunuyor. Örneğin fakülte bazlı akademik takvim sorularında doğruluk 0/6'dan 5/6'ya çıktı.
- Yerel sürüm 4 GB GPU'lu bir dizüstünde ortalama 4 saniyede cevap veriyor ve internetsiz çalışıyor.
- Model sağlayıcısı ayarlardan seçilebiliyor (yerel Ollama ya da bulut API). Aynı test setlerinde bulut modeli (27B) doğruluğu %74'ten %93'e çıkardı, kritik hataları 3'ten 0'a indirdi; cevaplar 1 saniyenin altında geliyor.
Öğrendiklerim
- Hataların çoğu modelden değil, çıkarım ve aramadan geliyor. RAG'de hata ayıklarken çıkarım → arama → model sırasını izlemek çok zaman kazandırdı.
- Küçük modellerde istem değişikliği hatayı yalnızca taşıyor. 4B modelde istem (prompt) değişiklikleri genelde bir hatayı başka bir yere taşıyordu; kod tabanlı, ölçülmüş düzeltmeler çok daha güvenilir sonuç verdi.
- Aynı sorularla tekrar tekrar test etmek skoru iyimser gösteriyor. Görülmemiş belgelerle temiz test yapmanın ve başarısızlıkları dürüstçe raporlamanın önemini öğrendim.
- Yerel ve bulut arasında denge kurmak. Maliyet, hız, gizlilik ve kota arasındaki dengeyi kurmayı öğrendim (ör. sıfır veri saklama ayarı, ücretsiz katman limitleri).
Sıradaki proje
Tüm projelere dön
Staj Otomasyonu
Öğrenci, komisyon, KPTO ve şirket arasındaki staj süreçlerini başvurudan nihai değerlendirmeye kadar tek platformda yöneten web uygulaması.
- C#
- ASP.NET Core MVC (.NET 10)
- Entity Framework Core
- ASP.NET Core Identity