Aller au contenu
EN FR

Utiliser les embeddings pour la recherche conceptuelle

Statut documentaire : guide — voir Maturité et preuves.

Cette page décrit le workflow au niveau moteur sans exposer les classes privées d'implémentation. Les APIs spécifiques aux bindings devront encapsuler le même cycle de vie lorsque leurs contrats seront publiés.

1. Choisir l'espace d'embedding

Définissez un nom et une politique stables :

registre/index : support-ticket-v3
modèle : <modèle d'embedding et version>
dimension : <dimension du modèle>
normalisation : <politique>
snapshot source : <version du modèle/données conceptuelles>

Ne mélangez pas des vecteurs produits par des modèles incompatibles dans le même espace de recherche.

2. Produire un vecteur pour une valeur conceptuelle

Le vecteur peut provenir d'un modèle local, d'un provider d'embeddings externe, d'une projection de graphe ou d'un autre pipeline numérique validé.

Le calcul de l'embedding et son enregistrement conceptuel sont deux opérations distinctes.

3. Enregistrer l'identité conceptuelle

Enregistrez la paire :

valeur conceptuelle <-> vecteur

Le moteur dispose alors d'un mapping réversible. Traitez un conflit d'enregistrement comme un problème d'intégrité plutôt que de l'écraser silencieusement.

4. Insérer le vecteur dans HNSW

Le registre résout l'identité ; HNSW fournit la recherche numérique approximative. Un espace de recherche conceptuelle a normalement besoin des deux.

registre : mapping d'identité
HNSW : voisinage numérique

5. Rechercher

Pour une recherche sémantique non contrainte :

vecteur de requête
 -> KNN HNSW
 -> résolution via le registre
 -> candidats conceptuels

Pour une recherche contrainte par type :

vecteur de requête
 -> ensemble HNSW plus large
 -> résolution via le registre
 -> filtre dur Kind/instance
 -> K premiers candidats compatibles

6. Construire une requête composite lorsqu'un vecteur ne suffit pas

Plusieurs termes peuvent être combinés avec des poids. Choisissez entre :

  • un vecteur de requête pondéré et normalisé ;
  • plusieurs recherches HNSW par terme suivies d'une fusion.

Choisissez ensuite le scoring indépendamment de la génération des candidats.

Exemple d'intention :

Terme 1 : embedding(Document)  poids 0.3
Terme 2 : embedding(Alice)     poids 0.7
Contrainte dure : Kind = Document

Les poids sont des préférences numériques. La contrainte dure reste symbolique.

7. Interpréter correctement le résultat

Un résultat doit être consommé comme :

identité conceptuelle + évidence numérique

Utilisez l'objet conceptuel pour les permissions, règles, relations, actions et H-Logic. Utilisez distance/score pour le classement, la présentation de confiance ou des traitements numériques aval.

Checklist opérationnelle

  • garder synchronisés registre et appartenance HNSW ;
  • versionner explicitement les espaces d'embeddings ;
  • reconstruire ou migrer plutôt que mélanger silencieusement plusieurs versions de modèles ;
  • sur-récupérer les candidats lorsque des filtres durs peuvent en rejeter ;
  • ne pas comparer des scores non calibrés entre espaces différents ;
  • journaliser l'identité du registre/index avec les diagnostics de recherche ;
  • conserver la règle : la similarité vectorielle n'est pas une preuve logique.