Une base de données vectorielle est un système de stockage spécialisé conçu pour gérer des vecteurs de haute dimension, ces tableaux numériques comportant généralement des centaines ou des milliers de nombres à virgule flottante que les modèles de machine learning utilisent pour représenter un sens. Mots, phrases, images, extraits audio et comportements utilisateurs peuvent tous être encodés sous forme de vecteurs, et une base de données vectorielle permet de stocker des milliards de ces embeddings et de trouver les correspondances les plus proches d'une nouvelle requête en quelques millisecondes.
Comment fonctionne une base de données vectorielle
Lorsqu'un modèle de ML, comme un grand modèle de langage ou un encodeur de vision, produit un embedding, ce vecteur est envoyé à la base de données accompagné d'une référence à l'élément d'origine : un texte, un fichier image, une fiche produit, etc. La base de données construit un index à l'aide d'un algorithme de recherche approximative des plus proches voisins (ANN) tel que HNSW (Hierarchical Navigable Small World) ou IVF (Inverted File Index), des structures qui sacrifient une petite part d'exactitude en échange de requêtes nettement plus rapides sur de grands jeux de données. Au moment de la recherche, l'application envoie un nouvel embedding en tant que requête, et l'index renvoie les k vecteurs les plus proches, classés selon une métrique de similarité, généralement la similarité cosinus, le produit scalaire ou la distance euclidienne.
Pourquoi c'est important
La recherche par mots-clés classique ne peut pas deviner que « compagnon félin » et « chat domestique » signifient à peu près la même chose, mais leurs embeddings se retrouvent proches dans l'espace vectoriel : une base de données vectorielle les fait donc remonter comme correspondances. C'est cette capacité qui sous-tend la recherche sémantique moderne, les moteurs de recommandation, la recherche d'images et de contenus audio, la détection d'anomalies, ainsi que l'étape de récupération en Retrieval-Augmented Generation (RAG), où un LLM est ancré dans des documents extraits d'un store vectoriel. Sans indexation dédiée, comparer une requête à des millions de vecteurs un par un serait bien trop lent pour un trafic en production.
Principaux types et exemples
- Bases de données vectorielles dédiées : des moteurs conçus de toutes pièces autour d'index ANN, comme Milvus, Qdrant, Weaviate et Pinecone.
- Bibliothèques de recherche vectorielle : des moteurs légers comme FAISS et Annoy qui s'exécutent au sein d'une application plutôt qu'en tant que service autonome.
- Bases de données hybrides : des magasins classiques comme PostgreSQL (via pgvector), Elasticsearch et MongoDB, qui ajoutent l'indexation vectorielle à des fonctionnalités documentaires ou relationnelles existantes.
- Services cloud managés : des offres hébergées proposées par les grands fournisseurs de cloud, qui intègrent la recherche vectorielle à des plateformes de données plus larges.
Le choix entre ces options dépend généralement de l'échelle, des exigences de latence, du fait que les données cohabitent ou non avec des enregistrements structurés, et de la charge opérationnelle qu'une équipe est prête à assumer. Les systèmes les plus performants du domaine sont évalués sur des benchmarks comme le classement ANN-Benchmarks, qui compare le rappel au nombre de requêtes par seconde sur des jeux de données représentatifs.