Tornar a Research
Recuperació

Reranking efímer: per què la recuperació no acaba al vector

La cerca vectorial és excel·lent portant candidats i mediocre ordenant-los. Per això la recuperació seriosa té dues etapes: una ràpida i aproximada, una altra precisa i cara. Repassem per què el reranking més que duplica la qualitat del rànquing (amb dades), el cost ocult que gairebé ningú compta, com es posiciona el panorama (Cohere, Voyage, Pinecone, ELSER, ColBERT, Jina) i com construïm un índex de reranking que viu només el que dura una consulta — i per què això ens fa millors.

BiVelio Research8 min de lectura
Recuperació en dues etapes: un núvol de candidats es reordena, a través d'una espurna efímera, en una pila classificada

Quan un agent de BiVelio respon sobre els documents d'una empresa, el primer que passa no és generació: és recuperació. I la qualitat de la resposta està acotada per la qualitat dels fragments que l'agent arriba a veure. Si el context és sorollós o mal ordenat, cap model ho arregla després (Liu et al., 2023).

La intuïció ingènua és que n'hi ha prou amb buscar per similitud d'embeddings. A la pràctica, la cerca vectorial és excel·lent per al recall —portar ràpid un conjunt raonable de candidats— i mediocre per a la precisió —ordenar aquests candidats per rellevància real. Per això la recuperació seriosa es fa en dues etapes. I la segona, el reranking, és on es guanya la resposta.

El problema que viuen els desenvolupadors

El primer reflex quan un RAG falla és apujar el top_k: portar més fragments. És una trampa. Amb k petit et deixes fora el document correcte; amb k gran inundes la finestra de context — i els models perden la informació que cau al mig (Liu et al., 2023). Més context no és millor context.

El segon reflex és confiar-ho tot als embeddings densos. Una altra trampa: en avaluació zero‑shot sobre dominis nous, els recuperadors densos poden rendir per sota del vell BM25 (Thakur et al., 2021). La similitud vectorial sola no generalitza tan bé com es creu.

−22 pp
Precisió perduda
dato rellevant "al mig" del context
−47,7%
Recuperador dens sol
vs BM25, zero-shot (DPR a BEIR)
~65 h
Cost d'ordenar bé
cross-encoder sobre 10.000 parells
Fuente: Liu et al. 2023; Thakur et al. 2021 (BEIR); Reimers & Gurevych 2019

La causa de fons? Un cross‑encoder —el model que de debò jutja la rellevància mirant la consulta i el document junts— és precís però costosíssim: cal executar‑lo una vegada per cada parell (consulta, document). Reimers i Gurevych van mesurar que comparar exhaustivament 10.000 frases amb un cross‑encoder triga unes 65 hores; amb embeddings independents, uns 5 segons (Reimers & Gurevych, 2019). No pots passar el cross‑encoder per tot el corpus. Però la seva precisió és justament el que necessites. La solució a aquesta tensió són dues etapes.

Recuperació en dues etapes

La primera etapa recupera, de manera aproximada, els kk fragments més afins a la consulta. Treballa sobre embeddings densos (Karpukhin et al., 2020) i mesura proximitat amb similitud cosinus:

sim(q,d)=eqedeqed\text{sim}(q, d) = \frac{\mathbf{e}_q \cdot \mathbf{e}_d}{\lVert \mathbf{e}_q \rVert \, \lVert \mathbf{e}_d \rVert}

És barata i escala a milions de fragments, però l'embedding comprimeix cada document en un únic vector: perd matisos que només s'aprecien comparant la consulta i el document paraula a paraula.

La segona etapa —el reranker— reordena només aquests kk candidats amb un cross‑encoder que sí que mira el parell de manera conjunta (Nogueira & Cho, 2019). El salt de qualitat és enorme: al benchmark estàndard MS MARCO, reordenar amb BERT més que duplica el MRR@10 enfront de BM25 (Nguyen et al., 2016; Nogueira & Cho, 2019).

MS MARCO — qualitat de rànquing (MRR@10)
BM25 (recuperació lèxica)16.7
Reranking amb cross-encoder (BERT-large)36.5

Mateix conjunt de candidats, diferent ordenador. El reranking amb cross-encoder més que duplica la mètrica oficial de rànquing.

Fuente: Nogueira & Cho, 2019 (Passage Re-ranking with BERT); dataset: Nguyen et al. 2016

El reranker assigna a cada candidat una puntuació sis_i i la converteix en una distribució sobre el conjunt recuperat:

