mrkeyoor.com_
Fri 16 Oct 18:54 UTC
Dataevaluationupdated 04 Oct 2026

milvus review

Milvus is a vector database for storing embeddings beside ordinary fields and searching them with dense, sparse, filtered, or hybrid queries. It can run as a local Milvus Lite file, a single-machine server, or a distributed Kubernetes system, which suits retrieval workloads that have outgrown an in-process index.

+40stars / 7d
Verdict

Our Milvus run installed 965 packages and built in 12 seconds, then 137 of 170 Go test packages failed, so adopting the source tree requires more engineering work than the quick start suggests. Use Milvus when vector search is already a database and operations problem, especially if you need separate scaling, hybrid retrieval, and several index choices. Start with Milvus Lite or a narrower alternative when the workload still fits one process.

We ran it

Lab card: what happened when we ran milvusScreenshot of milvus (milvus.io)
Install✓ · 104s965 packages
Build✓ · 12s
Tests✗ · 437s33 passed · 137 failed of 170 (go test)
Repo6399 files~2,566,348 lines of source · 131.2 MB · 21 CI workflows · tests dir

Answers from our run

Does milvus build from source?

Dependencies installed in 104 seconds (965 packages), and the build succeeded in 12 seconds. We cloned commit 0acf11f into a clean Debian container with 3 CPUs and no project-specific setup.

Do milvus's tests pass?

Not all of them: 33 of 170 passed and 137 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 already points those users to Milvus Lite, while the server repository spans 6,399 files.

What are the alternatives to milvus?

Qdrant, Weaviate, Chroma. Our Milvus run installed 965 packages and built in 12 seconds, then 137 of 170 Go test packages failed, so adopting the source tree requires more engineering work than the quick start suggests.

Setup2/5Build passed, but 137 of 170 test packages failed
Docs4/5Clear paths for Lite, standalone, cluster, and source builds
Community5/546,317 stars and code pushed on October 3, 2026
Maturity4/5v3.0.2 is active, though current failure reports merit testing

Who it’s for

Teams building search, recommendations, or retrieval-augmented generation over large embedding collections.
Platform engineers who need to scale query and data services separately on Kubernetes.
Developers who want one database for dense vectors, sparse vectors, scalar filters, and hybrid ranking.
Organizations prepared to operate storage, indexing, monitoring, authentication, and upgrades as a database service.

Who it’s NOT for

Small applications that only need an embedded local index: the README already points those users to Milvus Lite, while the server repository spans 6,399 files.
Teams that require a green full suite in a plain Go container before adoption: our run ended with 137 failed packages out of 170.
Operators without time for distributed-system failure handling: open issue 51659 documents process panics during transient object-storage, RPC, and etcd failures.
Buyers who want a single lightweight source build: the README requires Go, CMake, GCC, and Python, and the repository has a compose file but no Dockerfile.

Setup reality

Our fresh Debian sandbox installed commit 0acf11f in 104 seconds, adding 965 packages. The 131.2 MB checkout held 6,399 files and about 2,566,348 source lines. The build passed in 12 seconds, but go test failed after 437 seconds: 33 packages passed and 137 failed out of 170.

The shortest route is Milvus Lite through pymilvus, which stores data in a local file. A deployed server needs an endpoint and token. The README also describes standalone and distributed modes, with Kubernetes used for the horizontally scaled architecture and separate query and data services.

Source development needs Go, CMake, GCC or LLVM, and Python within the documented ranges. Our Go 1.24 container was unprivileged and had no secrets. The repository includes a compose file and 21 CI workflow files, but no Dockerfile, so the source checkout is not itself a one-image development environment.

6,399 files separate Milvus from an embedded index

Milvus stores vectors beside strings, numbers, and JSON fields, then searches them with metadata filters or hybrid dense and sparse retrieval. The project README names HNSW, IVF, FLAT, SCANN, and DiskANN among its index choices. It also supports BM25 full-text search and learned sparse embeddings. That range is useful when one retrieval system must serve search, recommendations, and retrieval-augmented generation without moving every workload into a different engine.

The same README offers three very different starting points. Milvus Lite persists to a local file through the Python client. Standalone mode puts the server on one machine. The distributed design separates compute and storage and scales query nodes independently from data nodes on Kubernetes. Our checkout contained 6,399 files and about 2,566,348 source lines, so the full repository belongs in the database-infrastructure category even if the first Python example fits on one screen.

What happened when we ran it

