İçeriğe atla
Kadir Girici
Tüm projelere dön

Foundry Local RAG

Microsoft Foundry Local ile tamamen offline çalışan bir RAG sistemi; retrieval benzerlik eşiği (0.35) sayesinde LLM'e gitmeden hallüsinasyonu engeller.

2026Test 10/10Offline 100%

Problem

Bir dokümanı yapay zekâya sorup gelen cevaba güvenmek istediğimde iki engel çıkıyordu. Birincisi gizlilik: kurumsal bir raporu buluttaki bir modele göndermek çoğu gerçek senaryoda kabul edilebilir değil. İkincisi halüsinasyon, yani modelin aslında bilmediği bir şeyi biliyormuş gibi uydurması.

Bu asistanı, iki sorunu da ele almak için tamamen internetsiz çalışacak biçimde kurdum. Test alanı olarak soğuk zincir ve soğutma konulu bir raporu seçtim. Teknik ve dar kapsamlı bir metin, modelin bildiği alanın dışına çıkıp çıkmadığını net gösteriyor.

Yaklaşım

Sistemi iki aşamaya böldüm. İndeksleme aşamasında PDF metne çevriliyor, yaklaşık 200 kelimelik parçalara bölünüyor ve parçalar arasında 30 kelimelik örtüşme bırakıyorum ki cümleler ortadan kesilmesin. Her parçayı qwen3-embedding-0.6b ile vektöre çeviriyor ve SQLite içinde float32 olarak saklıyorum. Böylece ayrı bir vektör veritabanına ihtiyaç kalmıyor.

Sorgu aşamasında kullanıcının sorusunu aynı modelle vektöre çevirip saklı vektörlerle kosinüs benzerliği hesaplıyorum. Kritik karar burada: en yakın eşleşmenin skoru 0.35'in altındaysa sistem soruyu modele hiç göndermeden cevap vermeyi reddediyor. Skor yeterliyse ilgili parçaları phi-3.5-mini modeline verip cevabı bu parçalara dayandırıyorum. Modelleri Microsoft Foundry Local üzerinde çalıştırdım. Arayüz olarak hem Streamlit hem komut satırı var, PDF çıkarımını pdfplumber ile yaptım.

Sonuç

On soruluk bir sette sistemi denedim ve onunda da beklediğim davranışı verdi. Kapsam içindeki altı soruyu, benzerlik skorları 0.58 ile 0.73 arasında, doğru cevapladı. Kapsam dışındaki dört soruyu, skorları 0.17 ile 0.26 arasında, reddetti.

En önemli bulgu eşikle ilgiliydi. Benzerlik kontrolünü modele gitmeden önce yapmak, prompt içinde "bilmiyorsan uydurma" demenin tek başına durduramadığı halüsinasyonları durdurdu. Yani engeli talimat katmanına değil, retrieval katmanına koymak işe yaradı.

Sınırları da açık. CPU üzerinde cevap başına yaklaşık 40 saniye sürüyor. Çok kolonlu veya kutulu PDF bölümlerinde metin çıkarımı zaman zaman bozuk parçalar üretiyor. Küçük embedding modeli belirli sayısal değerlerde yer yer eksik cevap veriyor. Sistem İngilizce için optimize; diller arası performans belirgin biçimde düşüyor.

Öğrendiklerim

Küçük ve yerel modellerle bile, doğru retrieval tasarımıyla güvenilir bir soru-cevap sistemi kurulabiliyor. Halüsinasyonu engellemenin en sağlam yolu modele daha iyi talimat vermek değil, cevap üretimini bir eşik kuralına bağlamak oldu. Bir sonraki adımda PDF çıkarımını ve embedding kalitesini iyileştirmek, sayısal sorulardaki eksik cevapları azaltacaktır.

Cold Chain Assistant arayüzü: soru-cevap ve kaynak pasajları benzerlik skorlarıyla

Stack

Python · Foundry Local · phi-3.5-mini · qwen3-embedding · SQLite · Streamlit

Linkler