pi=esij=1kesjp_i = \frac{e^{s_i}}{\sum_{j=1}^{k} e^{s_j}}

I el patró generalitza: a BEIR, la combinació BM25 + cross‑encoder és la millor de mitjana enfront de recuperació lèxica o densa per separat, guanyant en 16 de 18 dominis (Thakur et al., 2021). Quan hi ha diverses fonts de recall (lèxica i densa), es fusionen per rang amb Reciprocal Rank Fusion abans de rerankejar (Cormack et al., 2009).

L'asimetria clau

La primera etapa decideix què entra a la baralla; la segona decideix l'ordre. Un bon recall amb mal ordre malgasta la finestra de context; un ordre perfecte sobre un mal recall no pot recuperar el que mai no s'ha portat. Necessites totes dues — i mesures cadascuna amb la seva mètrica (recall@k i MRR/nDCG).

El cost ocult del reranking

Si el reranking és tan bo, per què no l'usa tothom a fons? Pel cost. Un cross‑encoder executa una passada del model per cada parell, així que reordenar és car i lent. Les xifres de ColBERT ho deixen clar: reordenar els candidats d'una sola consulta amb un cross‑encoder BERT‑large triga uns 33 segons; la interacció tardana de ColBERT aconsegueix qualitat comparable en 61 mil·lisegons (Khattab & Zaharia, 2020).

10.700 ms
Cross-encoder per consulta
BERT-base reordenant candidats
61 ms
Interacció tardana
ColBERT, qualitat comparable
154 → 16 GiB
Índex especialitzat
ColBERT → ColBERTv2 a MS MARCO
Fuente: Khattab & Zaharia 2020 (ColBERT); Santhanam et al. 2022 (ColBERTv2)

La sortida habitual és mantenir un índex de reranking especialitzat i calent de manera permanent — una GPU servida 24/7, o un índex multivector enorme (ColBERT necessitava 154 GiB per a MS MARCO, reduïts a 16–25 GiB només amb compressió (Santhanam et al., 2022)). El problema: aquest índex és car de mantenir i la major part del temps està ociós, esperant consultes que arriben a ràfegues.

Reranking efímer

La nostra aposta —el que internament anomenem Turbovec— és invertir l'equació: construir l'índex de reranking sota demanda, just quan arriba la consulta, i descartar‑lo quan acaba.

async function retrieve(query: string, projectId: string) {
  // Etapa 1 — recall barat sobre l'índex vectorial persistent
  const candidates = await vectorSearch(query, projectId, { k: 50 })
 
  // Etapa 2 — índex de reranking efímer, viu només aquesta consulta
  const boost = await buildEphemeralIndex(candidates)
  const scored = await boost.rerank(query, candidates)
 
  return scored
    .sort((a, b) => b.score - a.score)
    .slice(0, 8) // només el millor entra a la finestra de l'agent
}

L'índex efímer no competeix amb l'emmagatzematge persistent: el complementa. La cerca vectorial garanteix que el candidat correcte estigui entre els 50; el reranker garanteix que arribi al top‑8 que l'agent realment llegeix. I com que el reranking s'aplica només a aquests 50 candidats —no a tot el corpus—, el cost escala amb kk (controlable), no amb NN (inabordable). Pagues precisió només quan hi ha una pregunta, no per tenir una GPU encesa esperant.

Com es posiciona el panorama

El reranking s'ha tornat un commodity excel·lent, però gairebé totes les opcions assumeixen un servei o índex permanent:

SolucióMecanismeCost / límit
Cohere RerankCross‑encoder gestionatAPI per ús; finestra ~4096 tokens/doc, troceja documents llargs
Voyage rerankCross‑encoder gestionatPressupost de tokens per petició; trunca per defecte
Pinecone rerankCross‑encoder allotjatContext 512 tokens al seu model propi; per petició
Elastic ELSER + RerankSparse après + cross‑encoder512 tokens; recomanat només anglès; cost d'inferència per consulta
sentence‑transformersCross‑encoder self‑hostedTu mantens la GPU calenta; no escala al corpus
ColBERT / RAGatouilleInteracció tardana (multivector)Índex especialitzat gran i persistent
Jina RerankerCross‑encoder / listwiseInferència per parell; servei o pesos propis

Són peces magnífiques. Però gairebé totes et demanen alguna cosa encesa tota l'estona: una API que tarifes per consulta, una GPU servida o un índex especialitzat que cal mantenir fresc. El reranking efímer per consulta no és el model per al qual van ser dissenyades.

