Bases Vectorielles

Milvus, Qdrant, Weaviate : Comparatif Complet 2025

Publié le 17 septembre 2025 22 min de lecture

Temps de lecture : 22 minutes | Niveau : Intermédiaire à Avancé | Dernière mise à jour : Mars 2025

1. Présentation des trois solutions

Le marché des bases vectorielles a explosé depuis 2022 avec l'avènement des LLMs et des systèmes RAG. Trois acteurs majeurs se distinguent : Milvus, Qdrant et Weaviate. Chacun répond à des besoins différents en termes de scalabilité, performance, facilité d'utilisation et écosystème.

1.1. Milvus : le géant open source scalable

Milvus en bref

  • Créé en : 2019 par Zilliz (spin-off de recherche académique chinoise)
  • Langage : Go + C++ (moteur vectoriel FAISS, Annoy, HNSWlib)
  • Licence : Apache 2.0 (100% open source)
  • Architecture : Distribuée cloud-native (séparation compute/storage)
  • Communauté : 26 000+ stars GitHub, 350+ contributeurs
  • Cloud managed : Zilliz Cloud (pricing par dimension/requête)

Milvus est conçu pour des déploiements à très grande échelle (10M+ à 1B+ vecteurs). Son architecture distribuée inspirée de Snowflake sépare :

  • Coordinateurs : Root, Query, Data, Index coordinators (orchestration)
  • Worker nodes : Query nodes (lecture), Data nodes (écriture), Index nodes (indexation)
  • Stockage : MinIO/S3 pour les vecteurs, etcd pour métadonnées, Pulsar pour logs

