compare_arrows Bi-Encoder ile Farkı
Bilgi erişimi sistemlerinde iki temel kodlama stratejisi vardır. Bi-encoder (ör. Sentence-BERT) sorguyu ve belgeyi ayrı ayrı kodlayarak gizli uzayda embedding vektörleri üretir; alaka skoru bu iki vektörün kosinüs benzerliğidir. Bu yaklaşım hızlıdır çünkü belgeler önceden indekslenebilir; sorgu geldiğinde yalnızca sorgu kodlanır ve ANN (Approximate Nearest Neighbor) araması yapılır. Cross-encoder ise sorgu ve belgeyi BERT'in [SEP] tokenıyla birleştirerek tek bir dizi oluşturur ve her çift için sıfırdan bir forward pass çalıştırır. Böylece dikkat mekanizması sorgu ile belge arasındaki tam etkileşimi hesaplar: "Paris" kelimesinin "şehir" bağlamında mı yoksa "Paris Hilton" bağlamında mı geçtiği gibi nüanslar doğru şekilde değerlendirilebilir. Özetle cross-encoder çok daha yüksek doğruluk sunar, karşılığında çok daha yüksek hesaplama maliyeti ister.
account_tree Retrieve-Then-Rerank Pipeline
Modern RAG ve kurumsal arama sistemleri iki aşamalı bir mimari benimsemiştir. Birinci aşama (retrieval): BM25, FAISS veya Elasticsearch ile büyük belge koleksiyonu arasından hızla 50-200 aday getirilir. Bu aşama milisaniyeler içinde tamamlanmalıdır çünkü arama uzayı milyonlarca belge olabilir. İkinci aşama (reranking): cross-encoder bu küçük aday kümesini sorguyla birlikte yeniden değerlendirir ve nihai sıralamayı belirler. MS MARCO veri kümesinde yapılan karşılaştırmalarda, yalnızca BM25 kullanan sistemlere göre retrieve-then-rerank mimarisi MRR@10 metriğinde tipik olarak 10-20 puan iyileşme gösterir. Sıralanan ilk birkaç parça büyük dil modeline bağlam olarak verilir; böylece modelin alakasız metinle dolması ve halüsinasyon üretmesi azalır. Pratik bir örnek: LangChain ve LlamaIndex kütüphaneleri, Cohere Rerank API veya yerel cross-encoder modellerini bu pipeline'a birkaç satırla entegre etmeye olanak tanır.
model_training Popüler Cross-Encoder Modelleri
- check_circle ms-marco-MiniLM-L-6-v2: Sentence-Transformers kütüphanesinin en yaygın kullanılan reranker modeli; MS MARCO veri kümesinde eğitilmiş, 6 katmanlı, hızlı ve ücretsiz. Yerel RAG sistemleri için ilk tercih.
- check_circle BGE-Reranker (BAAI): Pekin Yapay Zeka Akademisi'nin geliştirdiği çok dilli reranker serisi; BGE-Reranker-v2-m3 sürümü BEIR benchmark'larında en yüksek performans gösterenler arasında yer alır ve Türkçe dahil çok dilli destek sunar.
- check_circle Cohere Rerank API: API tabanlı servis; özellikle İngilizce ve çok dilli arama için tasarlandı. Kurumsal RAG uygulamalarında sıfır altyapı yüküyle yüksek kaliteli reranking; kullanım başına ücretlendirilir.
- check_circle Jina Reranker: 8192 token'a kadar uzun belge desteği olan reranker; özellikle uzun dokümantasyon veya hukuki metin arama senaryolarında tercih edilir.
Cross-Encoder, Bi-Encoder ve BM25 Karşılaştırması
text_fields BM25 (TF-IDF)
Kelime frekansı tabanlı, anlamsal anlayış yok. Milisaniyelerde sonuç verir. Tam eşleşmede güçlü, eş anlamlılarda zayıf.
call_split Bi-Encoder
Semantik anlayış var, belgeler önceden indekslenebilir. Hızlı ANN araması. Sorgu-belge etkileşimi sınırlı.
join_inner Cross-Encoder
Tam cross-attention, en yüksek doğruluk. Her çift için ayrı forward pass gerektirdiğinden yavaş. Reranking aşaması için ideal.
hub Hibrit (BM25 + CE)
BM25 aday getirir, cross-encoder yeniden sıralar. En iyi pratik denge; production RAG sistemlerinde yaygın standart.
warning Sınırlamalar ve Pratik İpuçları
Cross-encoder kullanımında dikkat edilmesi gereken başlıca noktalar vardır. Gecikme kısıtı: 100 aday için çoğu cross-encoder GPU üzerinde 50-200 ms harcar; bu, gerçek zamanlı arama için kabul edilebilir bir süredir ama aday sayısı binlere çıktığında sorun yaratır. Maksimum token limiti: BERT tabanlı modeller genellikle 512 token ile sınırlıdır; uzun belgelerin parçalara (chunk) bölünmesi ve her parçanın ayrı puanlanması gerekir. Eğitim verisi: Türkçe için özelleştirilmiş cross-encoder sayısı hâlâ sınırlıdır; çok dilli BGE-Reranker veya çeviri ile artırılmış veri en pratik başlangıç noktasıdır. Puan kalibrasyonu: farklı modellerin skorları doğrudan karşılaştırılamaz, eşik değerleri kendi veri kümenizde belirlenmelidir. İpucu: Sentence-Transformers kütüphanesinin CrossEncoder sınıfıyla yalnızca birkaç satır Python koduyla yerel model çalıştırılabilir.
help Sıkça Sorulan Sorular
- check_circle Cross-encoder ne zaman kullanmak gerekir? Retrieval doğruluğu kritik olduğunda (hukuki, tıbbi, finansal arama) ve 100-200 adayı yeniden sıralamak için ek gecikme kabul edilebilir olduğunda. Yalnızca bi-encoder ile yetinen sistemlerde MRR kayıpları belirgin olabilir.
- check_circle Hangi kütüphane ile cross-encoder kullanabilirim? sentence-transformers kütüphanesinin CrossEncoder sınıfı en yaygın seçenektir: from sentence_transformers import CrossEncoder; model = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2'). LangChain ve LlamaIndex entegrasyonları da mevcuttur.
- check_circle Cross-encoder gecikmesini nasıl azaltabilirim? Aday sayısını 50-100 ile sınırlandırın, daha küçük (MiniLM) modeller kullanın, GPU çıkarımı ve toplu işleme (batch) uygulayın. Cohere API gibi bulut çözümleri altyapı yükünü ortadan kaldırır.
- check_circle Türkçe RAG için hangi cross-encoder önerilir? BGE-Reranker-v2-m3 (BAAI) çok dillidir ve Türkçeyi destekler. Alternatif olarak paraphrase-multilingual-mpnet-base-v2 üzerine Türkçe veriyle ince ayar yapılabilir.
- check_circle Cross-encoder ile LLM tabanlı reranking arasında fark var mı? LLM tabanlı reranking (ör. RankGPT) daha derin anlayış sunar ama çok daha pahalıdır. Cross-encoder, maliyet-doğruluk dengesinde production sistemleri için pratik optimum noktasıdır.