Base de Données Vectorielle — Définition, Comparatif et Choix Architecturaux
Point clé : Le choix de la base de données vectorielle est une décision d'architecture qui engage la performance, la scalabilité et la conformité de tout système IA basé sur la recherche sémantique. Ce n'est pas un détail d'implémentation.
Définition
Une base de données vectorielle est un système de stockage et d'interrogation optimisé pour les vecteurs denses de haute dimension produits par les modèles d'embedding. Contrairement aux bases relationnelles qui stockent des lignes structurées, les bases vectorielles indexent des espaces métriques pour permettre des requêtes du type « quels vecteurs sont les plus proches de ce vecteur requête ? » avec des latences de l'ordre de la milliseconde.
Principales Solutions
Bases Vectorielles Natives
Qdrant : Open-source, haute performance, supporte le filtrage vectoriel avancé (combiner recherche vectorielle et filtres sur métadonnées). Déployable on-premise, important pour la souveraineté des données.
Pinecone : SaaS managé, simple à démarrer. Limites : propriétaire, données hébergées aux États-Unis par défaut.
Weaviate : Open-source, combine stockage vectoriel et graphe de connaissances. Supporte nativement plusieurs types d'embeddings.
Extensions de Bases Existantes
pgvector (PostgreSQL/Supabase) : Extension PostgreSQL qui ajoute un type vector et des index HNSW/IVF_FLAT. Idéal pour les équipes déjà sur PostgreSQL qui veulent éviter une infrastructure supplémentaire.
Redis Vector Search : Recherche vectorielle in-memory sur Redis. Adapté aux cas d'usage nécessitant une latence ultra-faible et un volume modéré.
Critères de Choix
| Critère | Qdrant | pgvector | Pinecone |
|---|---|---|---|
| Résidence des données | On-premise possible | On-premise possible | SaaS US par défaut |
| Scalabilité | Très haute | Haute (tens of M) | Très haute |
| Complexité opérationnelle | Modérée | Faible | Très faible |
| Filtrage hybride | Excellent | Bon | Bon |
| Coût | Open-source | Open-source | Pay-per-use |
Exemple : Base Vectorielle pour un Assistant Contrats
Un cabinet juridique indexe 10 000 contrats dans Qdrant avec des métadonnées structurées (type de contrat, date, parties, juridiction). Les recherches combinent similarité sémantique (« trouver des clauses de limitation de responsabilité similaires ») et filtres sur métadonnées (« dans des contrats de prestation de service signés après 2023 »). Cette combinaison — impossible avec une recherche full-text classique — réduit le temps de revue contractuelle de plusieurs heures à quelques minutes.
FAQ
Q : Faut-il une base vectorielle séparée ou peut-on utiliser PostgreSQL + pgvector ? Pour des volumes inférieurs à 10 millions de vecteurs et des équipes déjà sur PostgreSQL, pgvector est souvent le choix optimal. Pour des volumes plus élevés ou des besoins de performance très stricts, une base vectorielle native s'impose.
Q : Les bases vectorielles stockent-elles aussi les textes originaux ? La plupart stockent à la fois le vecteur et les métadonnées associées (y compris le texte source). C'est nécessaire pour retourner les passages originaux aux utilisateurs.
Q : Comment gérer la mise à jour des embeddings quand le modèle d'embedding change ? La réindexation complète est nécessaire. C'est un coût opérationnel à anticiper dans l'architecture : gardez le texte source et les métadonnées séparés des vecteurs pour pouvoir réindexer sans perte.