NotariumDocumentation
Version de la documentation: latest
FR

Recherche hybride

La recherche dans Notarium est composée de canaux indépendants qui se complètent. La recherche plein texte (lexicale) est toujours disponible et ne demande aucune configuration. La recherche sémantique (par le sens) et la prise en compte des liens du graphe sont des couches optionnelles qui viennent s'y ajouter. Les résultats des canaux fusionnent en un classement unique, et si les couches optionnelles sont indisponibles, la recherche continue de fonctionner sur le texte intégral — sans erreur.

Trois canaux

CanalCe qu'il faitQuand il fonctionne
Lexical (FTS/BM25)Trouve les correspondances exactes de mots et d'expressions, classe par BM25Toujours, sans configuration
Sémantique (vecteurs)Trouve ce qui est proche par le sens, même sans mots communsOptionnel (VECTOR_SEARCH)
Graph boostFait remonter les voisins d'un résultat via les [[wiki-links]]Optionnel (GRAPH_BOOST), désactivé par défaut

Le canal lexical est le socle : il fonctionne dès le démarrage, sans rien à installer. Le canal sémantique ajoute la compréhension du sens (synonymes, reformulations), et le graph boost apporte la connaissance des liens entre les notes.

Comment les résultats fusionnent

Les canaux sont combinés par l'algorithme RRF (Reciprocal Rank Fusion, k=60) : chaque canal produit sa propre liste classée, et RRF les réunit en un classement commun selon les positions, plutôt que selon des scores « bruts » incomparables. Ainsi, une correspondance lexicale et une proximité de sens sont pondérées ensemble. La fusion se fait au niveau de la note — par son identifiant stable.

flowchart LR
  q([Requête]) --> fts[Lexical · FTS/BM25]
  q --> vec[Sémantique · vecteurs]
  q --> gr[Graphe · 1-hop]
  fts --> rrf{Fusion RRF}
  vec --> rrf
  gr --> rrf
  rrf --> res([Résultats])

Si la sémantique est indisponible

La couche sémantique peut être désactivée ou indisponible : VECTOR_SEARCH n'est pas activé, la pile vectorielle n'est pas installée, le modèle ne s'est pas chargé, ou le calcul du vecteur de la requête a dépassé son délai. Dans tous ces cas, la requête est traitée par le canal lexical — la recherche répond toujours et ne renvoie pas d'erreur simplement parce que la sémantique manque.

La sémantique s'active à la demande

La recherche vectorielle embarque une pile native lourde (~660 Mo sur le disque) et charge le modèle d'embeddings en mémoire (des centaines de Mo de RAM) ; elle est donc désactivée par défaut dans l'image publique. Comment l'activer et quel modèle choisir sont expliqués dans Configuration de la recherche.

Où vous cherchez

  • Spotlight / OmniSearch — un accès rapide et classé vers une note. La recherche hybride complète fonctionne ici : c'est la pertinence qui compte, pas seulement la correspondance exacte d'un mot. Voir Recherche et Spotlight.
  • Filtre du Fil (?q= dans le Fil) — un filtre lexical sur le corpus : il conserve les notes où les termes apparaissent réellement, et se combine aux filtres par dossier, tag et date.

L'index et sa reconstruction

L'index de recherche est un savoir dérivé : il est construit à partir des fichiers et entièrement récupérable par un nouveau scan. Un index par espace. Changer de modèle d'embeddings n'est pas une migration mais une reconstruction de la partie vectorielle depuis zéro. La construction initiale de l'index vectoriel sur un corpus volumineux prend des minutes, voire des heures ; pendant ce temps, l'interface affiche un indicateur « Building search index… », tandis que la recherche elle-même reste disponible en mode lexical.

Sujets connexes : Graphe de connaissances — d'où vient le troisième canal, Configuration de la recherche — activer la sémantique et choisir un palier, File-first — pourquoi l'index est récupérable.