Türkçe NLP etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Türkçe NLP etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

28 Kasım 2025 Cuma

RAG ile Türkçe Soru-Cevap Sistemi Kurma: Vektör Veritabanı, Yeniden Sıralama ve Prompt Tasarımı

RAG (Retrieval-Augmented Generation), büyük dil modellerinin (LLM) güncel ve alanınıza özel bilgilerle desteklenmesini sağlayan, üretken yapay zekâ projelerinde giderek standarda dönüşen bir yaklaşımdır. Bu yazıda, Türkçe odaklı bir doküman arama ve soru-cevap sistemini RAG mimarisiyle nasıl kurabileceğinizi; veri hazırlığından vektör veritabanına, yeniden sıralamadan (re-ranking) prompt tasarımına kadar adım adım anlatıyorum.

Amaç, kullanıcı sorusuna dayanarak şirket içi PDF’ler, politika metinleri, ürün katalogları veya destek dökümanları içinden ilgili pasajları bulmak ve LLM’nin yalnızca bu pasajları referans alarak doğru, denetlenebilir cevaplar üretmesini sağlamaktır. Böylece hem halüsinasyonları azaltır hem de cevaplara kaynak gösterebilirsiniz.

Mimari Özeti: RAG iki parçadan oluşur. Birincisi bilgi erişimi (retrieval): Belgeleri parçalayıp (chunking), vektörlerine dönüştürerek bir vektör veritabanına koyar ve sorguya en yakın aday pasajları getirir. İkincisi jenerasyon (generation): LLM, gelen pasajları bağlam olarak kullanıp nihai cevabı üretir. İsteğe bağlı üçüncü bir katman olan yeniden sıralama (re-ranking) ile en iyi adayları üst sıralara taşıyarak doğruluğu yükseltirsiniz.

1) Veri Toplama ve Temizleme: PDF, HTML, Word veya düz metin kaynaklarınızı tek bir havuzda toplayın. Başlık, bölüm, tarih ve izin seviyesi gibi meta verileri koruyun. OCR gerekiyorsa hatalı karakterleri düzeltin, tabloları metne uygun biçimde dönüştürün. Aynı belgenin eski sürümlerini işaretleyerek sürüm çakışmalarını engelleyin.

2) Parçalama (Chunking): Türkçe dilinde bağlamı korumak için paragraf temelli veya cümle temelli parçalama tercih edin. 400–800 token aralığı pratikte iyi sonuç verir; çok küçük parçalarda bağlam kaybolur, aşırı büyük parçalarda ise arama isabeti düşer. Kayma penceresi (overlap) 50–100 token aralığında seçildiğinde cümle bütünlüğü ve referanslar daha sağlam kalır.

3) Gömme (Embeddings) Seçimi: Çok dilli Sentence Transformers tabanlı modeller veya Türkçe uyumlu modern embedding modelleri tercih edin. Türkçe morfolojisi nedeniyle kök/ek varyasyonlarını iyi yakalayan çok dilli modeller pratikte güçlüdür. Vektörleri L2 normla normalize etmeniz kozinüs benzerliği için istikrar sağlar. Boyut (dimensionality) arttıkça isabet artsa da depolama ve gecikme maliyeti yükselir; üretim için 384–1024 aralığı dengelidir.

4) İndeksleme ve Vektör Veritabanı: FAISS ile lokal hızlı prototipleme yapabilir, üretimde Qdrant, Weaviate, Pinecone ya da Elasticsearch’ün yoğun vektör (dense) alanlarını kullanabilirsiniz. HNSW veya IVF-PQ gibi yaklaşık en yakın komşu (ANN) indeksleri gecikmeyi düşürür. Meta veri filtreleme (ör. dil, departman, tarih) ile hassas eşleşme yaparak alakasız sonuçları erkenden eleyin.

5) Hibrit Arama: Tek başına vektör benzerliği bazen anahtar kelime ağırlıklı soruları ıskalayabilir. BM25 + vektör aramayı birleştirerek iki dünyanın en iyisini alabilirsiniz. RRF (Reciprocal Rank Fusion) veya ağırlıklı skor birleştirme ile son aday listesini oluşturun. MMR (Maximal Marginal Relevance) kullanarak çeşitliliği artırın; böylece benzer pasajlar yerine farklı açılardan destekleyen pasajlar üst sıralara gelir.