Our sandbox installed commit 0acf11f in 104 seconds and added 965 packages. The checkout occupied 131.2 MB before installation. We used a fresh Debian container with 3 CPUs, 8 GB of RAM, Go 1.24, no secrets, and no elevated privileges. The build completed successfully in 12 seconds. Those results show that the basic dependency and compile path worked on our box. They do not measure query speed, indexing throughput, recall, or cluster behavior.

The complete Go test command failed after 437 seconds. The harness counted 33 passing packages and 137 failed packages out of 170. The end of the log listed integration packages for replica loading, replication, resource groups, roaring matching, rolling upgrades, seal policies, search, snapshots, statistics, targets, and telemetry as build failures. The tail did not include the underlying compiler messages, so we cannot say whether a missing system package, generated artifact, or source defect caused them.

A 12-second build does not make source ownership simple

Milvus documents more than a Go toolchain for source development. Linux builds call for CMake, GCC, and Python alongside Go, with version ranges listed in the README, followed by ./scripts/install_deps.sh and make. Our build passed in 12 seconds, but the repository has no Dockerfile to define one canonical development image. It does contain a compose file and 21 CI workflow files, which is evidence of automation, not proof that a plain container matches the maintainers' build estate.

That distinction matters if your team plans to patch Milvus rather than consume a published image. A 131.2 MB checkout with native components, multiple language tools, and 170 discovered Go test packages needs its own reproducible builder. The failed integration packages cover coordination and lifecycle behavior that a vector search demo never reaches. Before carrying a fork, reproduce the exact CI prerequisites and get the subset you depend on green in your environment. Our log tail alone cannot supply those missing prerequisites.

v3.0.2 shows the cost of distributed storage

The v3.0.2 release, published September 20, 2026, improved filtered search, index building, external collections, and Storage V2. Its fix list is more revealing for buyers: it covers compaction, WAL recovery, query-node assignment, incomplete binlog reads, memory leaks, snapshot restores, and a case where compaction logs printed encryption keys and object-storage credentials. Mature distributed software has long fix lists because many components can fail at their boundaries.

One current report deserves an operator's attention. Issue 51659 describes 55 process panics across 22 Milvus instances during a 48-hour chaos-testing window. The reported triggers include transient S3 errors, a refused coordinator connection, and etcd leader changes. That is an issue report rather than a result from our sandbox, and it covers several 2.6 and master builds. Teams evaluating v3.0.2 should reproduce those failure paths under their own storage and coordination setup.

46,317 stars come with a 1,387-item issue and PR queue

GitHub reported 46,317 stars, 1,387 open issues and pull requests combined, and a last push on October 3, 2026. The repository was active the day before this review, while v3.0.2 had shipped less than three weeks earlier. Those dates support a healthy-maintenance judgment. The large combined queue still means you should search for your storage backend, index type, and upgrade path before choosing a version. Popularity does not make every configuration equally exercised.

The project also documents authentication, TLS, and role-based access control, plus monitoring through Prometheus and Grafana. Its ecosystem includes administration, debugging, migration, and connector tools. With 21 CI workflows in our checkout, this is plainly a maintained platform rather than a thin vector library. That breadth is the reason to choose Milvus, and it is also the reason a trial should include backup, restore, rolling upgrade, object-storage interruption, and overloaded-query behavior.

Milvus fits teams already treating retrieval as infrastructure

Our 104-second install and 12-second build make the source approachable enough to inspect, but the 437-second failed test run blocks an easy recommendation for casual source ownership. Milvus earns a serious evaluation when you need several index families, hybrid retrieval, access controls, and independent scaling of read and write services. If you need a local embedding store for one application, Milvus Lite keeps the API nearby without asking you to adopt the 2,566,348-line server tree.

Alternatives

ProjectWhat it isPick it when
Qdrant gh↗A Rust vector database with filtering, distributed deployment, and a smaller operational surface.pick this instead when you want a focused vector service and do not need Milvus's breadth of index and storage modes.
WeaviateA vector database that combines semantic retrieval with object storage and modular integrations.pick this instead when its schema model and built-in integrations fit your application better than Milvus's architecture.
Chroma gh↗A developer-oriented embedding database with a simple local starting point.pick this instead when local application development matters more than operating a large distributed search cluster.

Sources

  1. Milvus README
  2. Milvus v3.0.2 release notes
  3. Milvus issue 51659: transient dependency failures
  4. Milvus standalone Docker installation

More data reviews

wine-quality-svc-tuning · dhis2-immunisation-audit · OpenTerminal · The-Quant-Trading-Vault · multimodal-product-discovery · edgequake · the whole board →