Aller au contenu
EN FR

Index vectoriel HNSW

Statut documentaire : architecture — voir Maturité et preuves.

Le moteur actuel contient un index natif de type HNSW pour la recherche approximative de plus proches voisins sur des vecteurs flottants. Il est intégré au stockage de l'hypergraphe et n'est pas seulement un service de recherche externe.

Modèle de recherche

HNSW organise les vecteurs en plusieurs couches de graphe. Une requête part d'un point d'entrée, descend de manière gloutonne dans les couches supérieures, puis effectue une recherche plus large dans la couche de base.

Conceptuellement :

vecteur de requête
   -> point d'entrée
   -> descente gloutonne dans les couches supérieures
   -> expansion des candidats en couche 0
   -> K vecteurs voisins scorés

L'index prend en charge l'insertion, la gestion des voisinages par couche et la recherche K plus proches voisins.

Résultats scorés

Le moteur expose des résultats contenant :

  • l'identité du vecteur ;
  • la référence du vecteur ;
  • la distance euclidienne au carré par rapport à la requête.

Les résultats sont ordonnés par distance croissante. La forme KNN non scorée délègue au même ordre de résultats scorés.

K et largeur de recherche

Deux paramètres ont des rôles distincts :

  • K est le nombre maximal de voisins demandés ;
  • la largeur de recherche contrôle combien de candidats sont explorés pendant la recherche.

Une largeur supérieure échange généralement davantage de travail contre un meilleur rappel. Les tests du moteur courant vérifient explicitement qu'augmenter cette largeur ne dégrade pas le rappel sur les charges testées. C'est une propriété de qualité de l'implémentation, pas une garantie universelle pour tout dataset.

Persistance et identité de l'index

L'implémentation actuelle persiste l'état structurel HNSW dans l'hypergraphe. Les tests vérifient notamment que :

  • l'index peut être rouvert par son nom et retrouver son état ;
  • deux indexes nommés restent isolés ;
  • le point d'entrée existe après insertion ;
  • les invariants de couches et voisinages persistent à la réouverture.

L'index vectoriel peut ainsi participer au même environnement conceptuel persistant que les valeurs qu'il indexe.

Paramètres de construction

La construction HNSW utilise des paramètres classiques de nombre de connexions, largeur de recherche de construction et distribution des niveaux. Ce sont des choix d'indexation, pas une sémantique métier.

Ne les encodez pas dans les modèles de domaine. Gardez-les dans la configuration de recherche/index afin qu'ils puissent évoluer sans changer le sens conceptuel.

Appartenance à l'index et appartenance conceptuelle

Un index HNSW peut techniquement contenir un vecteur qui n'est pas enregistré comme embedding. Ce vecteur peut participer à la recherche KNN numérique, mais le pont de recherche conceptuelle l'ignorera car aucune identité symbolique ne peut être résolue.

Pour une recherche conceptuelle, gardez cohérents :

registre d'embeddings
index HNSW

Maturité

L'insertion, le KNN scoré, la persistance/réouverture, l'isolation des indexes nommés, les tests multidimensionnels et les tests orientés rappel sont présents dans la suite de tests du moteur actuel. La représentation de stockage bas niveau reste un détail interne.