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ère | Recherche Vectorielle (Dense) | Recherche Mots-clés (Sparse / BM25) |
|---|---|---|
| Technologie | Embeddings (OpenAI, Bert) | Statistiques de fréquence (TF-IDF) |
| Force | Synonymes, Concepts, Multilangue | Noms propres, Codes erreurs, Termes rares |
| Faiblesse | ”Hallucine” des liens, rate les ID exacts | Ne 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)L’avantage du RRF est qu’il ne nécessite pas de “calibrer” les scores. Les embeddings renvoient des scores de similarité (0.85), BM25 renvoie des scores de pertinence (12.4). Incomparables directement. RRF normalise tout en se basant uniquement sur le rang (le classement).
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)
- Composants : Embeddings, LLM.
- Techniques : Contextual Retrieval (La méthode d’Anthropic), RAG.
- Alternatives : Graph RAG (Utiliser les connaissances structurées).