Recherche hybride : pourquoi fusionner les rangs
Le vectoriel et le BM25 échouent sur des requêtes opposées. La fusion par rangs corrige les deux sans calibrage, et voici les mesures sur un corpus réel.
- RAG
- recherche
- BM25
- RRF
- évaluation
title: 'Recherche hybride : pourquoi fusionner les rangs' description: "Le vectoriel et le BM25 échouent sur des requêtes opposées. La fusion par rangs corrige les deux sans calibrage, et voici les mesures sur un corpus réel." published: '2026-06-14' updated: '2026-07-02' domain: 'traitement-du-langage' tags: ['RAG', 'recherche', 'BM25', 'RRF', 'évaluation']
Un système de génération augmentée par récupération se juge sur une question simple : le passage qui contient la réponse figure-t-il dans les cinq extraits transmis au modèle ? Si non, aucun prompt, aucun modèle, aucune température ne rattrapera la situation. La génération est l'étape visible ; la récupération est celle qui décide.
Deux moteurs, deux angles morts
La recherche vectorielle projette la question et les passages dans un même espace et compare leur orientation. Elle excelle sur la paraphrase : « comment éviter qu'un modèle invente des réponses » retrouve un paragraphe sur l'hallucination qui n'emploie jamais le verbe inventer.
Elle échoue sur l'exact. Un identifiant, un nom de modèle, une référence normative, un sigle
rare : autant de chaînes que l'embedding dilue dans un voisinage de jargon proche. Demandez
bge-m3 et vous obtiendrez des passages sur les embeddings en général, dont aucun ne mentionne
ce modèle.
BM25 fait l'inverse. Il pondère chaque terme par sa rareté dans le corpus et compense la longueur du document, ce qui le rend redoutable sur les termes discriminants et aveugle à la reformulation. Les deux moteurs ne se trompent pas sur les mêmes requêtes, et c'est précisément ce qui rend leur combinaison intéressante.
Pourquoi fusionner les rangs plutôt que les scores
La tentation est de normaliser puis d'additionner. Une similarité cosinus de 0,82 et un score BM25 de 14,3 ne vivent pas sur la même échelle, et cette échelle dépend du corpus : la valeur maximale de BM25 varie avec la taille de la collection et la distribution des termes. Toute normalisation demande donc un calibrage, et ce calibrage se périme dès qu'on ajoute cent documents.
La Reciprocal Rank Fusion ne lit que les positions :
score(d) = somme sur les classements r de 1 / (k + rang_r(d))
Avec k = 60, un document premier partout marque 2/61. Un document premier d'un côté et
vingtième de l'autre marque 1/61 + 1/80, soit moins qu'un document deuxième des deux côtés.
La méthode récompense l'accord entre moteurs, ce qui est exactement l'objectif : un passage que
les deux approches trouvent pertinent pour des raisons différentes est un bon candidat.
Aucun paramètre à régler, aucune dépendance à l'échelle des scores d'origine, un comportement identique quel que soit le corpus. Pour un projet qui n'a pas de jeu d'entraînement pour calibrer une pondération, c'est le bon compromis.
Ce que le reclassement ajoute par-dessus
La fusion produit une vingtaine de candidats plausibles. Les cinq premiers ne sont pas nécessairement les cinq meilleurs : la fusion mesure un accord entre deux mesures de surface, pas une capacité à répondre.
Un modèle qui lit réellement les vingt passages et les note de 0 à 10 face à la question change les cinq retenus. Sur le jeu de vingt questions de ce site, cette étape est celle qui déplace le plus l'aiguille — les chiffres sont sur la page d'évaluation, avec la configuration exacte de chaque exécution.
Elle a un coût : un appel de modèle supplémentaire avant la génération, donc de la latence et du quota. Le compromis retenu ici est de la rendre facultative et de dégrader proprement : si le reclassement échoue, l'ordre issu de la fusion est conservé et la réponse part quand même. Une liste un peu moins bien triée vaut infiniment mieux qu'une erreur.
Le garde-fou, souvent oublié
Reste le cas où le corpus ne contient tout simplement pas la réponse. Un système de récupération retourne toujours quelque chose : les cinq passages les moins mauvais existent, même quand aucun ne convient. Sans seuil, le modèle reçoit cinq extraits hors sujet accompagnés d'une consigne lui demandant de citer ses sources, et il obéit — en fabriquant un lien entre la question et ce qu'on lui a donné.
Le seuil se calibre sur le jeu d'évaluation, pas à l'intuition. Ici, une note de reclassement inférieure à 4 sur 10 sur le meilleur passage déclenche un refus explicite. Un système qui répond toujours est un système qui invente parfois.