mrkeyoor.com_
Tue 01 Sept 17:43 UTC
Dataevaluationupdated 26 Aug 2026

milvus review

Milvus is an open-source database for storing and searching vectors alongside fields such as text, numbers, and JSON. It is built for search, recommendation, and retrieval systems that have outgrown an in-process index and need either a standalone server or a distributed cluster.

+121stars / 7d
Verdict

Our Milvus build finished in 11 seconds, but 72 of 85 Go test targets failed in the same sandbox, so adopting it means accepting a serious system with a demanding contributor path. Use Milvus when vector retrieval is core infrastructure, you need its mix of dense, sparse, filtered, and full-text search, and your team already knows how to operate stateful services. For a modest application or a first RAG prototype, Milvus Lite or a narrower server is the more proportionate choice.

We ran it

Lab card: what happened when we ran milvusScreenshot of milvus (milvus.io)
Install✓ · 124s807 packages
Build✓ · 11s
Tests✗ · 344s13 passed · 72 failed of 85 (go test)
Repo5755 files~2,266,769 lines of source · 118 MB · 21 CI workflows · tests dir

Answers from our run

Does milvus build from source?

Dependencies installed in 124 seconds (807 packages), and the build succeeded in 11 seconds. We cloned commit 034e9fb into a clean Debian container with 3 CPUs and no project-specific setup.

Do milvus's tests pass?

Not all of them: 13 of 85 passed and 72 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use milvus?

Small applications that only need an embedded local index: the README directs that job to Milvus Lite, while the full repository measured 5,755 files and about 2,266,769 source lines.

What are the alternatives to milvus?

Qdrant, Weaviate, Chroma. Our Milvus build finished in 11 seconds, but 72 of 85 Go test targets failed in the same sandbox, so adopting it means accepting a serious system with a demanding contributor path.

Setup2/5Fast build, but 72 of 85 test targets failed in our run
Docs4/5Clear quickstarts and deep deployment docs, spread across many pages
Community5/5Pushed on 2026-08-25 with active issues and pull requests
Maturity5/5Version 3.0 and multiple deployment modes, with upgrade caveats

Who it’s for

Search and RAG teams that need dense, sparse, full-text, filtered, or hybrid retrieval in one database.
Platform engineers prepared to run a stateful service with object storage, metadata storage, monitoring, and backups.
Organizations that need a path from a single-host deployment to a Kubernetes cluster.
Developers who want several index families and hardware choices instead of one fixed search engine.

Who it’s NOT for

Small applications that only need an embedded local index: the README directs that job to Milvus Lite, while the full repository measured 5,755 files and about 2,266,769 source lines.
Teams unwilling to operate supporting services: the supplied standalone Compose file starts etcd and MinIO beside Milvus, with three persistent volumes to manage.
Developers who require a clean generic Go test run before adoption: 72 of 85 test targets failed in our sandbox, and the log tail only establishes that many integration packages failed to build.
Security-sensitive operators planning to expose the client-facing gRPC port without checking the current fix status: open issue #52387 reports that two streaming RPCs in Milvus 3.0 bypass authentication and RBAC.
Operators who need an unconditional downgrade path after enabling new storage features: the 3.0 release says using Storage V3 changes serialized data and removes the promised rollback to 2.6.

Setup reality

In our fresh Debian sandbox, dependency installation succeeded in 124 seconds and installed 807 packages. The build then succeeded in 11 seconds. The Go test run lasted 344 seconds: 13 of 85 targets passed and 72 failed, ending with integration packages reported as build failures. The log tail does not identify the underlying cause.

The lightest documented start is pymilvus[milvus-lite] with a local database file. The full standalone Compose deployment runs three containers: Milvus, etcd, and MinIO. It persists three volumes and exposes ports 19530, 9091, 9000, and 9001. A remote client also needs its server URI and a username-password token or cloud API key.

Source development is a different path. The README lists Go 1.21 or newer, CMake from 3.26.4 to below 4, GCC 11 or newer on Linux, and Python above 3.8 through 3.11. Our checkout had a Compose file but no Dockerfile at its root. The repository is 118 MB with about 2,266,769 source lines, so this is not a small Go service to casually patch.

Milvus 3.0 spans local files and distributed clusters

Milvus 3.0 is a vector database that stores embeddings with scalar data and searches them through dense, sparse, full-text, filtered, and hybrid queries. The server supports several index families, including HNSW, IVF, DiskANN, and brute-force FLAT. Its architecture separates query work from storage and can scale those parts independently in Kubernetes. A standalone mode serves one machine, while Milvus Lite puts a local database behind the Python client for smaller experiments.

