Milvus vs Weaviate: an open-source vector database comparison

Milvus and Weaviate differ in architecture and operating model. Milvus persists data in object storage and scales query, ingest and indexing resources separately. Weaviate manages collection shards and replicas on its nodes, with vectorizer modules, GraphQL and native multi-tenancy. Both integrate with embedding providers and offer multiple index and compression choices. Choose by workload, existing APIs and operating experience.

  • Apache-2.0, 40K+ GitHub stars
  • Scales to tens of billions of vectors
  • Storage and compute separated
  • Multi-tenant vector database: partition key for millions of tenants
Milvus scales each node type on shared object storage; Weaviate nodes own shards on local disk, with Raft for metadata and leaderless replication for data.
Milvus scales each node type on shared object storage; Weaviate nodes own shards on local disk, with Raft for metadata and leaderless replication for data.
Milvus and Zilliz Cloud adopters
  • Salesforce
  • Walmart
  • NVIDIA
  • eBay
  • IBM
  • Cisco
  • Roblox
  • Reddit
  • Exa.ai
  • OpenEvidence
  • Read.ai
  • Plaud
  • Filevine

Milvus vs Weaviate scalability: how does each grow to billions of vectors?

Milvus is built on storage compute separation. Segments and the write-ahead log live in object storage, so a new query node loads its assigned segments instead of copying another node's disk, and ingestion, search and indexing each scale on separate node types. Tiered storage lets a node serve more data than fits in its memory and disk.

Weaviate splits collections into shards, with objects and indexes on node-local storage. Plan collection sharding ahead; MOVE/COPY APIs relocate or copy existing replicas after adding nodes. Capacity depends on the chosen index: HNSW memory depends on its vector cache and quantization, while HFresh provides a disk-backed path. One RAM multiplier does not describe all configurations.

Tens of billionsvectors supported by Milvus DistributedView source
Millionstenants per collection with partition keyView source
40K+GitHub stars, milvus-io/milvusView source
Scalability for billion-scale vector search and multi-tenancy, per each project's documentation
CapabilityMilvusWeaviate (self-hosted)
ArchitectureStorage-compute separation: proxies, streaming, query and data nodesLocal objects and indexes; options include HNSW and disk-backed HFresh
Where data livesObject storage (S3, MinIO, Azure Blob, GCS), including the WALLSM object store and inverted index on local disk; HNSW index in memory
Independent node scalingScale query, streaming and data nodes separatelyEvery node stores, indexes and serves its shards
Adding a nodeSegments load from object storageExisting shards stay where they are; move replicas via the API
Sharding and reshardingShard count set at creation; segments spread across any number of query nodesPlan collection sharding and default replication; v1.32+ MOVE/COPY manages individual shard replicas
Data larger than a nodeTiered storage pulls field data on demandHFresh disk-backed index; inactive tenants on disk, offloaded tenants on S3
Multi-tenancy at scalePartition key for millions of tenants; database, collection or partition per tenantNative multi-tenancy: tenant = shard; docs cite 1M active tenants on about 20 nodes

Milvus vs Weaviate performance: which is faster?

These charts show the verified Milvus and Zilliz Cloud VectorDBBench configurations. They do not include a same-condition result for the other product, so they cannot establish a speed advantage. Benchmark with matching data, filters, recall targets and hardware before comparing.

Vector search throughput (QPS, higher is better)Cohere 1M, 768 dimensions
  • Zilliz CloudZillizCloud-8cu-perf13,316.23 QPSP99 2 ms · recall 0.9383
  • MilvusMilvus-16c64g-sq4u-fp16-force_merge9,575.69 QPSP99 2.3 ms · recall 0.9189

Source: VectorDBBench, verified Milvus and Zilliz Cloud configurations only; these rows do not establish a competitor performance comparison.

Filtered search throughput (QPS, filter keeps 1% of data)Cohere 1M, 768 dimensions, filter ratio 0.99
  • Zilliz CloudZillizCloud-8cu-perf-partition_key10,020.53 QPSP99 2.6 ms · recall 0.9788
  • MilvusMilvus-16c64g-sq8-partition_key11,280.08 QPSP99 1.6 ms · recall 0.9507

Source: VectorDBBench, verified Milvus and Zilliz Cloud configurations only; these rows do not establish a competitor performance comparison.

Zilliz Cloud is fully managed Milvus: the same engine and top-tier throughput, with no clusters to size, upgrade or scale.