Com pensem ser els millors

No competim per tenir el cross‑encoder més gran: competim per donar precisió de cross‑encoder sense pagar el cost de mantenir‑lo calent. Allà enfoquem l'avantatge:

L'enfocament habitual

Un índex de reranking o una GPU encesos de manera permanent, cars i ociosos la major part del temps, dimensionats per al pic.

BiVelio

Un índex de reranking efímer: es construeix amb els candidats de la consulta, ordena, i es descarta. Precisió de cross-encoder, cost proporcional a l'ús real.
  1. Cost proporcional a l'ús. Sense GPU ociosa: l'índex de precisió existeix només durant la consulta. Pagues per preguntes, no per temps d'espera.
  2. Recall híbrid, precisió enfocada. Combinem senyals lèxics (Robertson & Zaragoza, 2009) i densos (Karpukhin et al., 2020), fusionats per rang (Cormack et al., 2009), i només llavors apliquem el reranking — el patró que l'evidència premia (Thakur et al., 2021).
  3. Menys context, més ben ordenat. Lliurem a l'agent el top‑8, no el top‑50: ataquem directament el "perdut al mig" (Liu et al., 2023) en lloc d'inundar la finestra.
  4. Reranking amb context de l'operació. No reordenem fragments a cegues: ho combinem amb el graf de coneixement de l'empresa, la idea que desenvolupem a El graf com a context ambient.
  5. Traçabilitat. Cada resultat reordenat conserva el seu origen i la seva puntuació: es pot auditar per què un fragment va arribar a l'agent.

Nota: les xifres d'aquest article provenen de la literatura citada (Reimers & Gurevych, Nogueira & Cho, Khattab & Zaharia, Santhanam et al., Thakur et al., Liu et al.) i descriuen el reranking en general. Són la motivació del nostre disseny, no un benchmark tancat de producte.

Referències

Cormack, G. V., Clarke, C. L. A., & Büttcher, S. (2009). Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods. Proceedings of the 32nd International ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR), 758–759. https://doi.org/10.1145/1571941.1572114
Karpukhin, V., Oğuz, B., Min, S., Lewis, P., Wu, L., Edunov, S., Chen, D., & Yih, W. (2020). Dense Passage Retrieval for Open-Domain Question Answering. Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP), 6769–6781.
Khattab, O., & Zaharia, M. (2020). ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT. Proceedings of the 43rd International ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR). https://arxiv.org/abs/2004.12832
Liu, N. F., Lin, K., Hewitt, J., Paranjape, A., Bevilacqua, M., Petroni, F., & Liang, P. (2023). Lost in the Middle: How Language Models Use Long Contexts. Transactions of the Association for Computational Linguistics (TACL). https://arxiv.org/abs/2307.03172
Nguyen, T., Rosenberg, M., Song, X., Gao, J., Tiwary, S., Majumder, R., & Deng, L. (2016). MS MARCO: A Human Generated MAchine Reading COmprehension Dataset. arXiv Preprint arXiv:1611.09268. https://arxiv.org/abs/1611.09268
Nogueira, R., & Cho, K. (2019). Passage Re-ranking with BERT. arXiv Preprint arXiv:1901.04085. https://arxiv.org/abs/1901.04085
Reimers, N., & Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing (EMNLP-IJCNLP). https://arxiv.org/abs/1908.10084
Robertson, S., & Zaragoza, H. (2009). The Probabilistic Relevance Framework: BM25 and Beyond. Foundations and Trends in Information Retrieval, 3(4), 333–389.
Santhanam, K., Khattab, O., Saad-Falcon, J., Potts, C., & Zaharia, M. (2022). ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction. Proceedings of the 2022 Conference of the North American Chapter of the Association for Computational Linguistics (NAACL). https://arxiv.org/abs/2112.01488
Thakur, N., Reimers, N., Rücklé, A., Srivastava, A., & Gurevych, I. (2021). BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models. Proceedings of the 35th Conference on Neural Information Processing Systems (NeurIPS), Datasets and Benchmarks Track. https://arxiv.org/abs/2104.08663
  • #recuperació
  • #reranking
  • #embeddings
  • #rag
  • #cross-encoder

Vols veure aquests algorismes en producció?

BiVelio converteix aquesta research en un sistema operatiu d'IA que opera la teva empresa de punta a punta.