Guide
Reranking RAG : retrier les résultats avant de répondre
Le reranking dans un RAG : principe du cross-encoder, nombre de candidats, modèles ouverts ou interfaces payantes, gains publiés.
Mis à jour le
Le reranking (retri) ajoute une seconde étape à la recherche d'un RAG : un premier moteur, rapide, ramène une centaine de passages candidats ; un modèle plus lent mais plus précis les relit un par un face à la question et les réordonne. Seuls les meilleurs vont au modèle de langage. C'est l'un des réglages qui améliorent le plus la pertinence sans toucher à l'index.
Bi-encoder et cross-encoder
La documentation de Sentence Transformers explique la différence :
| Bi-encoder | Cross-encoder | |
|---|---|---|
| Ce qu'il lit | la question et le passage séparément | la question et le passage ensemble |
| Ce qu'il produit | un vecteur par texte, comparable et indexable | un score pour la paire, pas de vecteur |
| Vitesse | rapide : un vecteur par passage, calculé une fois | lent : un calcul par paire, à chaque question |
| Qualité | bonne | meilleure, selon cette documentation |
| Usage dans un RAG | première recherche | retri des candidats |
L'ordre de grandeur donné par la même page : regrouper 10 000 phrases demanderait environ 50 millions de comparaisons, soit environ 65 heures avec un cross-encoder, contre environ 5 secondes avec un bi-encoder. D'où le schéma « récupérer puis retrier » : le bi-encoder trouve par exemple les 100 premiers résultats, le cross-encoder les reclasse.
Ce que le retri a apporté dans un essai publié
Dans son article du 19/09/2024 sur la récupération contextuelle, Anthropic mesure le taux d'échec de récupération sur les 20 premiers résultats :
| Configuration | Réduction des échecs |
|---|---|
| Plongements contextualisés | 35 % |
| + recherche par mots-clés (algorithme BM25) contextualisée | 49 % |
| + retri (modèle de Cohere) | 67 % |
Leur protocole : 150 passages récupérés, 20 gardés après retri. Ces chiffres valent pour leurs jeux de données ; ils donnent un ordre d'idée, pas une promesse.
Les options pour retrier
Le site est édité par IArche, qui édite ALMA ; les outils ci-dessous sont décrits d'après leur documentation, sans classement.
- Modèle ouvert exécuté chez vous. Sentence Transformers charge un cross-encoder en deux lignes ; l'exemple de la documentation utilise
cross-encoder/ms-marco-MiniLM-L6-v2. Vérifiez qu'un modèle entraîné sur de l'anglais convient à vos documents en français. - Cohere Rerank. Une interface de programmation qui prend une question, une liste de documents et
top_n, et renvoie pour chaque document son rang d'origine et unrelevance_score. Selon la documentation de Cohere, les modèles actuels (rerank-v5.0-pro,rerank-v5.0-fast, entre autres) sont multilingues et entraînés sur plus de 100 langues. - Voyage AI. Anthropic, qui ne propose pas son propre modèle de plongements, présente Voyage AI dans sa documentation ; Voyage fournit aussi des modèles de retri (
rerank-3,rerank-3-lite). Tarif affiché par MongoDB, qui distribue ces modèles, relevé le 15/11/2026 : 0,05 dollar par million de jetons pourrerank-3, 0,02 dollar pourrerank-3-lite, avec 200 millions de jetons offerts.
Exemples de code
Avec Sentence Transformers, d'après sa documentation :
from sentence_transformers.cross_encoder import CrossEncoder
model = CrossEncoder("cross-encoder/ms-marco-MiniLM-L6-v2")
scores = model.predict([["ma question", "passage 1"], ["ma question", "passage 2"]])
Avec Cohere, d'après sa documentation :
results = co.rerank(
model="rerank-v5.0-pro", query=query, documents=docs, top_n=5
)
Régler le retri
- Nombre de candidats en entrée. Assez pour que le bon passage y figure : mesurez le rappel de votre première recherche (voir Évaluer un RAG).
- Nombre de passages en sortie. Assez pour répondre aux questions qui demandent plusieurs passages, pas au point de noyer le modèle.
- Latence. Le retri s'ajoute à chaque question. Mesurez-la sur votre machine ou votre interface avant de l'activer pour tous.
- Langue. Testez sur vos documents en français, pas sur l'exemple de la documentation.
Le retri vient après la recherche hybride : il travaille sur la liste fusionnée, pas à sa place.
Questions fréquentes
Pourquoi ne pas utiliser directement le modèle de tri pour toute la recherche ?
Parce qu'il doit lire chaque paire question-passage : la documentation Sentence Transformers estime qu'un regroupement de 10 000 phrases demanderait environ 65 heures avec un cross-encoder, contre environ 5 secondes avec un bi-encoder.
Combien de passages garder après le tri ?
Anthropic, dans ses essais, retrie 150 candidats et en garde 20, en notant que 20 passages ont donné de meilleurs résultats que 10 ou 5. À valider sur vos données.
Sources
Pages consultées pour écrire cet article :