Try Zilliz Cloud free

Weaviate vs Milvus features: a vector database comparison table

Both engines cover dense, sparse and hybrid retrieval with metadata filtering. Weaviate's distinctive strengths are model integrations and native multi-tenancy; Milvus offers more index families across memory, disk and GPU, plus server-side BM25. Readers weighing Milvus vs Weaviate vs Qdrant for the best open source vector database can pair this table with our Qdrant comparison.

Does Milvus or Weaviate integrate better with LangChain or LlamaIndex? Both ship first-party LangChain, LlamaIndex and Haystack integrations, so the RAG framework rarely decides it; Dify defaults to Weaviate and also supports Milvus.

Feature comparison: index types, quantization, hybrid search, multi-tenancy, RAG framework integrations, deployment, license, SDKs and community
FeatureMilvusWeaviate
Dense vector index typesHNSW, IVF (FLAT, SQ8, PQ, RaBitQ), SCANN, DiskANN, GPU (CAGRA, IVF)HNSW, flat, dynamic (flat to HNSW), HFresh disk-backed index
QuantizationSQ8, PQ, PRQ, RaBitQ; HNSW_SQ, HNSW_PQ, HNSW_PRQPQ, BQ, SQ, RQ (1-bit, 4-bit, 8-bit rotational quantization)
BM25 and full-text searchBuilt-in BM25 function turns raw text into sparse vectors on the serverBM25F keyword search over the inverted index, with tokenizer options and property boosts
Hybrid searchMultiple vector fields per query, fused with RRF or weighted rankerVector plus BM25 with an alpha weight; relativeScoreFusion (default) or rankedFusion
Multi-vectorUp to 10 vector fields by default; StructArray EmbeddingList search uses MAX_SIM* for entity-level late interactionNamed vectors; ColBERT-style multi-vector embeddings with optional MUVERA
FilteringScalar indexes (INVERTED, BITMAP, STL_SORT) and JSON path index, applied during ANN searchPre-filter allow-list from the inverted index; ACORN strategy for HNSW
Multi-tenancyDatabase, collection, partition or partition keyNative per-collection multi-tenancy; tenants active, inactive or offloaded to S3
Embedding generationClient side, or Milvus Function with external model providersVectorizer, generative and reranker modules for OpenAI, Cohere, Google, AWS, Ollama and more
APIs and query languagegRPC and RESTfulREST, gRPC and the GraphQL query language
Deployment optionsMilvus Lite, Standalone, Distributed, Zilliz CloudDocker, Kubernetes (Helm), Embedded Weaviate, Weaviate Cloud (serverless or dedicated)
RAG framework integrationsLangChain, LlamaIndex, Haystack, Dify, DSPy, n8n and moreLangChain, LlamaIndex, Haystack, DSPy, Semantic Kernel, CrewAI and more; Dify's default store
License and languageApache-2.0; Go and C++BSD-3-Clause core, with a commercially licensed wl/ directory; Go
SDK languagesPython, Java, Go, Node.js, C#, C++, Rust, RESTfulPython, TypeScript/JavaScript, Go, Java, C#
Community and governanceLF AI & Data graduated project; 40K+ GitHub starsWeaviate B.V.; 15K+ GitHub stars

Milvus vs Weaviate cost and operations: what does each take to run?

Evaluate compute, RAM, storage, networking and operations together. Weaviate offers different tradeoffs through HNSW, quantization, HFresh and tenant offloading; Milvus offers quantized HNSW, DiskANN and tiered storage. Compare at matching recall and latency targets rather than estimating from raw vector size alone. Neither requires Kubernetes to start.

Milvus vs Weaviate cost and operations: Kubernetes, dependencies, security and backup
TopicMilvusWeaviate
Production without KubernetesMilvus Standalone: a single Docker image with the Woodpecker WAL embedded, up to 100 million vectorsSingle node with Docker Compose; multi-node clusters via Helm
Dependenciesetcd and object storage (MinIO or S3); Woodpecker replaces Kafka or PulsarSingle binary with embedded Raft; backup and offload modules target S3, GCS or Azure
What drives costRAM on query nodes; quantization, DiskANN and tiered storage trade it for disk and object storageRAM for HNSW on every node; PQ, BQ, SQ or RQ quantization, HFresh and offloaded tenants reduce it
Security and backupRBAC with privilege groups and TLS; milvus-backup to S3, GCS, Azure or local disk while the cluster stays onlineRBAC with API-key or OIDC auth; backup-s3, backup-gcs, backup-azure and backup-filesystem modules