6) Yeniden Sıralama (Re-ranking): İlk 50–200 adayı, küçük ama hassas bir çapraz-enkoder re-ranker modeliyle yeniden puanlayın. Re-ranker, sorgu ile pasaj arasındaki anlam ilişkisini derinlikli değerlendirir ve isabeti gözle görülür şekilde artırır. Özellikle Türkçe sorgularda, re-ranker kullanımı yanlış pozitifleri ciddi biçimde azaltır.

7) Prompt Tasarımı: Sistem talimatına “Sadece sağlanan bağlamdan yararlan, kaynak yoksa ‘yeterli bilgi yok’ de” gibi net kısıtlar ekleyin. Kullanıcı sorusu, seçilen pasajlar ve gerekirse kısa bir özet talimatı tek bir prompt içinde verilebilir. Her pasajın yanında kaynak kimliği (belge adı, sayfa, bölüm) tutarak yanıta otomatik kaynakça ekleyin; bu, güven ve denetlenebilirlik sağlar.

8) Cevap Üretimi ve Biçimlendirme: Uzun cevaplar için madde işaretleri, kısa cevaplar için net tek paragraf formatı tercih edin. Modelin “uydurma” eğilimini azaltmak için bağlam penceresini verimli kullanın; gerekirse soruyu alt-sorulara bölüp her alt-soru için mini retrieval akışı kurgulayın (multi-step RAG). Hassas alanlarda (hukuk, finans, sağlık) kesinlik dilini yumuşatın ve gerekiyorsa uyarı notu ekleyin.

9) Değerlendirme ve İzleme: Recall@k, MRR, nDCG gibi arama metrikleri ile konteks isabetini ölçün. Yanıt kalitesi için bağlam kapsamı, doğruluk ve kaynak tutarlılığına bakın. Üretim ortamında RAG değerlendirme çerçeveleri (ör. otomatik değerlendirme ve örneklem tabanlı insan denetimi) kurarak sürekli iyileştirme döngüsü oluşturun. Yanlış eşleşen pasajları etiketleyip yeniden eğitime dahil ederek sistematik hataları azaltın.

10) Performans, Maliyet ve Bakıma Dair İpuçları: Sorgu tarafında embedding önbelleği, sonuç tarafında yanıt önbelleği (semantic cache) maliyeti düşürür. ANN indeks parametrelerini (efSearch, nprobe vb.) gecikme/hedef isabet dengesine göre ayarlayın. Kenar cihazlarda veya düşük bütçede 4-bit/8-bit quantized LLM’ler iş görür. Büyük kurumsal koleksiyonlarda artımlı indeks güncellemeleri ve arka plan yeniden inşa stratejisi planlayın.

11) Güvenlik ve Uyumluluk: Kurumsal RAG’da erişim kontrolünü indeks katmanında uygulayın; kullanıcının yetkisi olmayan belgeler retrieval aşamasına hiç girmesin. PII maskeleme ve günlükleme (audit) politikalarını belirleyin. Oran sınırlama (rate limiting) ve anomali tespiti ile kötüye kullanımı engelleyin.

Sık Yapılan Hatalar: Çok büyük chunk boyutları kullanmak, yalnızca vektör aramaya güvenmek, re-ranker atlamak, prompt’ta kaynak gösterimi istememek ve üretim izleme metriklerini kurmamak. Ayrıca embed modeli ile arama dili uyumsuz olduğunda isabet hızla düşer; çok dilli kullanımda model seçimini A/B testleriyle doğrulayın.

Sonuç: RAG, Türkçe belgelerle çalışan soru-cevap sistemleri için pratik, ölçeklenebilir ve denetlenebilir bir çözüm sunar. Doğru chunking, iyi seçilmiş embedding, hibrit arama ve re-ranking üçlüsü; üzerine titizlikle kurgulanmış prompt ve değerlendirme yönergeleri ile birleştiğinde, hem doğruluk hem de kullanıcı güveni açısından sınıf atlatır. Küçük bir pilot ile başlayıp metrikler ışığında iteratif optimize ederek kısa sürede üretime hazır, kaynaklı ve güvenilir bir RAG çözümü elde edebilirsiniz.

