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.
- 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.
- 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.
- HNSW Parametrelerini Aşırı Optimize Etmek
ef_constructiondeğ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_constructiondeğerini 200 yapın.ef_searchdeğerini 50 yapın.
- 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.
- 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.
- 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.
- 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.
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi