Aller au contenu

RAG Hybride

Ce que vous saurez dans 3 minutes

Vous comprendrez pourquoi le “Vecteur seul” (le standard de 2023) ne suffit pas pour un système RAG de production. Nous verrons comment le RAG Hybride corrige les angles morts des Embeddings et comment l’implémenter conceptuellement.


1. Comprendre : Les deux cerveaux

Pour bien chercher, il faut deux compétences.

  • Cerveau Droit (Vecteurs) : L’intuition, le concept. Idéal pour : “Trouve-moi des trucs sur l’argent”.
  • Cerveau Gauche (Mots-clés) : La précision, le littéral. Idéal pour : “Trouve-moi le formulaire Cerfa n°2042”.

Le Match : Vectoriel vs BM25

CritèreRecherche Vectorielle (Dense)Recherche Mots-clés (Sparse / BM25)
TechnologieEmbeddings (OpenAI, Bert)Statistiques de fréquence (TF-IDF)
ForceSynonymes, Concepts, MultilangueNoms propres, Codes erreurs, Termes rares
Faiblesse”Hallucine” des liens, rate les ID exactsNe comprend pas le sens ou les synonymes
Exemple”J’ai mal au crâne” -> Trouve “Migraine""Erreur 404” -> Trouve exactement “404”

Le RAG Hybride, c’est utiliser les deux en parallèle.


2. Appliquer : L’Architecture Hybride

Comment marier ces deux mondes ? Grâce au Re-ranking.

graph TD
    User([Question Utilisateur]) --> A{Dispatch}
    A -->|1. Mots-clés| B[Moteur BM25]
    A -->|2. Sémantique| C[Base Vectorielle]
    B --> D[Liste Résultats A]
    C --> E[Liste Résultats B]
    D & E --> F{Fusion & Re-ranking (RRF)}
    F --> G[Top 5 Documents Pertinents]
    G --> H[LLM (Réponse)]

L’Algorithme Magique : Reciprocal Rank Fusion (RRF)

Pas besoin de modèle complexe pour fusionner. RRF est une méthode mathématique simple : elle favorise les documents qui apparaissent dans les deux listes en haut du classement.

  • Si le Document A est n°1 en Vecteur et n°1 en Mots-clés -> Score Maximal.
  • Si le Document B est n°1 en Vecteur mais absent en Mots-clés -> Score Moyen.

Code : La Logique de Fusion

def reciprocal_rank_fusion(results_bm25, results_vector, k=60):
scores = {}
# On additionne les scores inverses pour chaque méthode
for rank, doc in enumerate(results_bm25):
scores[doc] = scores.get(doc, 0) + 1 / (k + rank)
for rank, doc in enumerate(results_vector):
scores[doc] = scores.get(doc, 0) + 1 / (k + rank)
# On trie par score décroissant
return sorted(scores.items(), key=lambda x: x[1], reverse=True)

3. Aller plus loin : Le Re-ranking par Cross-Encoder

Pour une précision ultime (mais plus lente), on ajoute une étape après la fusion : le Cross-Encoder. C’est un modèle IA spécialisé qui lit la question ET le document et donne un score de pertinence absolue (0 à 1).

  • Architecture : Hybrid Retrieval -> Top 50 -> Cross-Encoder -> Top 5 -> LLM.

Questions Fréquentes

Les bases vectorielles font-elles du Hybride ? Oui, la plupart des vecteurs DB modernes (Pinecone, Weaviate, Qdrant) ont intégré une fonction “Hybrid Search” qui fait tout ça pour vous en une seule requête API.

Est-ce toujours mieux que le vectoriel seul ? Presque toujours. Sur des benchmarks standards, le RAG Hybride surpasse le Dense Retrieval de 5 à 10% en précision (Recall@K). C’est devenu le standard de l’industrie pour la production.


Notions Liées (Spider Web)