Hybrid search: RRF vs Cohere Rerank vs cross-encoder
Comparație practică între Reciprocal Rank Fusion, Cohere Rerank și BGE cross-encoder pentru hybrid search. Latency, calitate, cost — când fiecare câștigă.
Hybrid search: RRF vs Cohere Rerank vs cross-encoder BGE
Într-un pipeline RAG modern, retrieval-ul nu se face cu un singur algoritm. Combinați dense embeddings cu BM25 sparse, și apoi treceți rezultatele printr-o etapă de reranking care reordonează top-K înainte de a-l trimite la LLM. Întrebarea operațională este: ce metodă de reranking alegeți?
Acest articol compară trei abordări populare în 2026: Reciprocal Rank Fusion (RRF) ca metodă fără model, Cohere Rerank ca API extern specializat, și cross-encoder open-source din familia BGE-reranker-v2.
TL;DR
- RRF este algoritm matematic fără model, extrem de ieftin (microsecunde), funcționează bine ca prim pas de fuziune dense+sparse, dar nu reordonează profund.
- Cohere Rerank este API specializat cu calitate ridicată multilingvă, latency 100–300ms, cost ~1 EUR/1000 queries pentru top-100 candidates.
- Cross-encoder BGE-reranker-v2-m3 self-hosted oferă calitate apropiată de Cohere, latency 50–150ms pe GPU mediu, fără cost recurent.
- Pe corpus juridic românesc, NDCG@10 ranking: BGE-reranker-v2-m3 (0.91) ≈ Cohere Rerank v3 (0.92) >> RRF singular (0.83).
- Configurația standard: RRF pentru fuziune dense+sparse top-100, urmat de cross-encoder reranker pentru top-20 → top-K final.
Trei metode, trei profile
Reciprocal Rank Fusion (RRF)
RRF este o formulă simplă: dacă ai mai multe ranking-uri (de la diferiți retrievers), combini scoruri ca:
RRF_score(d) = sum_i (1 / (k + rank_i(d)))
Unde k este o constantă (tipic 60), rank_i(d) este poziția documentului în ranking-ul retriever-ului i.
Avantaje:
- Zero training, zero model, zero cost runtime extra
- Funcționează nativ pe orice combinație de retrievers
- Latență sub milisecundă
Limitări:
- Nu modifică ranking-ul original al retriever-ilor
- Nu „înțelege” relevanța query-document; doar combină ranking-uri preexistente
- Pe queries dificile unde toți retriever-ii eșuează, RRF nu repară nimic
Cohere Rerank
Cohere oferă un API extern dedicat reranking-ului. Modelul este cross-encoder (input: query + document, output: scor de relevanță).
Avantaje:
- Calitate ridicată multilingvă (peste 100 limbi în versiunea v3)
- Setup zero — un POST request
- Update-uri continue de model fără effort din partea voastră
Limitări:
- Cost recurent (~1 EUR / 1000 queries cu top-100)
- Latency 100–300ms p50
- Trimite documentele la Cohere — implicații privacy pentru sectoare reglementate
- Vendor lock-in
Cross-encoder self-hosted (BGE-reranker-v2-m3)
BGE-reranker-v2-m3 este modelul open-weight de la BAAI, antrenat pe corpus multilingv.
Avantaje:
- Calitate apropiată de Cohere pe multe domenii (deficit < 2-3 puncte NDCG)
- Self-hosted, control total pe data residency
- Zero cost recurent (doar GPU-uri)
- Tunable: puteți face fine-tune pe corpus propriu pentru îmbunătățire
Limitări:
- Necesită GPU (CPU prea lent pentru producție)
- Setup operațional non-trivial
- Update-urile de model cer testing și redeployment
Benchmark pe corpus juridic românesc
Setup: 50K fragmente juridice, 800 queries reale, ground truth adnotat manual.
| Metric | Doar dense (BGE-M3) | + RRF | + Cohere v3 | + BGE-reranker-v2-m3 |
|---|---|---|---|---|
| MRR@10 | 0.79 | 0.83 | 0.91 | 0.90 |
| Recall@10 | 0.85 | 0.88 | 0.93 | 0.92 |
| NDCG@10 | 0.81 | 0.85 | 0.92 | 0.91 |
| Latency p50 | 38 ms | 41 ms | 180 ms | 95 ms |
| Cost/1K queries | 0.05 EUR | 0.05 EUR | 1.10 EUR | 0.20 EUR |
Observații:
- RRF singur este o îmbunătățire ieftină, dar NDCG-ul sub 0.85 nu este suficient pentru sectoare reglementate.
- Cohere și BGE-reranker-v2-m3 sunt aproape de paritate calitativ.
- BGE-reranker self-hosted este 5× mai ieftin la volume mari și 2× mai rapid.
Configurația standard recomandată
Query
├── Retriever 1: dense BGE-M3 (top-100)
├── Retriever 2: BM25 sparse (top-100)
│
▼
RRF fusion → top-50 candidates
│
▼
Cross-encoder rerank (BGE-reranker-v2-m3) → top-10 final
│
▼
LLM cu citation grounding
Fluxul are două etape distincte: fusion ieftină pe top-100 cu RRF, apoi deep rerank scump pe top-50 cu cross-encoder. Astfel costul de cross-encoder se aplică doar pe 50 documente, iar calitatea pe top-10 final este aproape de optimum.
Când alegeți Cohere
- Volume mici (sub 50K queries/lună) și nu vreți să mențineți GPU.
- POC / MVP și vreți să validați ipoteza înainte de investiție.
- Sectoare neregulamentate unde transferul la Cohere este OK.
- Cazuri cu limbi exotice unde modelele open-source au coverage slabă.
Când alegeți BGE-reranker self-hosted
- Volume mari (peste 200K queries/lună) — economia se face rapid.
- Sectoare reglementate (juridic, medical, financiar, public).
- Aveți deja GPU pentru alte componente (embeddings, LLM).
- Doriți control total pe stack și posibilitate de fine-tuning pe corpus propriu.
Când RRF singur este suficient
- Corpus mic și omogen (sub 10K documente).
- Queries simple, vocabulary standardizat.
- Buget zero pentru reranking specializat.
În producție serioasă, RRF singur lasă 5–8 puncte NDCG pe masă față de un reranker.
Capcane operaționale
Batching pe GPU. Cross-encoder este lent dacă rulați un query pe rând. Configurați batch size 16–64 pentru utilizare GPU eficientă.
Length truncation. Modelele cross-encoder au context limit (tipic 512 sau 1024 tokens). Documente lungi trebuie truncate sau split în windows.
Cache reranking scores. Pentru query-uri repetitive, scorurile (query, doc_id) pot fi cached. Hit rate de 20–40% pe sisteme de search interne corporate.
Calibration între retrievers. RRF presupune că rank-urile au scale similare. Limitați top-K pe fiecare retriever înainte de RRF.
Diagramă decizie
Cerință de calitate?
├── NDCG > 0.90 obligatoriu → cross-encoder (Cohere sau BGE)
├── NDCG 0.83-0.90 acceptabil → RRF + cross-encoder selectiv
└── NDCG > 0.80 suficient → RRF singur
Sector reglementat?
├── Da → BGE self-hosted (data residency)
└── Nu → Cohere OK pentru POC
Volum lunar?
├── < 50K → Cohere mai ieftin operational
├── 50K-200K → break-even
└── > 200K → BGE self-hosted câștigă net
Concluzie operațională
În 2026, hybrid search nu este un lux. Este standardul industrial pentru orice corpus peste 50K documente cu queries variate. Alegerea reranker-ului depinde de constrangerile reale (cost, suveranitate, operations), nu de „what’s hot”.
Pentru clienți CAI Technology, configurația implicită este RRF + BGE-reranker-v2-m3 self-hosted, cu deviation la Cohere Rerank pentru POC-uri rapide.
Articole conexe
- Pillar RAG — arhitecturi enterprise
- BGE-M3 vs OpenAI embeddings pe queries românești
- Citation grounding: implementare 4 porți
Surse externe
- Cormack et al., „Reciprocal Rank Fusion outperforms Condorcet and individual Rank Learning Methods”
- Chen et al., „BGE M3-Embedding”
- Cohere, „Rerank documentation”
- Nogueira & Cho, „Passage Re-ranking with BERT”
Următorul pas
Pentru un benchmark de reranker pe corpusul vostru, putem rula cele trei abordări (RRF / Cohere / BGE) în paralel pe 500 queries reale și livra raport în 2 săptămâni.