Hybrid Search: BM25 + Vektörler, Hangi Ağırlık Kazanır?

BM25 mi, vektör arama mı? Cevap: ikisi birden, ama doğru oranda. Bu çalışmada iki yöntemi FastAPI dokümantasyonunda (2.713 chunk) test edilerek fusion ağırlığı sıfırdan bire kadar taranmış.

Sonuç net: tek bir retriever her durumda kazanmıyor. Tam kod tanımlayıcıları (örneğin `fastapi.FastAPI`) ararken BM25 çok daha iyi (MRR 0.772 vs 0.279). Ama elle yazılmış parafraz sorularında vektörler önde (0.768 vs 0.566). Yani sorgu türü değişince, en iyi yöntem de değişiyor.

Hybrid çözüm Reciprocal Rank Fusion (RRF) kullanarak her iki ranking'i birleştiriyor. Deneyler gösteriyor ki BM25'e %80 ağırlık veren bir blend, hiçbir sorgu türünde 9 puan MRR'den daha fazla kayıp yaşamıyor. Yani orta yol, en güvenli çıkış.

Teknik detay: sentence-transformers/all-MiniLM-L6-v2 (384 boyut, cosine similarity) vektör tarafında, standart BM25 (k1=1.5, b=0.75) ise keyword tarafında. Corpus heading-aware-plus-heading-path chunker'la hazırlandı. Pratik olarak, eğer senin arama sistemi çeşitli sorgu stillerine maruz kalıyorsa (kod, soru, parafraz karışık), pure BM25 ya da pure vector'den kaçıp hybrid bir setup kurmak çok daha stabil sonuç verir. RRF ağırlığını veri setinde test etmek birkaç satır Python'la yapılabilir ve fark çarpıcı oluyor.

konu hakkında tepkinizi verebilirsiniz