Une base de données classique range des lignes et des colonnes : des clients, des commandes, des dates. Elle retrouve une information quand on lui donne un critère exact. Une base de données vectorielle range autre chose : des embeddings, c'est-à-dire des suites de nombres qui représentent le sens de passages de texte. Elle retrouve les passages dont le sens est le plus proche d'une question, même si les mots diffèrent.
À quoi sert une base vectorielle
Dans un assistant IA qui recherche des passages par le sens, la base vectorielle joue le rôle d'index. Le fonctionnement suit trois étapes :
- Le chargement : chaque document de la base de connaissances est découpé en passages, chaque passage reçoit son embedding, et l'ensemble est enregistré dans la base vectorielle avec une référence au document d'origine
- La recherche : la question du visiteur reçoit à son tour un embedding, et la base renvoie les passages dont les vecteurs sont les plus proches
- La réponse : ces passages sont transmis au modèle de langage, qui rédige la réponse et peut citer le document d'origine
Ces trois étapes forment le cœur du RAG, la génération augmentée par récupération. La base vectorielle rend la deuxième étape rapide, même avec des centaines de milliers de passages.
Comment elle trouve les passages proches
Comparer une question à chacun des passages, un par un, deviendrait lent sur un grand volume. Les bases vectorielles utilisent des index de recherche approximative du plus proche voisin, qui organisent les vecteurs pour trouver très vite les plus proches sans tout parcourir. Le résultat n'est pas toujours le plus proche absolu, mais il en est suffisamment près pour l'usage, avec un gain de temps considérable.
La proximité se mesure en général par la similarité cosinus, qui compare la direction de deux vecteurs. Deux passages qui parlent du même sujet pointent dans des directions voisines, quelle que soit leur longueur.
Les solutions existantes
Il existe deux grandes familles d'outils :
- Des bases spécialisées, conçues uniquement pour les vecteurs, comme Pinecone, Weaviate, Qdrant ou Milvus
- Des extensions de bases classiques, comme pgvector pour PostgreSQL, qui ajoutent la recherche vectorielle à une base déjà utilisée pour le reste de l'application
Pour une application de taille raisonnable, l'extension d'une base existante suffit souvent et évite de multiplier les systèmes à maintenir. Les bases spécialisées se justifient pour de très grands volumes ou des besoins de recherche avancés.
Ce qu'une base vectorielle ne fait pas
- Elle ne vérifie pas les faits. Elle trouve des passages proches par le sens ; elle ne sait pas si l'un d'eux répond correctement à la question ou s'il est à jour
- Elle ne remplace pas le tri des documents. Une ancienne grille de prix rangée dans la base sera retrouvée aussi facilement que la nouvelle
- Elle ne gère pas seule les termes exacts. Un numéro de commande, une référence de produit ou un code postal se retrouvent mieux par une recherche classique. Beaucoup de systèmes combinent les deux, ce qu'on appelle la recherche hybride
- Elle n'est pas une mémoire de conversation. Elle indexe des documents, pas ce que les visiteurs ont dit, sauf si l'on choisit explicitement de l'y ranger
Base vectorielle et données personnelles
Un embedding ne permet pas de relire facilement le texte d'origine, mais il en est dérivé et reste lié à ce texte dans la base. Si un document contient des données personnelles, ses passages et leurs vecteurs en contiennent indirectement aussi. Les règles du RGPD s'appliquent donc : supprimer un document doit supprimer ses passages et ses vecteurs, et l'hébergement de la base fait partie de la chaîne de sous-traitance à documenter.
Faut-il une base vectorielle pour un assistant de PME ?
Pas nécessairement. La base vectorielle devient utile quand la documentation est trop volumineuse pour être lue en entier à chaque question. Avec les grandes fenêtres de contexte des modèles actuels, une PME dont la base de connaissances tient en quelques dizaines de documents peut souvent les transmettre en entier au modèle. Cette approche évite les passages manqués par la recherche et les passages coupés de leur contexte, au prix d'un nombre de tokens plus élevé par question.
KernChat a fait ce choix : les sources des espaces de connaissance entrent en entier dans le contexte du modèle, par ordre de priorité, et un classement par mots communs avec la question départage les sources quand elles ne tiennent pas toutes. Pour une organisation dont la documentation grandirait fortement, une recherche par le sens appuyée sur une base vectorielle reste une évolution possible.