RAG Pipeline'ıma Bir Reranker Ekledim — Her Şeyi Bozdu

RAG pipeline'ıma bir reranker ekledim. Testlerimi anında bozdu.

Versiyon 2'de, FAISS ve BM25 ile hibrit geri çağırma (hybrid retrieval) kullanıyordum. 19 test sorusunun tamamını geçti. Sonra, hassasiyeti (precision) artırmak için bir cross-encoder reranker ekledim.

Teori basit:

    1. Aşama: Geniş bir aday kümesi elde etmek için hızlı geri çağırma kullanın.
    1. Aşama: En iyilerini seçmek için akıllı bir reranker kullanın.

Uygulaması 20 dakika sürdü. 19 testimden 2'si anında başarısız oldu.

Hata veri formatından kaynaklandı. Verilerim şu şekilde yoğun, tablo benzeri parçalar (chunks) içeriyor: "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"

Cross-encoder modeli doğal dil paragrafları üzerinde eğitilmişti. Bir tablo satırı gördüğünde, ona çok düşük bir puan verdi. Parçanın alakasız olduğunu düşündü.

Hibrit geri çağırma cevabı buldu ancak reranker onu çöpe attı.

Bunu düzeltmek için 7 farklı yol denedim:

  • Daha büyük bir aday havuzu kullanmak.
  • Reranker ve retriever puanlarını harmanlamak.
  • Rank fusion kullanmak.

Hiçbiri işe yaramadı. Reranker puanı o kadar negatifti ki diğer her şeyi bastırdı. Model sadece daha düşük sıralama yapmakla kalmıyor, tablo formatını aktif olarak reddediyordu.

Matematiği düzeltmeye çalışmayı bıraktım ve yapıyı değiştirdim.

Reranker'ın her şeye karar vermesine izin vermek yerine, en iyi sonuçlarımı koruma altına aldım. Bir "garantili slot" (guaranteed slot) stratejisi kullandım:

  • Eğer en iyi 3 sonucu istiyorsanız, ilk aşamadaki en iyi 2 sonucu koruyun.
  • Reranker'ı sadece 3. sonucu seçmek için kullanın.

Bu, hibrit arama sonuçlarının nihai listede kalmasını sağlar. Reranker sadece kalan slotları iyileştirir.

Sonuç: 19/19 test geçti.

Alınan dersler:

  • Reranker'lar anında bir yükseltme sağlamaz. Yapılandırılmış veya tablo verilerinde performansa zarar verebilirler.
  • Değerlendirme setiniz (evaluation set) sizin güvenlik ağınızdır. 19 testim olmasaydı, bozuk bir sistemi yayına almış olurdum.
  • Çalışan şeyi koruyun. Eğer ilk aşama geri çağırmanız iyiyse, bir reranker'ın onu geçersiz kılmasına izin vermeyin.

Bir reranker'a başvurmadan önce güçlü bir retriever inşa edin.

Source: https://dev.to/santanu_mohanta_29/i-added-a-reranker-to-my-rag-pipeline-it-broke-everything-then-i-fixed-it-1c9i

Optional learning community: https://t.me/GyaanSetuAi