← Resources
By Sora Kashiwagi
— Senior Engineer, Vector Search
·
· TUTORIAL
Recherche hybride : combiner BM25 et recherche vectorielle pour le RAG
La recherche par mots-clés (BM25) et la recherche vectorielle échouent de manières opposées, et c'est précisément pourquoi le RAG en production les combine. Ce guide explique les deux méthodes, comment la fusion (RRF) combine leurs résultats, où s'intègre le reranking et quand la recherche hybride surpasse significativement la vectorielle pure.
Deux types de recherche qui échouent différemment
BM25 (recherche lexicale ou par mots-clés) note les documents sur la correspondance exacte des termes, en pondérant les termes rares et en pénalisant la longueur. Elle est déterministe et s'exécute sur un index inversé. La recherche vectorielle (sémantique) encode les requêtes et les documents en embeddings denses et récupère par similarité des plus proches voisins, capturant le sens, les synonymes et les paraphrases — même d'une langue à l'autre.
Leurs faiblesses sont des images miroir. BM25 passe à côté des synonymes et des concepts : une requête sur «problèmes de mémoire de base de données» ne trouvera pas une page intitulée «politiques d'éviction de cache» si les mots littéraux diffèrent. La recherche vectorielle passe à côté des tokens exacts — acronymes, SKUs, codes d'erreur, IDs, numéros de modèle — et souffre de dérive sémantique, renvoyant des résultats sémantiquement proches mais erronés comme «chaussures de course Adidas» pour une requête «chaussures de course Nike». Comme les modes d'échec sont complémentaires, aucun à lui seul ne suffit.
Ce que fait la recherche hybride
La recherche hybride exécute la récupération lexicale (BM25) et dense (vectorielle) en parallèle, puis fusionne leurs deux listes de résultats classés en une seule. L'étape de fusion est la partie intéressante, car les scores BM25 et les scores de similarité vectorielle se situent sur des échelles complètement différentes — on ne peut pas simplement les additionner.
C'est pourquoi la méthode de fusion dominante, Reciprocal Rank Fusion (RRF), n'utilise que la position dans le classement, pas les scores bruts. Le score fusionné de chaque document est la somme, sur les deux récupérateurs, de 1 divisé par (k plus son rang), où k est une petite constante (généralement 60 ; certaines études utilisent 20). Comme elle ignore entièrement les distributions de scores, RRF ne nécessite aucune normalisation et fonctionne « clé en main » — ce qui explique qu'elle soit la valeur par défaut dans la plupart des bases de données vectorielles.
RRF vs fusion pondérée
RRF n'est pas la seule option. La fusion pondérée (alpha) normalise les deux ensembles de scores et les mélange avec un poids ajustable : un alpha de 0 est une recherche purement par mots-clés, 1 est une recherche purement vectorielle, 0,5 est équilibré, et les valeurs par défaut se situent souvent autour de 0,75 vers le sémantique. Certains moteurs proposent également une fusion basée sur les scores relatifs et sur les distributions.
Le compromis : RRF est robuste et léger en paramètres, idéal quand on ne souhaite pas faire de réglage par corpus. La fusion pondérée vous donne un curseur pour favoriser la correspondance exacte des termes (alpha plus bas) sur du contenu technique riche en identifiants, ou la sémantique (alpha plus élevé) pour les questions en langage naturel. Commencez par RRF ; recourez à la fusion pondérée lorsque vous avez une raison claire de privilégier l'un des récupérateurs.
Où s'intègre le reranking
La récupération hybride est la première étape ; le reranking est la seconde. Un récupérateur rapide (BM25, vectoriel ou hybride) extrait un ensemble de candidats, puis un cross-encoder réévalue chaque candidat en encodant conjointement la requête et le document en une seule passe avec une attention croisée complète. Les cross-encoders sont bien plus précis que les récupérateurs de première étape, mais trop coûteux pour s'exécuter sur l'ensemble du corpus ; ils ne réévaluent donc que les k meilleurs candidats.
Le pipeline de production canonique est donc : récupération hybride (BM25 + vectoriel, fusionnée avec RRF) → cross-encoder ou reranker LLM → meilleurs résultats dans le contexte du modèle. Chaque étape fait ce pour quoi elle est la meilleure — le rappel d'abord, la précision en dernier.
Est-ce vraiment utile ? Et comment le construire dans osFoundry
Les gains sont réels mais dépendent de vos données. L'étude BEIR d'Elastic a constaté que l'hybride RRF améliorait le NDCG@10 moyen d'environ 18% par rapport à BM25 seul, et d'une marge plus faible par rapport à un encodeur appris robuste, et qu'il était aussi bon ou meilleur que BM25 sur tous les jeux de données testés. À mesure que les modèles denses se sont améliorés, le gain marginal de l'hybride s'est réduit — souvent quelques points de pourcentage sur les données dans le domaine — mais il reste le plus important sur les corpus hors domaine, les termes rares et les requêtes mêlant langage naturel et identifiants exacts. L'hybride reste la valeur par défaut en production.
Le pipeline de RAG personnalisé d'osFoundry expose cela sous forme d'étapes composables plutôt que comme une boîte noire : une étape BM25 et une étape vectorielle s'exécutent en parallèle, une étape de fusion (RRF par défaut, pondérée en option) les fusionne, et une étape de reranking affine le résultat avant qu'il n'atteigne le modèle. Vous ajustez l'équilibre lexical-sémantique par base de connaissances dans la configuration, en suivant le schéma récupérer-fusionner-reclasser sans écrire la tuyauterie.
Frequently asked questions
- Quelle est la différence entre recherche par mots-clés et recherche sémantique ?
- La recherche par mots-clés (lexicale), comme BM25, correspond aux termes exacts et pondère les rares — précise mais aveugle aux synonymes. La recherche sémantique (vectorielle) encode le sens en embeddings et trouve par similarité, capturant les paraphrases et les concepts connexes, mais peut passer à côté des tokens exacts comme les IDs et les codes d'erreur. Elles sont fortes dans des situations opposées.
- Qu'est-ce que la recherche hybride ?
- La recherche hybride exécute en parallèle la récupération par mots-clés (BM25) et la vectorielle, et fusionne leurs résultats classés en une seule liste avec un algorithme de fusion. Elle existe parce que les deux méthodes échouent différemment — la vectorielle gère les synonymes et les concepts, BM25 excelle sur les termes exacts, les identifiants et le jargon rare — donc les combiner améliore à la fois le rappel et la précision.
- Qu'est-ce que Reciprocal Rank Fusion (RRF) ?
- RRF fusionne deux listes classées en n'utilisant que la position dans le classement, pas les scores bruts. Le score fusionné de chaque document est la somme, sur les récupérateurs, de 1 divisé par (k plus son rang), où k est une petite constante (généralement 60). Comme il ignore les échelles de scores incompatibles de BM25 et de la recherche vectorielle, il ne nécessite aucune normalisation et fonctionne bien clé en main.
- Quand la recherche hybride surpasse-t-elle la recherche vectorielle pure ?
- Quand les requêtes mêlent langage naturel et identifiants exacts, utilisent un jargon rare ou spécifique au domaine, s'exécutent sur du contenu hors domaine ou sont multilingues. La recherche vectorielle pure peut suffire pour des questions purement conceptuelles sur des données bien intégrées et dans le domaine. Pour les bases de connaissances techniques remplies de codes et de noms de produits, l'hybride est nettement meilleur.
- Pourquoi la recherche vectorielle passe-t-elle à côté des termes exacts et des IDs ?
- Les embeddings compriment le texte en un vecteur de taille fixe qui capture le sens, pas l'orthographe exacte, donc les tokens rares comme les codes d'erreur, les SKUs et les acronymes sont lissés — une propriété parfois appelée cécité structurelle. Le modèle sait de quoi parle un passage mais pas qu'il contient la chaîne littérale que vous avez recherchée, ce qui est exactement ce que BM25 fait bien.
- RRF ou fusion pondérée — laquelle utiliser ?
- Commencez par RRF : il est robuste, léger en paramètres et ne nécessite aucun réglage par corpus. Passez à la fusion pondérée (alpha) lorsque vous avez une raison claire de privilégier un récupérateur — un alpha plus bas pour favoriser la correspondance exacte des termes sur du contenu riche en identifiants, un alpha plus élevé pour favoriser la sémantique sur les questions en langage naturel.
- La recherche hybride ajoute-t-elle de la latence ou des coûts, et en vaut-elle la peine ?
- Elle exécute deux récupérations plus une étape de fusion, il y a donc un certain surcoût, et le reranking en ajoute davantage. Pour la plupart des systèmes RAG, les gains en rappel et en précision le justifient, surtout sur les corpus techniques ou à contenu mixte. Si vous avez des données bien intégrées et purement conceptuelles et que la latence est critique, le vectoriel pur peut suffire — mesurez sur vos propres requêtes.
Sources