La plupart des systèmes de RAG font une seule chose : ils encodent ta question en vecteur, cherchent le chunk le plus proche dans la base, et espèrent que c'est le bon. Ça marche souvent. Ça rate dès que ta question contient un terme rare, un acronyme ou un nom de fichier. Le retrieval hybride corrige ça en empilant plusieurs signaux complémentaires.
Étage 1 : la recherche, lexicale et sémantique
Deux signaux notent la même requête, puis fusionnent.
BM25, pour les termes exacts
BM25 est une méthode lexicale éprouvée. Elle excelle là où l'embedding seul rate : le mot rare, l'acronyme, le nom de fichier précis. Si tu cherches bge-reranker-v2-m3, tu veux une correspondance exacte, pas un voisin sémantique approximatif.
Les embeddings, pour le sens
Un embedder (ici Qwen3-Embedding, dimension 1024) capte l'intention. Il retrouve la bonne note même quand tes mots ne sont pas ceux de la note. « Comment je cache les vecteurs » et « stratégie de persistance des embeddings » pointent vers la même décision.
La fusion des deux scores donne un classement unique : précision lexicale plus proximité de sens. Aucun des deux signaux seul ne suffit.
Étage 2 : le graphe, le contexte par les liens
Une note ne vit pas isolée. Dans un vault Obsidian, tes [[wikilinks]] disent comment les idées se relient. Le graphe lit ces liens (avec NetworkX) et reconstruit le voisinage. Quand une note pertinente sort, l'expansion par voisinage fait remonter ses voisines, exactement le contexte que tu aurais ouvert à la main.
C'est ce qui distingue un knowledge graph d'une simple recherche : la structure de tes notes devient un signal de retrieval. On creuse l'angle Obsidian dans interroger ton vault.
Étage 3 : le reranking, le bon passage en tête
Les deux premiers étages ramènent un lot de bons candidats, par exemple le top 100. Mais « bon candidat » ne veut pas dire « la meilleure réponse à cette question précise ». Un cross-encoder re-note chaque candidat contre ta question et trie. Le passage le plus juste remonte en tête. On y consacre un article entier : le reranking cross-encoder.
Pourquoi empiler plutôt que choisir
Chaque étage couvre l'angle mort du précédent.
- Les embeddings ratent les termes exacts, BM25 les rattrape.
- BM25 ignore le sens, les embeddings le captent.
- Les deux ignorent la structure, le graphe la ramène.
- Aucun ne sait classer finement, le reranker s'en charge.
Le résultat se mesure. Sur des ground-truths datés, ce pipeline atteint un Hit@1 de 0,909, en restant strict et honnête sur la méthode, sans score magique.
En résumé
Un retrieval hybride, ce n'est pas un embedder de plus, c'est une chaîne où chaque maillon compense les autres. Pour le contexte général, lis qu'est-ce qu'un RAG local. Pour brancher ce pipeline sur ton vault, vois la documentation et les offres Studio.