Définition
Une base de données vectorielle stocke des représentations vectorielles et répond à une question différente d’une base classique : non pas « quelles lignes correspondent à cette valeur » mais « quels éléments ressemblent le plus à celui-ci ». C’est le moteur de récupération sous la recherche sémantique et la plupart des systèmes RAG.
À quoi sert une base de données vectorielle
Une base classique répond à des questions à critères exacts : les clients au Québec, les commandes de plus de 500 $, les billets ouverts la semaine dernière. Elle est précise et n’a aucune notion de ressemblance.
Une base vectorielle répond à « qu’est-ce qui ressemble le plus à ceci ? ». Donnez-lui la représentation vectorielle d’une question et elle renvoie les passages dont le sens est le plus proche. C’est une opération fondamentalement différente, et la réaliser rapidement sur des millions d’éléments est le problème d’ingénierie que ces systèmes existent pour régler.
Dans un système RAG, c’est la composante qui décide de ce que le modèle a le droit de lire. Sa qualité plafonne celle de toutes les réponses en aval.
En avez-vous réellement besoin ?
Souvent non, et la réponse honnête fait économiser de l’argent.
Pour quelques milliers de documents, une recherche par similarité sur des représentations gardées en mémoire ou dans une base ordinaire s’exécute assez vite pour qu’un système spécialisé ajoute de l’exploitation sans ajouter de capacité. PostgreSQL avec l’extension pgvector couvre un éventail étonnamment large de cas d’affaires, avec l’avantage considérable que vos vecteurs vivent à côté de vos données relationnelles, dans votre régime de sauvegarde et de contrôle d’accès existant.
Une base vectorielle dédiée gagne sa place à une véritable échelle, soit des millions de vecteurs, une forte concurrence de requêtes et des mises à jour fréquentes, ou lorsque vous avez besoin d’index distribués et de filtrage sophistiqué que les bases généralistes gèrent maladroitement.
La bonne question n’est pas « quelle base vectorielle » mais « faut-il vraiment un système distinct ».
Ce qui compte plus que le choix du moteur
Le filtrage par métadonnées. Presque toute requête réelle est « semblable à ceci, et dans la version courante de la politique, et visible par cet utilisateur ». Un système incapable de filtrer efficacement en parallèle de la similarité sera lent ou renverra ce qu’il ne devrait pas. C’est là que réside concrètement l’application des permissions.
Le comportement à la mise à jour. Les documents changent. En combien de temps l’index reflète-t-il une modification, et qu’advient-il de la version périmée ? Les systèmes testés uniquement sur un corpus statique se trompent souvent là-dessus.
La recherche hybride. Les requêtes d’affaires mêlent concepts et identifiants. Si le moteur ne peut pas combiner recherche par mots-clés et recherche vectorielle, vous finirez par bâtir cette couche vous-même.
La portabilité. Les représentations sont liées au modèle qui les a produites, et les modèles se remplacent. Pouvoir reconstruire l’index à partir du contenu source, plutôt que de traiter la base comme l’unique copie, est ce qui évite qu’une migration devienne une réécriture.
L’approche Automathing
Nous commençons par le stockage le plus simple qui satisfait l’exigence, ce qui signifie pour la plupart des PME des vecteurs rangés auprès des données relationnelles plutôt qu’un système distinct à exploiter et à sécuriser. Le filtrage des permissions est intégré à la récupération dès le départ plutôt qu’ajouté ensuite, et le contenu source demeure toujours la référence, afin que l’index puisse être reconstruit à volonté.
Foire aux questions
Quelle différence entre une base vectorielle et une base de données ordinaire ?
Une base ordinaire trouve des correspondances exactes sur les valeurs que vous précisez. Une base vectorielle trouve les plus proches voisins dans l’espace du sens, soit les éléments les plus semblables à une référence. Elles répondent à des questions différentes, et beaucoup de systèmes ont besoin des deux : la recherche vectorielle pour trouver le contenu pertinent, les données relationnelles pour savoir qui a le droit de le voir.
Peut-on simplement utiliser PostgreSQL ?
Souvent, oui. L’extension pgvector ajoute la recherche par similarité à PostgreSQL, ce qui suffit à un très grand nombre d’applications d’affaires et garde tout dans un système que vous exploitez, sauvegardez et sécurisez déjà. Réservez la base vectorielle dédiée aux cas où l’échelle, la concurrence ou l’indexation spécialisée l’exigent réellement.
Quelle taille peut atteindre une base vectorielle ?
Le stockage lui-même reste gérable : un million de fragments aux dimensions habituelles se compte en gigaoctets. Ce qui devient difficile, c’est la latence des requêtes sous concurrence et la fraîcheur de l’index à mesure que les documents changent. Ces enjeux d’exploitation forcent généralement la décision d’architecture bien avant le volume brut.
La base vectorielle stocke-t-elle nos documents ?
Elle stocke typiquement les représentations, le fragment de texte et les métadonnées, afin que le passage récupéré puisse être montré à un utilisateur ou transmis à un modèle. C’est donc une copie de votre contenu, exigeant les mêmes contrôles d’accès, la même politique de conservation et le même traitement de confidentialité que la source d’origine.