When is Weaviate the better choice?

Choose by workload and operating model. Weaviate offers model integrations, native multi-tenancy and GraphQL; Milvus separates query, ingest and indexing resources. Compare recall, latency, throughput and operations on your own data rather than treating a corpus size as a hard product boundary.

  • You want built-in vectorizer, generative and reranker modules instead of an embedding pipeline.
  • Your application already speaks GraphQL, or you prefer Weaviate's object-centric data model.
  • Data fits a small cluster whose shard count and replication factor you can size up front.
  • Thousands of small tenants, each as its own shard, with cold tenants offloaded to S3.
  • You run Weaviate Cloud and want serverless pricing with the same client API.

Which AI companies and enterprises run Milvus in production?

Milvus and Zilliz Cloud (managed Milvus) run in AI-native companies and large enterprises alike. The milvus.io adopter wall includes Salesforce, Walmart, NVIDIA, eBay, IBM, Cisco, Roblox and Reddit, alongside Exa.ai, OpenEvidence, Read.ai, Notta.ai, Plaud and Filevine. Published results:

  • OpenEvidence: under 10 ms search latency and 4,000 QPS at peak on Zilliz Cloud.
  • Plaud: 10B+ vector chunks per region with under 200 ms average recall latency.
  • Exa: neural search latency cut from seconds to under 200 ms with hybrid search.
  • Airtable: self-hosts Milvus on Kubernetes with the Milvus Operator for semantic search.

Frequently asked questions

Weaviate vs Milvus: which should I use?

Milvus and Weaviate differ in architecture and operating model. Milvus persists data in object storage and scales query, ingest and indexing resources separately. Weaviate manages collection shards and replicas on its nodes, with vectorizer modules, GraphQL and native multi-tenancy. Both integrate with embedding providers and offer multiple index and compression choices. Choose by workload, existing APIs and operating experience.

Which is faster, Milvus or Weaviate?

These charts show the verified Milvus and Zilliz Cloud VectorDBBench configurations. They do not include a same-condition result for the other product, so they cannot establish a speed advantage. Benchmark with matching data, filters, recall targets and hardware before comparing.

Which scales better, Weaviate or Milvus?

Weaviate splits collections into shards, with objects and indexes on node-local storage. Plan collection sharding ahead; MOVE/COPY APIs relocate or copy existing replicas after adding nodes. Capacity depends on the chosen index: HNSW memory depends on its vector cache and quantization, while HFresh provides a disk-backed path. One RAM multiplier does not describe all configurations.

Is Weaviate open source?

Yes. The Weaviate open source license is BSD-3-Clause for the core repository, with a separate commercially licensed wl/ directory. Milvus is Apache-2.0 and an LF AI & Data graduated project. Both can be self-hosted, and each has a managed service: Weaviate Cloud and Zilliz Cloud.

Does Weaviate support hybrid search?

Yes. Weaviate hybrid search combines a BM25F keyword query with a vector query, weighted by alpha and fused with relativeScoreFusion or rankedFusion. Milvus runs hybrid search across several vector fields, including BM25 sparse vectors generated on the server, fused with RRF or a weighted ranker.

Can I run Milvus without Kubernetes in production?

Yes. Milvus Standalone packs every component into a single Docker image with the Woodpecker WAL embedded and is documented up to 100 million vectors; Milvus Lite is a Python library for a few million. Kubernetes, via Helm or the Milvus Operator, is for Milvus Distributed.

Is switching from Weaviate to Milvus a drop-in migration?

No. A Weaviate collection maps to a Milvus collection with scalar fields, and named vectors to multiple vector fields. Export objects with their vectors, bulk-insert into Milvus, build indexes, and rewrite hybrid queries from alpha fusion to RRF or a weighted ranker.

What is the difference between Milvus and Zilliz Cloud?

Zilliz Cloud is fully managed Milvus from the team that created it. It uses the same client APIs, so code written against Milvus Lite or Standalone moves to Zilliz Cloud without a rewrite.

Prefer not to run a cluster?

Zilliz Cloud is fully managed Milvus from the team that created it, with the same MilvusClient API you use locally. Start on open-source Milvus and move to the managed service without rewriting your application.

Sources and technical documentation (58)