7 Hata Yapmadan Önce RAG Altyapısına 500$ Harcadım

Özel belge araması için bir RAG hattı (pipeline) kurdum. Hesaplama maliyeti olarak 500$ ve haftalarca süren hata ayıklama (debugging) süreciyle bana mal oldu. Sonuçlar kötüydü. Kullanıcılar alakasız cevaplar alıyordu ve sorgular yavaştı.

Hattı denetledim ve 7 yaygın hata buldum. Bunları düzeltmek her şeyi değiştirdi.

  1. Sabit Token Parçalama (Fixed Token Chunking) Belgeleri sabit token sayılarına göre böldüm. Bu, bağlamı (context) yok etti. Bir cümle ortadan ikiye bölünüyor, LLM parçalanmış veriler alıyor ve kötü cevaplar veriyordu.
  • Çözüm: Parent-document retrieval ile semantik parçalama (semantic chunking) kullanın.
  • Paragraflar veya başlıklar gibi doğal sınırlara göre bölün.
  • Arama için küçük alt parçalar (child chunks) oluşturun.
  • Bir eşleşme olduğunda, LLM'e tam üst belgeyi (parent document) döndürün.
  • Parçalar arasında %10-20 oranında örtüşme (overlap) ekleyin.
  1. Varsayılan Arama Ağırlıkları Vektör ve anahtar kelime araması için %50/%50 oranında bir bölünme kullandım. Teknik belgeler için tam anahtar kelimeler daha önemlidir.
  • Çözüm: Dinamik ağırlıklar kullanın.
  • Olgu odaklı (factual) sorgular: %35 vektör, %65 anahtar kelime.
  • Semantik sorgular: %75 vektör, %25 anahtar kelime.
  1. HNSW Parametrelerini Aşırı Optimize Etmek ef_construction değerini maksimum değere ayarladım. Büyük bir indekste bu, sunucumun çökmesine neden oldu ve tüm RAM'imi tüketti.
  • Çözüm: Uygun HNSW ayarlarını kullanın.
  • M değerini 8 ile 32 arasında tutun.
  • ef_construction değerini 200 yapın.
  • ef_search değerini 50 yapın.
  1. Yanlış Embedding Modelleri Web metinleri üzerinde eğitilmiş genel bir model kullandım. Teknik mühendislik belgelerimi anlamıyordu.
  • Çözüm: Teknik veya kod içeriği için ince ayar yapılmış (fine-tuned) bir modele geçin.
  1. Doğal Dil Uyuşmazlığı Kullanıcılar "derlemem (build) neden yavaş" gibi sorular soruyor. Dokümantasyon ise "CI pipeline optimizasyonu" gibi terimler kullanıyor. Hiçbir örtüşme yoktu.
  • Çözüm: Bir LLM sorgu yeniden yazma (query rewrite) adımı ekleyin.
  • Aramadan önce kullanıcı sorgusunu teknik terimlere dönüştürün.
  1. Gereksiz Bağlam (Redundant Context) En iyi 10 parçayı getirmek, genellikle aynı paragrafı üç kez almak anlamına geliyordu. Bu durum halüsinasyonlara (hallucinations) neden oluyordu.
  • Çözüm: Sonuçlarda çeşitliliği sağlamak için Maximal Marginal Relevance (MMR) kullanın.
  1. Sadece Uçtan Uca Değerlendirme Sadece nihai cevabı kontrol ettim. Sorunun getirmeden (retrieval) mi yoksa LLM'den mi kaynaklandığını bilmiyordum.
  • Çözüm: Getirmeyi (retrieval) ayrı olarak değerlendirin.
  • Hit rate ve Mean Reciprocal Rank (MRR) değerlerini takip edin.
  • 100 sorgu-belge çiftinden oluşan bir test seti oluşturun.

Düzeltmelerden sonraki sonuçlar: • Cevap ilgisi (relevance): %45'ten %85'e • Sorgu gecikmesi (latency): 3,2s'den 1,8s'ye • Aylık maliyet: 180$'dan 95$'a

Önce chunking işlemini düzeltin. Sonra ağırlıkları. Sonra embedding kalitesini.

En büyük RAG baş ağrınız nedir? Yorumlarda paylaşın.

Kaynak: https://dev.to/kollittle/i-spent-500-on-rag-infrastructure-before-realizing-these-7-mistakes-were-killing-my-results-iph

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi