Aller au contenu principal
Retour à Technique
ChatbotArticle cluster

Recherche hybride RAG : BM25 + vecteurs en production

Hybrid search pour RAG : BM25 + embeddings, fusion (RRF), reranking, filtres, tuning et métriques. Méthode concrète pour un chatbot fiable.

Pierre Tonon
Senior Tech Writer (IA conversationnelle), Webotit.ai
9 min de lecture
Réservation

Réservez votre diagnostic IA

Un expert Webotit analyse vos flux, identifie les quick-wins et vous propose une feuille de route personnalisée.

45 min · Gratuit · Réponse sous 24h

Voir les disponibilités
En bref

La recherche hybride (hybrid search) combine deux “yeux” complémentaires : BM25 pour attraper les mots exacts (codes, références, noms propres) et la recherche vectorielle pour attraper le sens (synonymes, paraphrases).123 En RAG, on récupère des candidats via les deux, puis on fusionne (souvent via Reciprocal Rank Fusion / RRF) et/ou on reranke pour produire un top‑k robuste, stable et défendable en production.45 La version “qui marche” : union de candidats (BM25 + vecteurs) → fusion RRF → reranking léger → filtres (ACL, langue, produit) → injection de contexte.

Pourquoi la recherche hybride existe (spoiler : parce que les utilisateurs sont humains)

Il y a deux types de requêtes en entreprise :

  1. celles où l’utilisateur explique (“je cherche la procédure pour résilier”),
  2. celles où l’utilisateur pointe (“résiliation contrat 19‑A/7”, “SLA P2”, “article 12.3”, “KB‑8472”).

La recherche sémantique adore le type (1). La recherche mots‑clés adore le type (2).
Votre production, elle, adore les deux. En même temps. Le vendredi à 18h12.

Et c’est exactement pour ça que le “tout vecteur” finit souvent par se prendre un mur : pas un mur de math, un mur de réalité.

Recherche hybride : la définition utile (sans incantations)

La recherche hybride, c’est :

  • un moteur mots‑clés (souvent BM25) qui score la similarité lexicale,1
  • un moteur sémantique (embeddings + similarité vectorielle),3
  • une stratégie de fusion qui combine les deux listes de résultats (et qui évite de demander à vos scores d’être comparables par magie).4

Vous pouvez voir ça comme un duo :

  • BM25 = le collègue ultra‑littéral qui ne rate jamais un numéro de référence,
  • vecteurs = le collègue “compréhension” qui sait que “service client” et “support” parlent de la même chose.

Et quand ils sont d’accord, vous avez un système qui respire. Quand ils ne le sont pas, vous avez au moins une seconde opinion.

Pour les bases : Semantic Search, Embedding, RAG.

Pourquoi le RAG aime la recherche hybride (et inversement)

Un RAG n’est pas “un LLM avec des documents”. C’est un pipeline retrieve → generate.5

La qualité du RAG dépend d’un truc brutalement simple :

Les meilleurs modèles 2026 ne peuvent pas répondre correctement à partir d’un contexte médiocre.

Le meilleur LLM du monde, avec les mauvais passages, fera une réponse… élégante, confiante, et fausse. Un peu comme un avocat brillant à qui vous donnez le mauvais dossier.

La recherche hybride, elle, augmente vos chances d’amener les bons passages à l’audience.

Le problème caché : BM25 et vecteurs ne parlent pas la même langue

Une erreur classique consiste à faire :

“Score BM25 + score vecteur = score final”

Sur le papier, ça a l’air raisonnable. Dans la vraie vie, c’est comme additionner des degrés Celsius et des kilomètres : vous obtenez un nombre, mais pas une vérité.

BM25 produit des scores qui dépendent de :

  • la fréquence des termes,
  • la longueur du document,
  • les paramètres de similarité.

La recherche vectorielle produit des scores basés sur une distance/similarité (cosine, dot product…), dépendants :

  • du modèle d’embedding,
  • de la normalisation,
  • de l’index ANN.

Vous pouvez les normaliser. Mais vous ne pouvez pas les rendre “naturellement comparables” sans hypothèses (souvent fragiles).

La conséquence : en hybride, on préfère souvent fusionner des rangs plutôt que des scores.

Trois stratégies hybrides qui fonctionnent (vraiment)

1) La fusion par rang : Reciprocal Rank Fusion (RRF)

La Reciprocal Rank Fusion (RRF) combine des listes de résultats en additionnant une fonction décroissante du rang.4

Intuition :

  • si un document est bien classé par BM25 et par vecteurs, il monte naturellement,
  • si un document est bien classé par une seule méthode, il peut quand même survivre,
  • vous ne demandez pas aux scores d’être sur la même échelle.

Forme simplifiée (idée, pas dogme) :

score(d) = Σ_s 1 / (k + rank_s(d))

s parcourt vos systèmes (BM25, vecteurs, éventuellement d’autres), et k évite de sur‑valoriser les rangs 1–2.

RRF est populaire pour une raison très peu glamour : ça marche souvent du premier coup.

2) Le “candidate union + rerank” (la version moderne)

Pattern très robuste en 2026 :

  1. récupérer N1 candidats BM25,
  2. récupérer N2 candidats vecteurs,
  3. faire l’union,
  4. envoyer l’ensemble au reranker pour obtenir votre top‑k final.

Le reranker agit comme le chef d’orchestre : il lit la requête et les candidats, et réordonne selon la pertinence. (On y revient dans notre guide dédié : Reranking en RAG.)

3) La fusion par score (possible, mais à manier comme un scalpel)

Oui, on peut faire une somme pondérée. Mais à condition de :

  • normaliser (min‑max, z‑score, calibration),
  • surveiller les dérives (changement de corpus, update d’embeddings),
  • garder une porte de sortie (fallback BM25 pur sur certains intents, par exemple).

C’est un bon choix si :

  • vous contrôlez bien votre distribution de scores,
  • vous avez un vrai pipeline d’évaluation (voir : Évaluer un chatbot IA),
  • vous savez expliquer la logique en interne.

Sinon, RRF ou rerank.

Architecture : 2 façons de bâtir un hybride (et 1 façon de vous faire mal)

Option A — Moteur “tout‑en‑un” (mots‑clés + vecteurs)

Certains moteurs proposent une logique hybride native : index textuel + index vectoriel + requête hybride + fusion.23

Avantages :

  • moins de plomberie,
  • filtres et scoring au même endroit,
  • ops plus simple (souvent).

Inconvénients :

  • vous “achetez” la vision du moteur sur l’hybride,
  • certains patterns avancés (rerank externe, multi‑index) demandent plus d’intégration.

Option B — “Best-of-breed” : BM25 d’un côté, vecteurs de l’autre

Pattern fréquent :

  • BM25 dans un moteur de recherche (ou même du full‑text SQL),
  • embeddings dans une base vectorielle,
  • fusion côté application (RRF, union+rerank).

Avantages :

  • liberté de choix (moteur, base vectorielle, reranker),
  • optimisation fine (latence/coût),
  • migrations plus faciles.

Inconvénients :

  • plus d’ingénierie,
  • observabilité à soigner (sinon vous déboguez à la bougie).

Option C — “On va faire simple : que du vecteur”

Ce n’est pas une option. C’est une dette technique déguisée en minimalisme.

Il y a des cas où du vecteur seul suffit (corpus homogène, requêtes naturelles, peu de codes).
Mais la minute où vous mettez :

  • des références produit,
  • des identifiants internes,
  • des noms propres instables,
  • du multilingue,
  • des filtres d’accès (ACL),

…le tout‑vecteur devient un pari.

Le nerf de la guerre : filtres, ACL, et multi‑tenant

Le vrai monde n’est pas “un index, une équipe, une vérité”.

Vous avez :

  • des BU,
  • des contrats,
  • des règles d’accès,
  • des documents sensibles,
  • des clients qui ne doivent pas voir les données des autres (et c’est non négociable).

En hybride, ces contraintes s’appliquent des deux côtés (BM25 et vecteurs), sinon vous récupérez des candidats que vous devrez filtrer après coup… donc vous jetez une partie de votre recall au moment le plus critique.

Si vous devez gérer du multi‑tenant proprement, lisez : ACL & métadonnées en RAG.

Query rewriting : utile, mais pas au prix de la vérité

On voit de plus en plus de pipelines qui “améliorent” la requête avec un LLM :

  • reformulation,
  • expansion (synonymes),
  • génération de sous‑requêtes,
  • RAG‑Fusion (plusieurs requêtes, puis fusion).6

C’est puissant. Et aussi dangereusement facile à faire n’importe comment.

Le piège : le LLM “nettoie” la requête… et supprime précisément l’information discriminante.

Exemple :

  • input : “procédure résiliation contrat 19‑A/7”
  • rewrite naïf : “procédure de résiliation de contrat”

Vous venez de perdre le crochet qui aurait permis à BM25 de ramener le bon document.

Comment évaluer un moteur hybride (sans vous mentir)

Deux niveaux d’évaluation :

1) Qualité de retrieval (avant le LLM)

Vous voulez répondre à une question simple :

“Est-ce que mes top‑k contiennent les bons passages ?”

Le minimum :

  • un petit set de requêtes réelles,
  • des jugements (même “bon/mauvais”),
  • une comparaison BM25 vs vecteurs vs hybride.

2) Qualité end‑to‑end (avec le LLM)

Parce que votre utilisateur ne paie pas pour du “recall@10”.
Il paie pour une réponse utile, correcte, traçable.

Pour ça, vous avez besoin d’un protocole RAG (groundedness, citations, refus, etc.).
On détaille les méthodes dans : Évaluation chatbot IA.

Open source vs commercial : les options qui comptent (2026)

La bonne nouvelle : l’hybride est devenu mainstream.
La mauvaise : ça veut dire qu’il existe 12 façons de le faire, et 11 façons de se tromper.

Voici une cartographie pratique :

BriqueOpen sourceCommercial / cloudNotes prod
Moteur hybrideOpenSearch (hybrid search)Weaviate Cloud, services managésPratique quand vous voulez BM25 + vecteurs + filtres au même endroit
RerankingCross-encoders SBERT, BGE reranker, ColBERTCohere Rerank, Voyage rerankerSouvent le meilleur ROI après un retrieval “ok”
LLM (génération / rewrite)Open-weight selon contraintes (ex. Llama) + self-hostAPIs (OpenAI, Anthropic, Google, Mistral, Cohere…)Le LLM n'est pas le moteur de recherche : il doit rester contraint par le contexte
Docs & PDFOCR open source (Tesseract, PaddleOCR)OCR / Document AI (AWS, Google, Azure, Mistral…)Souvent, OCR + texte + retrieval bat un VLM “direct” sur des documents longs

Sur les modèles et briques 2026 (LLM, VLM, OCR, STT, TTS, S2S), voir aussi : Modèles IA 2026 : lesquels pour un chatbot B2B ?

Méthode “sans drama” : mettre un hybride en prod en 10 jours

1

Définissez 30 requêtes réelles (dont 10 “moches”)

Mélangez : questions naturelles, requêtes courtes, fautes de frappe, codes internes, noms propres, acronymes. Les requêtes moches sont celles qui cassent les systèmes “de démo”.

2

Construisez un baseline BM25 propre

Indexation, analyseur, stemming si besoin, champs adaptés. Un BM25 mal configuré donne une fausse impression : “la sémantique gagne” alors que vous avez juste saboté le lexical.

3

Ajoutez la recherche vectorielle (embeddings) en parallèle

Choisissez un modèle d’embedding adapté (langue, domaine), définissez votre top‑k et vos filtres. Référence : Embeddings & vector database.

4

Fusionnez via RRF (ou union + rerank)

Commencez simple : RRF.4 Si vous avez déjà beaucoup de candidates, passez à “union + rerank” pour un top‑k plus précis.

5

Ajoutez les filtres (ACL, langue, produit) au bon endroit

Les filtres doivent s’appliquer au retrieval, pas après. Sinon vous perdez votre recall sur les requêtes critiques. Guide : ACL & métadonnées RAG.

6

Mesurez (retrieval + end-to-end) et itérez

Comparez BM25 vs vecteurs vs hybride sur vos requêtes. Puis mesurez l’impact sur les réponses RAG (groundedness, erreurs, latence). Guide : Évaluation chatbot IA.

7

Stabilisez la perf (cache, p95, observabilité)

Un hybride peut être plus coûteux : deux recherches + fusion + rerank. Compensez avec du cache intelligent et de l’observabilité. Guide : Latence & caching.

FAQ — Recherche hybride

Questions frequentes

Hybrid search = BM25 + vecteurs ?

Oui, dans 95% des cas. “Hybrid” signifie : combiner une recherche lexicale (BM25) et une recherche sémantique (vecteurs). Le reste, c’est la stratégie de fusion et la manière de l’opérer (filtres, rerank, observabilité).

Pourquoi pas juste du BM25 ?

BM25 est excellent sur les termes exacts, mais il rate les synonymes, les paraphrases et les questions naturelles. Dès que vos utilisateurs ne savent pas “comment c’est écrit dans le doc”, la recherche sémantique devient un avantage compétitif.

Pourquoi pas juste du vecteur ?

Parce que les entreprises vivent de codes, d’acronymes, de noms propres, de références, et de formulations très spécifiques. Le vecteur seul peut “comprendre” mais rater le crochet lexical qui fait gagner en précision.

RRF ou somme pondérée ?

RRF est un bon default car il fusionne des rangs (pas des scores).4 La somme pondérée peut être excellente… si vous normalisez et mesurez sérieusement. En pratique : RRF d’abord, sophistication ensuite.

Le reranking est-il obligatoire ?

Non, mais souvent rentable. Dès que vos candidats se ressemblent, un reranker (cross-encoder ou API) améliore la précision du top‑k. Voir : /blog/chatbot/technique/reranking-rag-cross-encoder-vs-llm-reranker.

Et si mon corpus est en PDF scanné ?

Commencez par extraire du texte propre (OCR + structure) puis faites du retrieval hybride sur le texte. Pour des documents très longs, OCR + LLM peut être plus stable qu’un VLM “tout-en-un”. Voir : /blog/chatbot/technique/visual-rag-pdf-documents-longs-ocr-layout-vlm et /blog/mailbot/pieces-jointes/traitement-pieces-jointes-ocr-vlm.

Sources et references

  1. [1]Apache Lucene, “BM25Similarity” (documentation).
  2. [2]OpenSearch, “Hybrid search” (documentation).
  3. [3]Weaviate, “Hybrid search” (documentation).
  4. [4]Cormack et al., “Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods” (SIGIR 2009).
  5. [5]Lewis et al., “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks” (RAG).
  6. [6]RAG-Fusion, “A RAG approach using multiple queries and reciprocal rank fusion”.
RAGretrievalBM25hybrid searchRRFrerankingIR

Solutions associées