Comparatif
Base de données vectorielle : comparatif de sept solutions
pgvector, Qdrant, Weaviate, Milvus, Chroma, Pinecone, Elasticsearch et OpenSearch : licence, hébergement, recherche hybride, d'après leur documentation.
Mis à jour le
Ce site est édité par IArche, qui édite ALMA, la plateforme IA pour PME d'IArche. Ce comparatif n'est pas un classement : il résume ce que dit la documentation de chaque projet, lue le 15/11/2026. Pour une PME qui utilise déjà PostgreSQL, l'extension pgvector est souvent le point de départ le plus simple : une seule base à sauvegarder. Les bases dédiées se justifient par le volume, par la recherche hybride intégrée ou par des besoins d'exploitation précis.
Le tableau
BM25, cité plusieurs fois ci-dessous, est l'algorithme classique de classement par mots-clés.
| Solution | Nature | Licence (d'après le dépôt) | Hébergement | Recherche plein texte intégrée |
|---|---|---|---|---|
| pgvector | Extension de PostgreSQL 13 et suivants | voir le dépôt | votre PostgreSQL, ou un hébergeur qui la propose | celle de PostgreSQL |
| Qdrant | Moteur de recherche vectorielle, écrit en Rust | Apache 2.0 | libre, cloud géré, hybride, privé | oui (BM25, vecteurs creux) |
| Weaviate | Base vectorielle, écrite en Go | BSD 3 clauses pour l'essentiel | Docker, Kubernetes, Weaviate Cloud | oui (BM25) |
| Milvus | Base vectorielle, écrite en Go et C++ | Apache 2.0 | Lite, Standalone, Distributed, Zilliz Cloud | oui (BM25) |
| Chroma | Infrastructure de données pour l'IA | Apache 2.0 | local, client-serveur, Chroma Cloud | oui sur Chroma Cloud |
| Pinecone | Service de recherche | — | service en ligne, option BYOC | oui (BM25) |
| Elasticsearch | Moteur de recherche, écrit en Java | voir le dépôt | à installer ; certaines fonctions sous abonnement | oui |
| OpenSearch | Moteur de recherche | Apache 2.0 | à installer | oui |
Chaque solution en quelques lignes
pgvector. Ajoute à PostgreSQL un type vector, des opérateurs de distance et deux index approximatifs, HNSW et IVFFlat (dépôt, version 0.8.7 dans les instructions d'installation). Filtres par clause WHERE, jointures avec vos tables existantes, recherche plein texte de PostgreSQL pour l'hybride. Limite à connaître : 2 000 dimensions au plus pour indexer un vector. Voir Installer pgvector.
Qdrant. Moteur écrit en Rust, sous licence Apache 2.0, qui se lance en local par docker run -p 6333:6333 qdrant/qdrant ; le dépôt prévient que ce lancement est sans authentification et ouvert sur toutes les interfaces réseau. Interfaces HTTP et gRPC (protocole d'appel à distance), filtres sur les métadonnées (payload), recherche hybride sémantique et lexicale (documentation). Son index HNSW a pour réglages par défaut m = 16 et ef_construct = 100.
Weaviate. Base écrite en Go qui stocke objets et vecteurs ; recherche hybride (vecteurs + BM25 + filtres) en un appel, modules qui calculent les plongements à l'import, multi-locataire, contrôle d'accès par rôles (dépôt). Le dépôt précise que les fichiers du dossier wl/ sont sous licence commerciale.
Milvus. Écrit en Go et C++, sous licence Apache 2.0, porté par la fondation LF AI & Data. Quatre modes, du plus léger au plus lourd : Milvus Lite (installé par pip), Standalone (une machine), Distributed (Kubernetes) et Zilliz Cloud. Nombreux types d'index (HNSW, IVF, DiskANN, index sur processeur graphique) et recherche plein texte BM25 intégrée (dépôt).
Chroma. Sous licence Apache 2.0, s'installe par pip install chromadb et fonctionne en mémoire pour prototyper, avec persistance possible, ou en mode client-serveur (dépôt). Chroma Cloud propose la recherche vectorielle, hybride et plein texte en service.
Pinecone. Service de recherche qui sert recherche plein texte, sémantique et par vecteurs creux depuis un même index ; il peut calculer les plongements lui-même à partir du texte envoyé, sépare les clients par espaces de noms (namespaces) et filtre par métadonnées (documentation). Option de déploiement dans votre propre compte cloud (Bring Your Own Cloud).
Elasticsearch. Le type dense_vector accepte jusqu'à 4 096 dimensions, avec les mesures l2_norm, dot_product, cosine et max_inner_product, et quantifie les vecteurs par défaut depuis la version 9.0 (documentation). Intérêt évident si vous l'exploitez déjà pour la recherche plein texte. Certaines variantes d'index (bbq_disk) demandent un abonnement Enterprise.
OpenSearch. Moteur sous licence Apache 2.0 (dépôt). Sa recherche vectorielle s'appuie sur les moteurs Faiss (par défaut), Lucene et JVector, avec les méthodes HNSW et IVF ; NMSLIB y est marqué comme obsolète (documentation).
Comment choisir
| Votre situation | Piste à examiner d'abord |
|---|---|
| Vous avez déjà PostgreSQL et un volume modeste | pgvector |
| Vous avez déjà Elasticsearch ou OpenSearch pour la recherche | leur recherche vectorielle |
| Vous prototypez en Python, sans serveur | Chroma en mémoire, ou Milvus Lite |
| Gros volume, plusieurs serveurs, équipe qui exploite des conteneurs | Qdrant, Weaviate, Milvus |
| Pas d'équipe pour exploiter une base | un service géré (Pinecone, offres cloud des autres) |
Quatre questions à poser quelle que soit la solution :
- Filtre-t-elle pendant la recherche ? Indispensable pour que chacun ne voie que ses documents (voir RAG et droits d'accès).
- Fait-elle de la recherche hybride ? Les plongements seuls ratent les références exactes (voir Recherche hybride).
- Où sont stockées les données ? Pour un service géré, vérifiez la région d'hébergement et le contrat (voir Embeddings et données personnelles).
- Qui la sauvegarde et la met à jour ? Une base de plus, c'est une sauvegarde, une supervision et des mises à jour de plus.
Questions fréquentes
Faut-il une base vectorielle dédiée pour un RAG de PME ?
Pas nécessairement. Si vous avez déjà PostgreSQL, l'extension pgvector ajoute vecteurs, index approximatifs et filtres dans la même base. Une base dédiée se justifie surtout par le volume ou par des fonctions précises.
Quelles bases vectorielles peut-on héberger soi-même ?
D'après leur documentation : pgvector (avec PostgreSQL), Qdrant, Weaviate, Milvus, Chroma, Elasticsearch et OpenSearch. Pinecone se consomme comme un service, avec une option de déploiement dans votre propre compte cloud (BYOC).
Sources
Pages consultées pour écrire cet article :
- https://github.com/pgvector/pgvector
- https://github.com/qdrant/qdrant
- https://qdrant.tech/documentation/overview/
- https://qdrant.tech/documentation/concepts/indexing/
- https://github.com/weaviate/weaviate
- https://github.com/milvus-io/milvus
- https://github.com/chroma-core/chroma
- https://docs.pinecone.io/guides/get-started/overview
- https://docs.pinecone.io/guides/index-data/indexing-overview
- https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/dense-vector
- https://github.com/elastic/elasticsearch
- https://github.com/opensearch-project/OpenSearch
- https://docs.opensearch.org/latest/mappings/supported-field-types/knn-methods-engines/