Smart Brain ne renvoie pas le chunk le plus proche en espérant que ce soit le bon. Il empile trois étages, où chacun couvre l'angle mort du précédent. Le résultat est un passage juste, sourcé, à chaque requête.
Étage 1 : recherche hybride
Deux signaux notent ta question en parallèle, puis fusionnent en un classement unique.
- BM25 pour les termes exacts : le mot rare, l'acronyme, le nom de fichier. Là où l'embedding seul rate.
- Embeddings (Qwen3-Embedding, dimension 1024) pour le sens : la bonne note même quand tes mots ne sont pas ceux de la note.
La fusion combine précision lexicale et proximité de sens. Aucun des deux signaux seul ne suffit.
Étage 2 : le graphe
Tes wikilinks deviennent du contexte. Le graphe lit tes [[liens]] (avec NetworkX) et reconstruit comment tes notes se tiennent. Quand une note pertinente sort, l'expansion par voisinage fait remonter ses voisines, exactement le contexte que tu aurais ouvert à la main.
Étage 3 : le reranking
Les deux premiers étages ramènent un lot large de candidats, par exemple le top 100. Un cross-encoder (bge-reranker-v2-m3) re-note chaque candidat contre ta question et garde le top 5. Le passage le plus juste remonte en tête, mesuré contre la question, pas contre une simple distance vectorielle.
L'agrégation se fait au niveau de la note (max-pool sur les chunks), et le warm-serving du reranker permet de garder le modèle chaud pour des réponses rapides.
La mesure
Le pipeline est évalué sur des ground-truths datés. Il atteint un Hit@1 de 0,909 et un Hit@5 autour de 0,98, en restant strict et honnête sur la méthode. Pas de score parfait annoncé qui ne voudrait rien dire.
Pour aller plus loin
L'article de blog retrieval hybride reprend ces étages avec plus de contexte, et le reranking cross-encoder creuse le dernier étage. Pour l'orchestration au-dessus du retrieval, vois les six agents.