Reranker
Un réordonnanceur réévalue la liste restreinte d’un système de récupération à l’aide d’un modèle plus lent et plus précis, comme un encodeur croisé, avant de présenter les résultats à un utilisateur ou à un LLM.
Un reranker est un modèle qui reçoit une courte liste de candidats d’un moteur de recherche de premier niveau rapide, évalue chaque candidat plus soigneusement par rapport à la requête, puis réordonne la liste. Les moteurs de recherche, les pipelines de génération augmentée par récupération (RAG) et les systèmes de recommandation utilisent cette approche, car les modèles de pertinence les plus précis sont trop lents pour traiter des millions de documents, mais assez rapides pour traiter les quelques dizaines ou centaines de meilleurs candidats. En recherche textuelle, le reranker standard est un encodeur croisé, un transformeur qui lit ensemble la requête et un candidat et produit un score de pertinence unique. Nogueira et Cho (2019) ont affiné BERT de cette manière et pris la tête du classement MS MARCO pour le classement de passages, avec un MRR@10 supérieur de 27 % en termes relatifs au précédent meilleur résultat.
Fonctionnement de la récupération suivie d’un reranking#
La première étape privilégie le rappel : elle s’appuie sur la recherche par mots-clés avec BM25, la recherche vectorielle sur des embeddings précalculés, ou les deux, pour extraire en quelques millisecondes quelques centaines de candidats plausibles de l’ensemble de la collection. Le modèle de reclassement privilégie la précision : il exécute une passe complète du modèle sur chaque paire requête-candidat, et seuls quelques-uns de ses meilleurs résultats sont transmis à l’utilisateur ou intégrés à la fenêtre de contexte d’un LLM. La VisualAISearch solution d’Ultralytics est un moteur de recherche de premier niveau de ce type : il génère les embeddings des images d’un dossier avec CLIP ViT-B/32, les classe selon leur similarité cosinus avec une requête textuelle et renvoie par défaut jusqu’à 30 correspondances dont le score dépasse un seuil de similarité de 0,1.
Encodeurs croisés et encodeurs doubles#
Un encodeur double, le type de moteur de recherche le plus courant, crée séparément des embeddings pour la requête et chaque document. Les vecteurs des documents peuvent donc être calculés une seule fois et stockés dans une base de données vectorielle. Cette indépendance est aussi sa limite : le vecteur du document est fixé avant que la requête soit connue. Un encodeur croisé concatène la requête et le document en une seule entrée ; l’auto-attention peut ainsi comparer chaque mot de la requête à chaque mot du document, au prix d’un passage complet en avant pour chaque paire au moment de la requête. ColBERT se situe entre les deux : il stocke un vecteur par jeton de document et met en correspondance les jetons de requête avec ceux-ci au moyen d’une interaction tardive. La classe CrossEncoder de Sentence Transformers exécute un reranker comme ms-marco-MiniLM-L6-v2, entraîné sur des requêtes de recherche 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']]}")Le passage qui répond à la question passe de la dernière à la première place avec un score de 6,97, loin devant le candidat suivant, à -4,48. La phrase sur le transformateur électrique partage le mot clé de la requête, mais obtient un score de -5,29.
Types de rerankers#
- Encodeurs croisés : Des transformeurs compacts affinés sur des étiquettes de pertinence, comme les modèles MS MARCO MiniLM et la famille bge-reranker de BAAI, également proposés sous forme d’API de reranking hébergées.
- Rerankers à base de LLM : Un grand modèle de langage (LLM) reçoit une consigne pour noter les candidats ou trier toute une liste d’un coup. RankGPT a montré que ChatGPT et GPT-4 peuvent réordonner des passages en produisant une liste triée, et a distillé les classements de ChatGPT dans un petit reranker spécialisé.
- Modèles d’apprentissage du classement : Les systèmes de recommandation et de commerce électronique réordonnent les candidats avec des modèles tels que les arbres boostés par gradient, utilisant des caractéristiques comme l’historique des clics, le prix et la fraîcheur, et entraînés avec des objectifs de classement comme LambdaMART, disponibles dans LightGBM et XGBoost.
Rerankers et concepts associés#
- Recherche sémantique : Recherche par sens, généralement avec un moteur de recherche à encodeur double. Un reranker constitue une deuxième étape facultative.
- Recherche hybride : Fusionne des listes de résultats par mots-clés et par vecteurs, souvent au moyen de la fusion réciproque des rangs, qui combine les rangs sans relire le contenu. Un reranker s’applique souvent à la liste fusionnée.
- Distillation de connaissances : Entraîne un moteur de recherche rapide à imiter les scores d’un reranker lent, en transférant une partie de la qualité du reranking vers la première étape.
- Détecteurs d’objets à deux étapes : Appliquent le même principe aux images : une étape de proposition de régions suggère des boîtes candidates, puis une deuxième étape réévalue et affine chacune d’elles avant que la suppression non maximale (NMS) n’élimine les doublons qui se chevauchent.