That range is Milvus's reason to exist and its first warning label. Our checkout contained 5,755 files and about 2,266,769 lines of source, so the full project is infrastructure rather than a library hidden inside an application. Teams building retrieval for a large corpus can choose different indexes, combine vector similarity with metadata filters, and keep source text beside vectors. A developer making a modest document chatbot may be taking on far more system than the product needs.

What happened when we ran it

In our fresh Debian sandbox, installing 807 packages took 124 seconds and completed successfully. Building the checked-out commit 034e9fb then succeeded in 11 seconds. That is a surprisingly clean compile for a 118 MB checkout written mainly in Go, though the repository also contains native components and extensive integration code. The successful build proves that the supplied source compiled in our unprivileged container with 3 CPUs and 8 GB of RAM.

The Go test command ran for 344 seconds and returned exit code 1. Of 85 test targets, 13 passed and 72 failed. The end of the log lists integration packages for replication, rolling upgrades, search, snapshots, telemetry, and other areas as build failures. Those lines do not say why the builds failed, so we will not blame a missing package or a product defect. They do show that a generic Go container did not produce a clean test run.

Standalone still means three persistent services

The official standalone Compose file for Milvus 3.0.0 starts three containers: Milvus itself, etcd for metadata, and MinIO for object storage. It mounts a separate persistent volume for each service, publishes client and health ports, and waits on dependency health checks. This is manageable on one host, but backup and recovery have to cover the database, metadata, and stored objects as one system. A single docker compose up command does not remove that responsibility.

Source contributors face another layer. The README calls for Go 1.21 or newer, CMake 3.26.4 through the 3.x line, GCC 11 or newer on Linux, and Python above 3.8 through 3.11. Our dependency step installed 807 packages before the 11-second build. The repository includes a Compose file but our measurement found no root Dockerfile, so the source workflow and the prebuilt standalone image are distinct routes. Read the development guide before treating the Python quickstart as build documentation.

Version 3.0 adds features with explicit rollback limits

Release 3.0.0 adds external collections, online schema changes, snapshots, faceted search, long TEXT fields, and new sparse-search machinery. Some of that behavior is deliberately opt-in. Storage V3 is disabled by default, and new index versions require configuration changes. The release promises rollback from 3.0 to 2.6 only until an operator enables features that change serialized data, including Storage V3. That makes feature flags part of the migration plan, not a casual toggle.

The current issue queue deserves the same specific reading. GitHub reported 1,335 open issues and pull requests together, and the repository was pushed on 2026-08-25, which points to heavy, current development rather than neglect. One open Milvus 3.0 report says two streaming gRPC methods on the external proxy bypass authentication and RBAC. Another report, filed against 2.5.21, describes standalone memory exhaustion under 7 to 10 concurrent search users. Check the affected version and fix status against your deployment before opening the service to traffic.

Pick Milvus for retrieval infrastructure, not a quick feature

Our 3-CPU sandbox built Milvus in 11 seconds, yet only 13 of 85 Go test targets passed. That split captures the buying decision. Milvus has the index choices, hybrid retrieval, storage separation, and cluster design for a team whose search layer is already a platform. The same breadth creates more services, configuration, upgrade policy, and test work than a small application needs. Qdrant or Weaviate offer different server tradeoffs, while Chroma and Milvus Lite suit a shorter local path.

Milvus is worth a serious trial when search quality and scale justify a dedicated data system. Start with a representative collection, record memory use and recovery behavior, and test the exact index and filter mix you plan to ship. Pin the server and SDK versions together, keep authentication behind a private network while reviewing current security reports, and rehearse restore before enabling Storage V3. If those tasks sound disproportionate, the smaller alternative is the better engineering choice.

Alternatives

ProjectWhat it isPick it when
Qdrant gh↗A Rust vector database with filtering, hybrid queries, and a compact server deployment.pick this instead when you want a narrower vector-search service and a simpler operational surface than a Milvus cluster.
WeaviateA vector database that combines semantic search, keyword search, and a schema-oriented API.pick this instead when its object model and built-in module ecosystem fit your application better than Milvus's collection model.
Chroma gh↗A developer-focused retrieval database with a short local path for Python and JavaScript applications.pick this instead when local application development matters more than Milvus's distributed architecture and index range.

What people are saying

  1. [github-trending] milvus-io/milvus

Sources

  1. Milvus README
  2. Milvus repository facts
  3. Milvus 3.0.0 release notes
  4. Milvus standalone Docker Compose file
  5. Open Milvus 3.0 streaming authentication issue
  6. Open Milvus standalone memory issue

More data reviews

turso · TrackersListCollection · dash · getcontact-cli · awesome-zhuiju-free · iggy · the whole board →