Une base de données vectorielle stocke des documents avec leurs embeddings et répond aux requêtes par une recherche des plus proches voisins dans l’espace vectoriel. Comme la recherche exacte des plus proches voisins coûte cher à grande échelle, ces systèmes s’appuient sur des méthodes approximatives, comme l’index en graphe HNSW de Malkov & Yashunin (2018), et sur des bibliothèques de recherche accélérées par GPU comme FAISS (Johnson et al., 2017).
Résultat : une recherche sémantique en moins d’une seconde sur des millions de passages. C’est la couche de stockage qui rend la génération augmentée par la recherche (RAG) réalisable en pratique.
À quoi sert une base de données vectorielle ?
Une base de données classique trouve les lignes qui correspondent exactement à une valeur ; une base de données vectorielle trouve les éléments proches par le sens. Une recherche « comment réinitialiser mon mot de passe » peut renvoyer un article d’aide intitulé « Récupérer l’accès à votre compte », alors que les deux n’ont presque aucun mot en commun. C’est pourquoi les bases de données vectorielles sont la colonne vertébrale de :
- La recherche sémantique dans les centres d’aide, les wikis et les archives documentaires
- Les chatbots RAG qui répondent à partir de documents privés
- Les recommandations : « dans le même genre » pour des produits, des articles ou des morceaux de musique
- La détection de doublons et de quasi-doublons
- La recherche d’images et de sons similaires
Comment fonctionne une base de données vectorielle
- 1Vectoriser et stocker. Chaque élément est converti en embedding par un modèle d’embedding, puis stocké avec son contenu d’origine et ses métadonnées.
- 2Indexer. Les vecteurs sont organisés dans un index approximatif comme HNSW, qui sacrifie un peu de précision pour un gain de vitesse considérable.
- 3Interroger. La requête est vectorisée avec le même modèle, puis la base trouve les vecteurs les plus proches selon une mesure de similarité comme la similarité cosinus.
- 4Filtrer et renvoyer. La plupart des systèmes combinent la recherche par similarité avec des filtres sur les métadonnées (date, auteur, autorisations) et renvoient les meilleurs résultats, souvent transmis à un reranker.
Base de données vectorielle ou base de données classique
| Base de données classique | Base de données vectorielle | |
|---|---|---|
| Correspondance sur | Valeurs exactes et mots-clés | Proximité de sens |
| Requête | SQL ou recherche par clé | Un embedding de la question |
| Index | Arbre B ou index inversé | Index de plus proches voisins approximatifs (p. ex. HNSW) |
| Résultat | Toutes les lignes correspondantes | Les k éléments les plus similaires, classés |
Les options vont des bases de données vectorielles dédiées, comme Pinecone, Weaviate, Milvus, Qdrant et Chroma, aux extensions de recherche vectorielle pour bases existantes, comme pgvector pour PostgreSQL. Pour beaucoup d’équipes, ajouter la recherche vectorielle à une base qu’elles exploitent déjà est plus simple que de gérer un système à part.