31 Ağustos 2025 Pazar

RAG ile Türkçe Dokümanlarınıza Özel Yapay Zekâ Asistanı Kurulumu (2025 Rehberi)

RAG nedir ve neden gerekli?

Kurumsal veriler üzerine çalışan yapay zekâ asistanlarının en büyük sorunlarından biri, modelin eğitim verisinde olmayan bilgiler hakkında uydurma (hallucination) üretmesidir. RAG (Retrieval-Augmented Generation) yaklaşımı, üretken modelden önce güvenilir kaynaklardan ilgili parçaları arayıp getirir, ardından bu bağlam ile yanıt oluşturur. Böylece cevaplar hem daha doğru hem de kaynaklanabilir olur. Bu yazıda, Türkçe dokümanlarınız için RAG tabanlı bir asistanı sıfırdan nasıl kurabileceğinizi adım adım anlatıyorum.

Mimari bileşenler

1) Doküman alımı ve ayrıştırma: PDF, Word, e-posta arşivi ya da Confluence/Jira gibi bilgi tabanlarından veriyi çekin. PDF’lerde metin çıkarımı için OCR gerekebilir. Tablo ve görselleri metne dönüştürürken bağlamı kaybetmemeye dikkat edin.

2) Temizleme ve parçalama (chunking): Türkçe metinlerde noktalama ve büyük/küçük harf (İ/ı) uyumuna dikkat edin. Belgeyi 300–500 kelimelik, %10–15 örtüşmeli parçalara ayırın. Başlık ve bölüm bilgilerini her parçaya meta veri olarak ekleyin.

3) Vektörleştirme (embedding): Türkçe desteği güçlü gömlemeler kullanın. Bulut tabanlı text-embedding-3-large (OpenAI) veya açık kaynak bge-m3 ve multilingual-e5-large iyi seçeneklerdir. Gizlilik gereksinimi yüksekse modeli yerelde çalıştırın.

4) Vektör veritabanı: Chroma, Qdrant, Milvus ya da FAISS ile arama yapın. Üretim ortamı için Qdrant/Milvus, prototip için Chroma/FAISS tercih edilebilir. Metadata alanlarında belge tipi, sayfa, bölüm gibi sahaları tutun.

5) Sorgu işleme: Yalnızca vektör araması yerine hibrit arama (BM25 + vektör) ve bir yeniden sıralayıcı (ör. bge-reranker) ekleyin. Bu, Türkçe uzun sorgularda isabeti ciddi şekilde artırır.

6) Üretken model (LLM): Bulutta GPT-4o mini gibi hızlı/uygun maliyetli bir model veya yerelde Llama 3.1 8B, Mistral 7B gibi modelleri Ollama üzerinden çalıştırabilirsiniz.

Adım adım kurulum

Adım 1 – Ortam: Python 3.11 ile bir sanal ortam kurun. Gerekliyse Docker ile Qdrant/Milvus çalıştırın. Projede LangChain veya LlamaIndex gibi bir çatı kullanmanız geliştirmeyi hızlandırır.

Adım 2 – Veri toplama: Belgeleri tek bir dizinde toplayın. Yetkisiz içerikleri ayıklayın; erişim seviyesine göre dizinleri bölmek ileride yetkilendirme için işinize yarar.

Adım 3 – Ön işleme: PDF sayfa kırıkları, dipnotlar ve sayfa numaralarını temizleyin. Türkçe’de noktalama ve karakter dönüşümlerini (ör. apostrof, tırnak) normalize edin. Gereksiz boşlukları ve tarih/sürüm kalıntılarını ayıklayın.

Adım 4 – Parçalama: İçerik türüne göre strateji belirleyin. Teknik belgelerde başlık bazlı, SSS’lerde soru-cevap bazlı, politikalar/prosedürlerde paragraf bazlı parçalama daha başarılı olur. Her parçaya kaynak_linki, belge_türü, bölüm gibi meta verileri ekleyin.