Points forts : Scalabilité extrême (testée jusqu'à 10+ milliards de vecteurs), support multi-index (HNSW, IVF, DiskANN, GPU), gestion avancée des partitions, forte adoption enterprise (Nvidia, Shopify, PayPal).

Points faibles : Complexité opérationnelle élevée (minimum 10+ pods Kubernetes), courbe d'apprentissage raide, overhead réseau en mode distribué, consommation ressources importante.

1.2. Qdrant : le challenger Rust ultra-performant

Qdrant en bref

  • Créé en : 2021 par équipe européenne (Berlin/Amsterdam)
  • Langage : Rust (100% natif, zero-copy, memory safety)
  • Licence : Apache 2.0 + version Enterprise (features additionnelles)
  • Architecture : Single-node optimisé + clustering (mode distribué depuis v1.7)
  • Communauté : 18 000+ stars GitHub, forte croissance 2024
  • Cloud managed : Qdrant Cloud (free tier 1GB, puis $25/GB/mois)

Qdrant mise sur la simplicité opérationnelle et les performances brutes. Contrairement à Milvus, Qdrant peut tourner en single-node sur un simple Docker container tout en gérant 10-50M vecteurs avec d'excellentes performances.

Architecture épurée :

  • HNSW natif : Implémentation Rust optimisée (30% plus rapide que hnswlib C++)
  • Quantization : Scalar, Product, Binary quantization (réduction mémoire 4-32x)
  • WAL : Write-Ahead Log pour durabilité (crash recovery)
  • Filtrage avancé : Payload indexing avec B-Tree pour filtres complexes

Points forts : Performances exceptionnelles (latence P95 <10ms sur 10M vecteurs), facilité de déploiement (Docker/Kubernetes simple), API intuitive, filtrage métadonnées très puissant, faible empreinte mémoire.

Points faibles : Mode distribué récent (moins mature que Milvus), documentation parfois lacunaire sur cas avancés, écosystème SDK plus limité, communauté plus petite.

1.3. Weaviate : l'approche GraphQL et modules IA

Weaviate en bref

  • Créé en : 2019 par SeMI Technologies (Pays-Bas)
  • Langage : Go
  • Licence : BSD-3 (open source)
  • Architecture : Multi-node avec sharding horizontal
  • Communauté : 9 000+ stars GitHub, forte présence Europe
  • Cloud managed : Weaviate Cloud Services (free tier 14 jours, puis $25/mois base)

Weaviate se positionne comme une base vectorielle tout-en-un avec un focus sur l'expérience développeur et l'intégration IA native. Son point de différenciation : un système de modules qui intègre directement des modèles d'embeddings.

Caractéristiques distinctives :

  • API GraphQL : Query language expressif pour requêtes complexes (vs REST classique)
  • Modules pré-intégrés : text2vec-openai, text2vec-cohere, img2vec-neural, multi2vec-clip (vectorisation automatique)
  • Schéma typé : Définition de classes avec propriétés typées (proche d'une base orientée graphe)
  • Hybrid search native : BM25 + recherche vectorielle fusionnées automatiquement

Points forts : Time-to-market rapide (modules IA préconfigurés), GraphQL puissant pour requêtes riches, hybrid search clé en main, bonne documentation, écosystème LangChain/LlamaIndex mature.

Points faibles : Performances inférieures à Qdrant/Milvus sur très gros volumes (>50M vecteurs), consommation mémoire élevée avec modules, scaling limité comparé à Milvus, lock-in potentiel avec modules propriétaires.

1.4. Tableau récapitulatif

Critère Milvus Qdrant Weaviate
Année création 2019 2021 2019
Langage Go + C++ Rust Go
Licence Apache 2.0 Apache 2.0 BSD-3
Architecture Distribuée cloud-native Single-node + clustering Multi-node sharding
Scalabilité max 10B+ vecteurs 100M+ vecteurs 100M+ vecteurs
Stars GitHub 26 000+ 18 000+ 9 000+
Complexité déploiement Élevée (K8s 10+ pods) Faible (1 Docker) Moyenne (3-5 nodes)
API principale gRPC + REST REST + gRPC GraphQL + REST
Cas d'usage idéal Enterprise >100M vecteurs Production 1M-100M vecteurs Prototypes rapides, RAG simple

2. Architecture et design

L'architecture interne détermine les capacités de scalabilité, performances et résilience. Les trois solutions adoptent des approches radicalement différentes.

2.1. Architecture de Milvus : cloud-native distribué

Milvus suit une architecture découplée inspirée de Snowflake et Databricks :

Composants principaux

  • Access Layer
    • Proxy : Load balancer et authentification (stateless)
    • Expose API gRPC/REST vers clients
  • Coordinator Service
    • Root Coordinator : Gestion métadonnées globales (schémas, collections)
    • Query Coordinator : Orchestration requêtes, gestion segments
    • Data Coordinator : Allocation data channels, flush policies
    • Index Coordinator : Scheduling jobs d'indexation
  • Worker Nodes
    • Query Nodes : Exécution recherches vectorielles (scale horizontal)
    • Data Nodes : Ingestion, validation, persistence (streaming)
    • Index Nodes : Construction index HNSW/IVF/GPU
  • Storage
    • Meta Store : etcd (métadonnées, schémas, états)
    • Log Broker : Pulsar ou Kafka (WAL, réplication)
    • Object Storage : MinIO, S3, Azure Blob (segments, index)

Avantages : Scalabilité infinie (ajout de nodes), résilience (chaque composant réplicable), séparation compute/storage (coûts optimisés), support GPU natif.

Inconvénients : 15-20 composants à orchestrer, latence réseau entre composants (overhead 10-30ms), complexité opérationnelle (monitoring, debugging difficile), coût infrastructure minimum élevé.

2.2. Architecture de Qdrant : single-node optimisé

Qdrant privilégie une architecture monolithique performante puis scaling horizontal :

Mode single-node (par défaut)

  • Rust Process unique
    • HTTP/gRPC server (actix-web, tonic)
    • Segment Manager : Gestion collections, index, mémoire
    • HNSW Engine : Implémentation native optimisée
    • WAL : Write-Ahead Log pour durabilité
  • Stockage
    • Segments : Fichiers mmapped (zero-copy disk access)
    • Payloads : RocksDB ou simple key-value store
    • HNSW graph : Fichiers binaires optimisés

Mode distribué (depuis v1.7, 2024)

  • Sharding horizontal : Collections distribuées sur N nodes
  • Réplication : Factor configurable (N copies par shard)
  • Consensus : Raft pour coordination (pas de Zookeeper/etcd externe)
  • Consistent hashing : Distribution vecteurs par ID

Avantages : Simplicité extrême (1 binaire), performances maximales (pas de réseau en single-node), faible latence (5-15ms P95), empreinte mémoire optimisée (quantization agressive).

Inconvénients : Scalabilité verticale limitée en single-node (128GB RAM ~50M vecteurs), mode distribué moins mature (production depuis Q1 2024), pas de séparation compute/storage.

2.3. Architecture de Weaviate : multi-tenant sharding

Weaviate adopte une approche intermédiaire :

Architecture cluster

  • Nodes homogènes : Chaque node peut gérer requêtes + stockage
  • Sharding par classe : Chaque classe (schema) peut avoir N shards
  • Replication : Factor configurable avec consistency tunable
  • Schema registry : Métadonnées centralisées (Raft consensus)

Composants internes

  • GraphQL API : Parsing et optimisation requêtes
  • Vector Index : HNSW (via hnswlib C++)
  • Inverted Index : Pour recherche BM25 (filtres texte)
  • Object Store : LSM-tree pour payloads
  • Modules : Conteneurs Docker séparés (text2vec, img2vec, etc.)

Avantages : Équilibre simplicité/scalabilité, multi-tenancy natif (isolation par tenant), modules IA plug-and-play, GraphQL expressif.

Inconvénients : Overhead mémoire des modules (500MB-2GB/module), performances inférieures à Qdrant, scaling limité à ~100M vecteurs, GraphQL complexe pour débutants.

2.4. Comparaison des choix architecturaux

Dimension Milvus Qdrant Weaviate
Paradigme Micro-services cloud-native Monolithe puis distribué Cluster homogène
Séparation compute/storage Oui (S3/MinIO) Non (storage local) Non (storage local)
Nombre composants 15+ (coordinateurs, workers, storage) 1 (single-node) ou N (cluster) 3-10 nodes + modules
Consensus/Coordination etcd + Pulsar Raft intégré Raft intégré
Scalabilité théorique Illimitée (cloud-native) Limitée par nb nodes (~100) Limitée (~50 nodes)
Latence minimale 20-50ms (overhead réseau) 5-10ms (local access) 15-30ms
Complexité opérationnelle Très élevée (K8s expert requis) Faible (Docker suffit) Moyenne

Règle de décision architecture

  • Milvus : Si >100M vecteurs, équipe SRE dédiée, budget cloud confortable
  • Qdrant : Si 1M-100M vecteurs, équipe DevOps standard, besoin low-latency
  • Weaviate : Si prototypage rapide, multi-modal, équipe IA sans DevOps

3. Comparaison des fonctionnalités

3.1. Algorithmes d'indexation supportés

Le choix de l'algorithme d'indexation détermine le compromis performance/précision/mémoire :

Index Milvus Qdrant Weaviate
HNSW ✅ Via hnswlib ✅ Implémentation Rust native ✅ Via hnswlib
IVF (Inverted File) ✅ IVF_FLAT, IVF_SQ8, IVF_PQ ❌ (focus HNSW uniquement)
DiskANN ✅ Expérimental (Microsoft)
Flat (brute-force) ✅ FLAT ✅ Brute-force mode
GPU Index ✅ GPU_IVF_FLAT, GPU_IVF_PQ ❌ (roadmap 2025)
Quantization ✅ Scalar, Product ✅ Scalar, Product, Binary ✅ Product Quantization

Verdict : Milvus offre la palette la plus large (IVF, GPU, DiskANN), idéal pour optimiser coûts/performances. Qdrant se concentre sur HNSW mais avec l'implémentation la plus performante. Weaviate reste sur HNSW standard.

3.2. Métriques de distance

Toutes les solutions supportent les métriques vectorielles standards :

  • Cosine Similarity : Angle entre vecteurs (normalisés) — Standard pour LLM embeddings
  • Euclidean (L2) : Distance euclidienne classique — Bon pour CV, audio
  • Dot Product : Produit scalaire — Si vecteurs déjà normalisés
  • Manhattan (L1) : Somme des différences absolues — Rare en NLP

Spécificités :

  • Milvus : Support additionnel de Hamming, Jaccard, Tanimoto (embeddings binaires)
  • Qdrant : Support Hamming + distance custom via UDF (User Defined Functions)
  • Weaviate : Cosine/Dot/L2/Hamming uniquement

3.3. Filtrage et métadonnées

Le filtrage sur métadonnées est crucial pour les systèmes RAG (filtrer par date, user_id, category, etc.).

Fonctionnalité Milvus Qdrant Weaviate
Types de filtres Boolean, Numeric, String, JSON Boolean, Integer, Float, String, Geo, DateTime, UUID Boolean, Int, Float, String, Date, UUID
Opérateurs =, !=, >, <, IN, AND, OR, NOT =, !=, >, <, >=, <=, MATCH, RANGE, GEO_RADIUS =, !=, >, <, LIKE, AND, OR, NOT
Filtres imbriqués (nested) ✅ JSON Path syntax ✅ Nested payloads avec dot notation ✅ Cross-references GraphQL
Indexation filtres ⚠️ Partiel (scalar index limité) ✅ Payload index automatique (B-Tree) ✅ Inverted index sur propriétés
Géo-localisation ✅ Geo radius, bounding box ✅ Geo coordinates
Filtres plein texte ✅ Text matching avec tokenization ✅ BM25 via hybrid search

Point critique : Qdrant excelle sur le filtrage avec son Payload Index qui maintient des B-Tree automatiques sur toutes les propriétés. Milvus nécessite une configuration manuelle des scalar indexes. Weaviate offre un bon compromis via GraphQL.

3.4. Recherche hybride

La recherche hybride combine recherche vectorielle (sémantique) + recherche keyword (BM25) pour améliorer la précision.

  • Milvus : ❌ Pas de support natif (nécessite Elasticsearch externe + fusion applicative)
  • Qdrant : ⚠️ Support expérimental (text matching basique, pas BM25 complet)
  • Weaviate : ✅ Hybrid search native avec fusion BM25 + Vector (paramètre alpha : 0=BM25, 1=vector, 0.5=50/50)

Best practice hybrid search

Pour Milvus/Qdrant sans hybrid natif : utilisez Reciprocal Rank Fusion (RRF) côté application. Lancez 2 requêtes parallèles (vector + Elasticsearch BM25), puis fusionnez les scores avec RRF. Gain typique : +5-15% recall@10 sur benchmarks MS MARCO.

3.5. Fonctionnalités avancées

Multi-tenancy

  • Milvus : Partitions (isolate data per tenant) + RBAC granulaire
  • Qdrant : Collections multiples + filtrage sur tenant_id payload
  • Weaviate : Multi-tenancy natif avec isolation complète par tenant

Snapshots et backup

  • Milvus : ✅ Snapshots via create_snapshot() API + S3 export
  • Qdrant : ✅ Snapshots collections + full cluster snapshots
  • Weaviate : ✅ Backup via modules (S3, GCS, Azure)

Réplication et haute disponibilité

  • Milvus : ✅ Réplication multi-nodes avec tunable consistency
  • Qdrant : ✅ Replication factor (depuis v1.7) + Raft consensus
  • Weaviate : ✅ Replication factor avec quorum reads/writes

Mises à jour temps réel

  • Milvus : Eventual consistency (flush manuel ou auto-flush configurable)
  • Qdrant : Quasi temps réel (WAL + flush automatique en millisecondes)
  • Weaviate : Temps réel avec tunable consistency

3.6. Matrice de comparaison détaillée

Feature Milvus Qdrant Weaviate
Index HNSW ✅ (meilleur perf)
Index IVF
Index GPU
Quantization ✅ SQ, PQ ✅ SQ, PQ, Binary ✅ PQ
Filtrage avancé ⚠️ Bon ✅ Excellent ✅ Très bon
Hybrid search ⚠️ Expérimental ✅ Natif
Multi-tenancy ✅ Partitions ✅ Via filtres ✅ Natif
Snapshots/Backup
Réplication
ACID transactions ⚠️ Limité
GraphQL API
Modules IA intégrés ✅ text2vec, img2vec
Monitoring/Observability ✅ Prometheus, Grafana ✅ Prometheus, traces ✅ Prometheus

4. Benchmarks de performance

Avertissement sur les benchmarks

Les performances dépendent énormément de : dimensionnalité vecteurs, configuration index (ef_construction, M pour HNSW), hardware, tuning OS. Les chiffres ci-dessous sont des ordres de grandeur issus de benchmarks indépendants (ann-benchmarks.com, benchmarks communautaires) et tests internes.

4.1. Méthodologie de benchmark

Configuration de référence :

  • Dataset : GIST-1M (1 million vecteurs, 960 dimensions) + DEEP-10M (10M, 96 dim) + LAION-100M (100M, 768 dim)
  • Hardware : AWS r6i.4xlarge (16 vCPU, 128GB RAM, NVMe SSD)
  • Index : HNSW avec M=16, ef_construction=200
  • Métrique : Cosine similarity
  • Recall target : 95% (top-10 résultats)
  • Charge : 10 clients concurrents (simule production réelle)

4.2. Latence de recherche (P95)

La latence P95 (95e percentile) est critique en production — elle représente l'expérience utilisateur dans le pire des cas acceptables.

Dataset Milvus (gRPC) Qdrant (REST) Weaviate (GraphQL)
1M vecteurs (960d) 18-25ms 8-12ms 15-20ms
10M vecteurs (96d) 35-50ms 15-22ms 30-45ms
100M vecteurs (768d) 80-120ms 40-60ms 90-140ms
100M + PQ quantization 50-75ms 25-35ms 60-90ms

Analyse : Qdrant domine sur la latence brute grâce à son implémentation Rust zero-copy. Milvus souffre d'overhead réseau en mode distribué (+10-30ms vs single-node). Weaviate est pénalisé par GraphQL parsing.

4.3. Débit (throughput)

Le throughput mesure le nombre de requêtes/seconde (QPS) que le système peut traiter.

Configuration Milvus Qdrant Weaviate
Single-node (10M vec) 800-1200 QPS 1500-2500 QPS 600-1000 QPS
Cluster 3 nodes 3000-5000 QPS 4000-7000 QPS 1800-3000 QPS
Cluster 10 nodes 10000-18000 QPS 12000-20000 QPS 5000-8000 QPS
Ingestion (inserts/s) 50000-100000/s 30000-60000/s 20000-40000/s

Analyse : Qdrant offre le meilleur throughput single-node. Milvus rattrape en mode distribué grâce à son scaling horizontal supérieur. Weaviate plafonne plus tôt (limite architecture).

4.4. Précision des résultats (recall)

Le recall@k mesure la précision : combien de vrais top-k résultats sont retournés vs brute-force.

Config Index Milvus Qdrant Weaviate
HNSW default 97.5% recall@10 98.2% recall@10 97.8% recall@10
HNSW optimisé (ef=512) 99.5% 99.7% 99.4%
IVF (Milvus uniquement) 92-96% (tunable) N/A N/A
PQ quantization 94-97% 95-98% 94-96%

Analyse : Très peu de différence en pratique (toutes >97% avec config standard). Qdrant légèrement meilleur grâce à implémentation HNSW optimisée. Le recall dépend surtout du tuning ef (exploration factor).

4.5. Consommation mémoire et ressources

Empreinte mémoire pour 10M vecteurs de 768 dimensions (embeddings OpenAI) :

Config Milvus Qdrant Weaviate
Vecteurs bruts (FLAT) 30 GB (4 bytes/dim) 30 GB 30 GB
HNSW index overhead +40% (~42GB total) +35% (~40GB total) +45% (~43GB total)
Product Quantization (PQ) 3-5 GB (10x compression) 2-4 GB (12x compression) 4-6 GB (8x compression)
Scalar Quantization 8-10 GB (4x compression) 7-9 GB (4.5x compression) 9-11 GB (3.5x compression)
CPU (idle) 2-4 cores 0.5-1 core 1-2 cores

Verdict coûts : Qdrant est le plus frugal (Rust efficient). Milvus nécessite des ressources importantes (coordinateurs + workers). Weaviate alourdi par les modules Docker.

4.6. Résultats comparatifs synthétiques

Classement Performance Global

  1. Qdrant : Meilleur rapport latence/throughput/mémoire (single-node jusqu'à 50M vecteurs)
  2. Milvus : Champion scalabilité horizontale (50M+ vecteurs, throughput maximal en distribué)
  3. Weaviate : Correct pour MVP/prototypes, limite sur très gros volumes

Règle empirique : Qdrant jusqu'à 50M vecteurs, Milvus au-delà. Weaviate si besoin hybrid search natif et prototypage rapide.

5. Facilité d'utilisation et développement

5.1. Installation et configuration

Milvus :

# Docker Compose (standalone - 6+ containers)
docker-compose -f docker-compose.yml up -d

# Kubernetes (production - Helm chart)
helm install milvus milvus/milvus --set cluster.enabled=true
# Nécessite : etcd, MinIO, Pulsar = 10-15 pods minimum

Qdrant :

# Docker (single container - production ready!)
docker run -p 6333:6333 qdrant/qdrant

# Kubernetes (simple deployment)
kubectl apply -f qdrant-deployment.yaml
# 1 pod suffit pour 10-50M vecteurs

Weaviate :

# Docker Compose (avec modules)
docker-compose up -d
# 2-3 containers : weaviate + text2vec-openai + img2vec

# Kubernetes (Helm)
helm install weaviate weaviate/weaviate

Verdict : Qdrant remporte la simplicité (1 commande Docker). Milvus demande expertise Kubernetes. Weaviate intermédiaire mais modules ajoutent complexité.

5.2. API et SDKs

Langage/Feature Milvus Qdrant Weaviate
Python SDK ✅ pymilvus (officiel) ✅ qdrant-client ✅ weaviate-client
TypeScript/JavaScript ✅ @zilliz/milvus2-sdk-node ✅ @qdrant/js-client ✅ weaviate-ts-client
Go ✅ milvus-sdk-go ✅ go-client ✅ weaviate-go-client
Java ✅ milvus-sdk-java ✅ java-client ✅ java-client
Rust ✅ (natif)
API REST ✅ (secondaire) ✅ (principale) ✅ REST + GraphQL
gRPC ✅ (principal)
LangChain integration ✅ Milvus vectorstore ✅ Qdrant vectorstore ✅ Weaviate vectorstore
LlamaIndex integration

Exemples code Python :

Milvus

from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType

# Connexion
connections.connect("default", host="localhost", port="19530")

# Création collection
fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
    FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=768)
]
schema = CollectionSchema(fields)
collection = Collection("docs", schema)

# Insertion
embeddings = [[0.1] * 768, [0.2] * 768]
collection.insert([embeddings])

# Recherche
collection.load()
results = collection.search(
    data=[[0.15] * 768],
    anns_field="embedding",
    param={"metric_type": "COSINE", "params": {"ef": 64}},
    limit=10
)

Qdrant

from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct

# Connexion
client = QdrantClient("localhost", port=6333)

# Création collection
client.create_collection(
    collection_name="docs",
    vectors_config=VectorParams(size=768, distance=Distance.COSINE)
)

# Insertion
client.upsert(
    collection_name="docs",
    points=[
        PointStruct(id=1, vector=[0.1] * 768, payload={"text": "doc1"}),
        PointStruct(id=2, vector=[0.2] * 768, payload={"text": "doc2"})
    ]
)

# Recherche avec filtre
results = client.search(
    collection_name="docs",
    query_vector=[0.15] * 768,
    query_filter={"must": [{"key": "text", "match": {"value": "doc1"}}]},
    limit=10
)

Weaviate

import weaviate

# Connexion
client = weaviate.Client("http://localhost:8080")

# Création classe (schema)
class_obj = {
    "class": "Document",
    "vectorizer": "text2vec-openai",  # Vectorisation auto!
    "properties": [
        {"name": "text", "dataType": ["text"]}
    ]
}
client.schema.create_class(class_obj)

# Insertion (vectorisation automatique)
client.data_object.create(
    {"text": "Mon document à indexer"},
    "Document"
)

# Recherche (GraphQL)
result = client.query.get(
    "Document", ["text"]
).with_near_text({
    "concepts": ["recherche sémantique"]
}).with_limit(10).do()

Verdict API : Qdrant offre l'API la plus intuitive et pythonic. Weaviate se distingue avec vectorisation automatique (gain temps). Milvus plus verbeux mais puissant.

5.3. Documentation et communauté

  • Milvus
    • Documentation : ⭐️⭐️⭐️⭐️ (excellente, multi-langues)
    • Communauté : 26k+ GitHub stars, Slack actif (5000+ membres)
    • Tutorials : Nombreux (AWS, GCP, Kubernetes, RAG)
    • Support : Enterprise via Zilliz
  • Qdrant
    • Documentation : ⭐️⭐️⭐️⭐️☆ (bonne mais lacunes sur edge cases)
    • Communauté : 18k+ stars, Discord actif
    • Tutorials : En expansion (focus RAG, LangChain)
    • Support : Community + Enterprise tiers
  • Weaviate
    • Documentation : ⭐️⭐️⭐️⭐️⭐️ (exceptionnelle, videos, workshops)
    • Communauté : 9k+ stars, Slack très actif
    • Tutorials : Très complets (modules, hybrid search, GraphQL)
    • Support : Réactivité excellente (core team très présente)

5.4. Courbe d'apprentissage

  • Qdrant : ⭐️⭐️ (2-3 jours pour maîtriser) - API intuitive, déploiement trivial
  • Weaviate : ⭐️⭐️⭐️ (1 semaine) - GraphQL à apprendre, modules à configurer
  • Milvus : ⭐️⭐️⭐️⭐️ (2-4 semaines) - Architecture complexe, tuning index difficile, debugging distribué

5.5. Outils d'administration

  • Milvus : Attu (UI web officielle), Prometheus metrics, Grafana dashboards
  • Qdrant : Dashboard web intégré (visualisation clusters, collections), Prometheus
  • Weaviate : Console web (schema, data browser), Grafana dashboards

6. Scalabilité et déploiement

6.1. Scalabilité horizontale

  • Milvus
    • Scale indépendant : Query nodes (lecture), Data nodes (écriture), Index nodes
    • Sharding automatique sur collections
    • Limite théorique : 10+ milliards de vecteurs testés
    • Scaling linéaire (2x nodes = 2x throughput)
  • Qdrant
    • Mode cluster (v1.7+) : Sharding + réplication
    • Consistent hashing pour distribution
    • Limite pratique : 100M-500M vecteurs selon hardware
    • Scaling quasi-linéaire (overhead Raft consensus)
  • Weaviate
    • Sharding par classe (schema)
    • Replication factor configurable
    • Limite pratique : 50M-200M vecteurs
    • Scaling sous-linéaire (coordination overhead)

6.2. Haute disponibilité

Feature Milvus Qdrant Weaviate
Réplication ✅ Multi-replica (2-5x) ✅ Replication factor N ✅ Replication factor N
Failover automatique ✅ Via coordinateurs ✅ Raft leader election ✅ Raft consensus
Split-brain protection ✅ etcd quorum ✅ Raft majority ✅ Raft majority
Zero-downtime updates ✅ Rolling updates ✅ Rolling updates ✅ Rolling updates
SLA garantie (cloud) 99.9% (Zilliz Cloud Enterprise) 99.9% (Qdrant Cloud Enterprise) 99.9% (WCS Enterprise)

6.3. Options de déploiement

  • Self-hosted
    • Milvus : Docker Compose (dev), Kubernetes (prod) - Helm chart officiel
    • Qdrant : Docker, Kubernetes, binaire standalone
    • Weaviate : Docker Compose, Kubernetes Helm chart
  • Cloud managed
    • Milvus : Zilliz Cloud (AWS, GCP, Azure) - Auto-scaling, backups, monitoring
    • Qdrant : Qdrant Cloud (AWS, GCP) - Free tier 1GB, managed clusters
    • Weaviate : Weaviate Cloud Services (AWS, GCP) - Sandbox gratuit 14j
  • Hybrid
    • Milvus : Possible (data on-premise, control plane cloud) via VPC peering
    • Qdrant : Support hybrid via private endpoints
    • Weaviate : Support hybrid deployment

6.4. Support cloud et managed services

Cloud Milvus (Zilliz) Qdrant Cloud Weaviate Cloud
Free tier $100 crédits (trial 30j) 1GB gratuit perpétuel 14 jours sandbox
Pricing base $0.10/CU/heure (~$70/mois) $25/GB/mois (1M vec ~4GB) $25/mois base + usage
Auto-scaling ✅ Oui ✅ Vertical + horizontal ✅ Oui
Backups automatiques ✅ Quotidiens ✅ Snapshots on-demand ✅ Backups continus
Multi-region ✅ (Enterprise) ✅ (select regions) ✅ (AWS/GCP regions)

6.5. Kubernetes et orchestration

Maturité Kubernetes :

  • Milvus : ⭐️⭐️⭐️⭐️⭐️ - Helm chart prod-ready, operators, StatefulSets optimisés, HPA (Horizontal Pod Autoscaler)
  • Qdrant : ⭐️⭐️⭐️⭐️ - Simple deployment/StatefulSet, moins de configuration requise
  • Weaviate : ⭐️⭐️⭐️⭐️ - Helm chart officiel, bonne intégration

7. Analyse des coûts

7.1. Modèles économiques

  • Milvus : Open source (Apache 2.0) + cloud managed Zilliz (freemium)
  • Qdrant : Open source (Apache 2.0) + cloud managed (freemium) + Enterprise (support SLA)
  • Weaviate : Open source (BSD-3) + cloud managed (freemium) + Enterprise modules

7.2. Coûts d'infrastructure (self-hosted)

Scénario : 10 millions de vecteurs (768 dim), 1000 QPS, 99.9% SLA

Composant Milvus (AWS) Qdrant (AWS) Weaviate (AWS)
Compute 5x r6i.2xlarge = $1800/mois 2x r6i.xlarge = $720/mois 3x r6i.xlarge = $1080/mois
Storage S3 200GB = $5/mois EBS 300GB = $30/mois EBS 350GB = $35/mois
Dependencies etcd + Pulsar = $400/mois $0 (tout intégré) $0 (tout intégré)
Load Balancer ALB = $30/mois ALB = $30/mois ALB = $30/mois
TOTAL/mois $2235 $780 $1145

7.3. Coûts cloud managed

Volume Zilliz Cloud Qdrant Cloud Weaviate Cloud
1M vecteurs (768d) ~$80-120/mois ~$100/mois (4GB) ~$75-100/mois
10M vecteurs ~$300-500/mois ~$800/mois (32GB) ~$400-600/mois
100M vecteurs ~$2000-3500/mois Contact (Enterprise) Contact (Enterprise)

Piège du pricing cloud

Les clouds facturent souvent sur mémoire allouée et non vecteurs stockés. Avec quantization (PQ), vous pouvez diviser les coûts par 8-12x ! Exemple : 10M vecteurs = 30GB brut, mais 3GB avec PQ = $75/mois au lieu de $750/mois sur Qdrant Cloud.

7.4. Coûts opérationnels

  • Milvus : DevOps/SRE temps complet requis (tuning, monitoring, incidents) = $80-120k/an
  • Qdrant : 20-30% d'un DevOps (simple à opérer) = $20-30k/an
  • Weaviate : 40-50% d'un DevOps (modules à gérer) = $35-50k/an

7.5. TCO (Total Cost of Ownership) sur 3 ans

Hypothèse : 10M vecteurs, croissance 50%/an, équipe startup

Poste Milvus (self-hosted) Qdrant (cloud) Weaviate (cloud)
Infra/Cloud (3 ans) $80k $35k $25k
DevOps (3 ans) $300k $75k $120k
Formation équipe $20k $5k $8k
Incidents/Downtime $30k (estimé) $5k $10k
TCO TOTAL $430k $120k $163k

Verdict TCO

Pour startups/PME (<50M vecteurs) : Qdrant Cloud ou Weaviate Cloud sont les plus rentables (facteur 2-3x vs Milvus self-hosted). Milvus devient compétitif uniquement à très grande échelle (>100M vecteurs) avec équipe SRE existante.

8. Recommandations par cas d'usage

8.1. Petits projets et prototypes (<1M vecteurs)

Recommandation : Qdrant ou Weaviate

  • Qdrant si vous voulez performances maximales et contrôle total (Docker local)
  • Weaviate si vous voulez vectorisation automatique et prototypage ultra-rapide
  • Éviter Milvus : overhead inutile pour ce volume

8.2. Applications de production à échelle moyenne (1M-50M vecteurs)

Recommandation : Qdrant (premier choix)

  • Meilleur compromis performance/simplicité/coûts
  • Gère facilement 10-50M vecteurs en single-node
  • Mode cluster pour HA si nécessaire
  • Weaviate si hybrid search natif est critique
  • Milvus si besoin GPU ou indexes spécialisés (IVF, DiskANN)

8.3. Systèmes à très grande échelle (>100M vecteurs)

Recommandation : Milvus

  • Seule solution testée en production sur milliards de vecteurs
  • Architecture cloud-native conçue pour scaling infini
  • Support GPU pour accélération (IVF_GPU, PQ_GPU)
  • Nécessite : équipe SRE, budget cloud, expertise Kubernetes

8.4. Cas d'usage spécifiques

RAG (Retrieval Augmented Generation)

  • Weaviate : Hybrid search natif (BM25 + vector) améliore recall de 10-20%
  • Qdrant : Si filtrage complexe requis (user_id, date, permissions)
  • Milvus : Si volume documentaire massif (>10M documents)

Moteur de recommandation

  • Qdrant : Latence minimale critique pour UX temps réel
  • Milvus : Si catalogue produits >50M items

Recherche d'images/vidéos

  • Weaviate : Modules img2vec, multi2vec-clip pré-intégrés
  • Milvus : Si dataset massif (ImageNet, LAION-5B)

Recherche sémantique multi-tenant (SaaS)

  • Weaviate : Multi-tenancy natif avec isolation parfaite
  • Qdrant : Via filtrage payload (tenant_id) - plus flexible

8.5. Arbre de décision pour choisir

Décision rapide en 5 questions

  1. Volume de vecteurs ?
    • <1M : Qdrant ou Weaviate
    • 1M-50M : Qdrant (priorité)
    • 50M-100M : Qdrant cluster ou Milvus
    • >100M : Milvus
  2. Budget cloud mensuel ?
    • <$500 : Qdrant Cloud ou Weaviate Cloud
    • $500-2000 : Toutes options possibles
    • >$2000 : Milvus self-hosted devient rentable
  3. Expertise DevOps disponible ?
    • Aucune : Weaviate Cloud (plus simple)
    • Basique : Qdrant (Docker suffit)
    • Avancée (SRE) : Milvus (pleine puissance)
  4. Latence cible ?
    • <10ms P95 : Qdrant single-node
    • <50ms : Toutes solutions OK
    • >50ms : Optimisation index nécessaire partout
  5. Features spécifiques nécessaires ?
    • Hybrid search : Weaviate
    • GPU acceleration : Milvus
    • Filtrage avancé : Qdrant
    • Vectorisation auto : Weaviate

8.6. Verdict final 2025

Résumé Comparatif

🥇 Qdrant

Meilleur choix général pour 80% des cas d'usage. Performances exceptionnelles, simplicité opérationnelle, coûts optimisés. Idéal pour startups et scale-ups jusqu'à 50M vecteurs.

🏆 Milvus

Champion scalabilité pour entreprises avec >100M vecteurs. Architecture cloud-native la plus avancée. Nécessite expertise DevOps mais imbattable à grande échelle.

✨ Weaviate

Prototypage ultra-rapide avec modules IA intégrés. Hybrid search natif excellent pour RAG. GraphQL puissant. Parfait pour équipes IA sans forte expertise DevOps.

Besoin d'aide pour choisir et déployer votre base vectorielle ?

Nos experts ont une expérience pratique avec ces trois solutions. Nous pouvons vous aider à faire le bon choix et assurer une mise en production réussie.

Discuter de votre projet

Questions fréquentes

Peut-on migrer facilement d'une solution à l'autre ?

La migration entre bases vectorielles est relativement simple car toutes exposent des APIs similaires (insert, search, delete). Le processus typique :

  1. Export vecteurs : Dump depuis source (format JSON/parquet)
  2. Transform : Adapter format métadonnées si nécessaire
  3. Import : Bulk insert vers destination (batch 1000-10000 vecteurs)
  4. Validation : Comparer recall sur sample queries

Durée : 10M vecteurs ~ 2-6 heures selon bande passante. Attention : Les index (HNSW) ne sont pas portables - reconstruction nécessaire (1-4h). Tools : Scripts open source disponibles (milvus-to-qdrant, qdrant-to-weaviate).

Quelle solution est la plus mature ?

Milvus (2019) et Weaviate (2019) sont les plus anciennes, avec 5+ ans de production. Qdrant (2021) est plus récent mais a rapidement gagné en maturité.

  • Maturité production : Milvus > Weaviate > Qdrant
  • Stabilité API : Toutes stables (v1.x ou v2.x)
  • Adoption enterprise : Milvus (Nvidia, PayPal) > Weaviate (Spotify) > Qdrant (adoption rapide 2024)
  • Breaking changes : Rares pour toutes (semantic versioning)

Verdict : Pour mission-critical avec SLA strict, privilégier Milvus ou Weaviate. Qdrant est suffisamment mature pour production depuis v1.5+ (2023).

Y a-t-il d'autres alternatives à considérer ?

Oui, plusieurs selon contexte :

  • Pinecone : Cloud-only managed, très simple (serverless), mais vendor lock-in et coûts élevés ($70-200/mois pour 1M vecteurs)
  • Chroma : Embarqué Python, parfait pour MVP/prototypes, mais pas scalable production (<1M vecteurs)
  • Pgvector : Extension PostgreSQL, excellent si SQL existant, limite ~1M vecteurs sans tuning agressif
  • Elasticsearch : Support vecteurs depuis v8.0, bon pour hybrid search, performances moyennes
  • Redis Stack : RediSearch + VSS, ultra-rapide mais limite mémoire (coûteux >10M vecteurs)
  • FAISS : Bibliothèque Meta (in-process), excellentes perfs mais pas de serveur (pour embedding dans apps)

Quand les considérer : Pinecone si zero DevOps, Pgvector si stack PostgreSQL, Chroma/FAISS pour POC uniquement.

Comment tester ces solutions avant de choisir ?

Méthodologie de benchmark en 5 étapes :

  1. Préparer dataset représentatif : 100k-1M vecteurs de votre domaine (vos vrais embeddings)
  2. Déployer localement : Docker Compose pour chaque solution (1 jour setup)
  3. Benchmark insertion : Mesurer throughput (vecteurs/s) et temps total indexation
  4. Benchmark recherche : 1000 queries aléatoires, mesurer latence P50/P95/P99 et recall@10
  5. Test filtrage : Requêtes avec filtres métadonnées complexes (date + category + user_id)

Outils : ann-benchmarks (framework standard), scripts Python custom. Durée : 2-3 jours pour benchmark complet.

Free tiers cloud : Qdrant Cloud (1GB gratuit), Weaviate Cloud (14j), Zilliz Cloud (30j trial) permettent tests sans installation.

Quelle solution a le meilleur support enterprise ?

Support Enterprise comparé :

  • Milvus (Zilliz)
    • SLA 99.9% garantie, support 24/7, Slack dédié
    • Professional Services (architecture review, tuning)
    • Pricing : Contact (typiquement $2000+/mois)
    • Clients : Nvidia, Shopify, PayPal, IBM
  • Qdrant
    • Enterprise tier : Support prioritaire, SLA custom
    • Moins établi que Milvus (startup 2021) mais réactif
    • Pricing : À partir $1000/mois
  • Weaviate
    • Enterprise Cloud : SLA 99.9%, support 24/7
    • Professional Services disponibles
    • Pricing : Contact ($1500+/mois estimé)
    • Core team très présente sur Slack community

Verdict : Milvus/Zilliz offre le support enterprise le plus mature et prouvé. Weaviate excellent pour startups (communauté réactive). Qdrant en construction mais prometteur.