Reranker
Un reranker ricalcola il punteggio dei risultati preselezionati da un sistema di recupero con un modello più lento e accurato, come un cross-encoder, prima che i risultati raggiungano l'utente o un LLM.
Un reranker è un modello che riceve un breve elenco di candidati da un recuperatore veloce di primo stadio, valuta con maggiore precisione ciascun candidato rispetto alla query e riordina l'elenco. I motori di ricerca, le pipeline di generazione aumentata dal recupero (RAG) e i sistemi di raccomandazione usano questo approccio perché i modelli di rilevanza più accurati sono troppo lenti per elaborare milioni di documenti, ma abbastanza veloci per le poche decine o centinaia di candidati migliori. Nella ricerca testuale, il reranker standard è un cross-encoder, un transformer che legge insieme la query e un candidato e restituisce un unico punteggio di rilevanza. Nogueira e Cho (2019) hanno ottimizzato BERT in questo modo e hanno raggiunto il primo posto nella classifica MS MARCO per il ranking dei passaggi, con un MRR@10 superiore del 27% in termini relativi rispetto al precedente risultato migliore.
Come funziona il recupero seguito dal riordinamento#
Il primo stadio privilegia la recall: la corrispondenza delle parole chiave con BM25, la ricerca vettoriale sugli embedding precalcolati o entrambe recuperano in millisecondi alcune centinaia di candidati plausibili dall'intera raccolta. Il reranker privilegia la precisione: esegue un passaggio completo del modello su ogni coppia query-candidato e invia all'utente, o alla finestra di contesto di un LLM, solo i pochi risultati migliori. La soluzione Ultralytics VisualAISearch è un recuperatore di primo stadio di questo tipo: crea gli embedding di una cartella di immagini con CLIP ViT-B/32, le ordina in base alla similarità coseno con una query testuale e restituisce per impostazione predefinita fino a 30 corrispondenze sopra una soglia di similarità di 0,1.
Cross-encoder e bi-encoder#
Un bi-encoder, il recuperatore più comune, crea embedding separati per la query e per ogni documento, così i vettori dei documenti possono essere calcolati una volta e archiviati in un database vettoriale. Questa indipendenza è anche il suo limite: il vettore del documento è fisso prima che si conosca la query. Un cross-encoder concatena query e documento in un unico input, così la self-attention può confrontare ogni parola della query con ogni parola del documento, al costo di un passaggio forward completo per ogni coppia al momento della query. ColBERT si colloca tra i due: memorizza un vettore per ogni token del documento e abbina i token della query a questi ultimi tramite un'interazione differita. La classe CrossEncoder di Sentence Transformers esegue un reranker come ms-marco-MiniLM-L6-v2, addestrato sulle query di ricerca MS MARCO:
from sentence_transformers import CrossEncoder
query = "When was the transformer architecture introduced?"
# Shortlist returned by a fast first-stage retriever, in its original order
candidates = [
"Transformer models such as GPT and BERT are widely used in natural language processing.",
"An electrical transformer changes the voltage of an alternating current.",
"Convolutional neural networks became popular after AlexNet won ImageNet in 2012.",
"The transformer was introduced in the 2017 paper Attention Is All You Need.",
]
# The cross-encoder reads the query and each candidate together and scores their relevance
reranker = CrossEncoder("cross-encoder/ms-marco-MiniLM-L6-v2")
ranked = reranker.rank(query, candidates)
for hit in ranked:
print(f"{hit['score']:6.2f} {candidates[hit['corpus_id']]}")Il passaggio che risponde alla domanda passa dall'ultimo al primo posto, con un punteggio di 6,97, ben al di sopra del candidato successivo, che ottiene -4,48. La frase sul trasformatore elettrico contiene la parola chiave della query, ma riceve un punteggio di -5,29.
Tipi di reranker#
- Cross-encoder: Transformer compatti ottimizzati sui dati di rilevanza, come i modelli MiniLM di MS MARCO e la famiglia bge-reranker di BAAI, disponibili anche come API di reranking ospitate.
- Reranker basati su LLM: Si chiede a un modello linguistico di grandi dimensioni (LLM) di assegnare un punteggio ai candidati o di ordinare in una volta sola un intero elenco. RankGPT ha mostrato che ChatGPT e GPT-4 possono riordinare i passaggi producendo un elenco ordinato e ha distillato le classifiche di ChatGPT in un piccolo reranker dedicato.
- Modelli di apprendimento del ranking: I sistemi di raccomandazione e di e-commerce riordinano i candidati con modelli come gli alberi potenziati con gradiente, basati su caratteristiche quali cronologia dei clic, prezzo e aggiornamento, e addestrati con obiettivi di ranking come LambdaMART, disponibile in LightGBM e XGBoost.
Reranker e concetti correlati#
- Ricerca semantica: Ricerca basata sul significato, solitamente con un recuperatore bi-encoder. Un reranker è un secondo stadio opzionale.
- Ricerca ibrida: Unisce elenchi di risultati basati su parole chiave e vettori, spesso con la fusione reciproca dei ranghi, che combina le posizioni senza esaminare di nuovo i contenuti. Un reranker opera spesso sull'elenco unificato.
- Distillazione della conoscenza: Addestra un recuperatore veloce a imitare i punteggi di un reranker lento, trasferendo parte della qualità del reranking al primo stadio.
- Rilevatori di oggetti a due stadi: Seguono lo stesso schema per le immagini: uno stadio di proposte di regioni suggerisce riquadri candidati e un secondo stadio ricalcola il punteggio e perfeziona ciascuno di essi prima che la soppressione dei massimi non locali (NMS) rimuova i duplicati sovrapposti.