Adım 5 – Embedding seçimi: Türkçe performansı yüksek bir modelle test yapın. Aynı veri üzerinde 10–20 örnek sorgu ile top-k isabetini ölçerek model seçimi yapın. Gizlilik gereksinimi varsa açık kaynak bir modelle yerelde kalın.

Adım 6 – Vektör veritabanı kurulumu: Chroma ile hızlı prototip, Qdrant/Milvus ile üretim kurulumu yapın. İndeks parametrelerinde HNSW grafı ve uygun M, efConstruction değerlerini deneyerek gecikme-doğruluk dengesini bulun.

Adım 7 – İndeksleme: Parçaları gömleyip veritabanına yazın. Versiyonlama yapın; her yüklemeye bir batch_id vererek geri alım (rollback) kolaylığı sağlayın. Büyük yüklemelerde artımlı (incremental) indekslemeyi tercih edin.

Adım 8 – Sorgu boru hattı: Kullanıcı sorgusunu önce query rewriting ile netleştirin (gerekiyorsa çoklu sorgu üretimi). Ardından hibrit arama yapın, ilk 20 sonucu alın, bir reranker ile en iyi 5–7 bağlamı seçin. MMR ile çeşitlilik sağlayın.

Adım 9 – Prompt tasarımı: Sistem mesajına “Sadece verilen bağlamdan yanıtla, emin değilsen ‘elimdeki kaynaklarda yok’ de” gibi kurallar koyun. Yanıt sonunda Kaynaklar bölümünde belge adı ve bölüm başlığını listeleyin.

Adım 10 – Değerlendirme: 50–100 soruluk altın set hazırlayın. Ölçütler: cevap alaka puanı, bağlam isabeti, kaynak doğruluğu, gecikme, maliyet. Otomatik değerlendirme için küçük bir script ile yanıt-kaynak uyuşumunu ölçebilirsiniz.

Adım 11 – Yayına alma: FastAPI ile bir servis oluşturun. Redis önbellekle sık soruların yanıtlarını tutun. Yüksek trafikte rate limit ve tamamlama uzunluğu sınırlamaları önemli. Gözlemlenebilirlik için OpenTelemetry ile izleme kurun.

Adım 12 – Güvenlik ve gizlilik: Hassas verileri indekslemeden önce PII maskesi uygulayın. Vektör veritabanını özel ağda tutun. Kullanıcı bazlı yetkilendirme yapıyorsanız sorgu sırasında metadata filtreleri ile erişim kısıtlayın.

Performans ipuçları

- Top-k değerini rastgele yükseltmek yerine hibrit arama + reranker kullanın; maliyeti ve gecikmeyi düşürür.

- Çok uzun bağlamlar yerine 5–7 yüksek kaliteli pasaj verin; LLM’ler daha odaklı yanıtlar üretir.

- Maliyet kritikse önce hızlı bir modelle taslak, ardından önemli akışlarda daha güçlü bir modelle doğrulama yapın.

- Türkçe’de eşanlam ve ekler önemlidir; sorgu genişletme (synonym expansion) ve kök bulma (stemming/lemmatization) deneyin.

Sık karşılaşılan hatalar

- Kaynak sızıntısı: Yanıtlarda kapalı belge adlarının görünmesi. Çözüm: metadata’yı kullanıcı rolüne göre filtreleyin ve prompt’ta kaynak gösterimini maskeleyin.

- Aşırı uzun parçalar: Gömlemelerin ayrıştırıcılığı düşer. 300–500 kelime aralığını aşmamaya çalışın.

- Zayıf gömleme modeli: Çok dilli ama Türkçe’de zayıf bir model, arama kalitesini bozar. Küçük bir değerlendirme seti ile model seçimi yapın.

Sonuç

RAG, Türkçe kurumsal dokümanlarda güvenilir ve kaynaklanabilir yanıtlar üretmenin en pratik yolu. Doğru gömleme, hibrit arama, reranking ve titiz prompt tasarımıyla, hem doğruluğu hem de kullanıcı güvenini önemli ölçüde artırabilirsiniz. Küçük bir prototiple başlayıp ölçümlere göre adım adım optimize edin; doğru mimariyle RAG tabanlı asistanınız kısa sürede üretim kalitesine ulaşacaktır.