真开源
Apache 2.0 许可,LF AI & Data 基金会治理,数百位贡献者在 GitHub 上公开协作。
Milvus 是免费、Apache 2.0 许可的开源向量数据库,由 LF AI & Data 基金会托管,Go 和 C++ 编写,面向大规模高性能向量检索。pip 装上就能跑,数据量上来后在 Kubernetes 上扩到数百亿向量,API 不变。
Apache 2.0 许可,LF AI & Data 基金会治理,数百位贡献者在 GitHub 上公开协作。
Knowhere 引擎运行时自动选择 SSE、AVX2、AVX512 或 ARM 指令集,还支持 CAGRA 等 NVIDIA GPU 索引。
存算分离。无状态的 query、streaming、data 节点在 Kubernetes 上独立扩缩容,可扩到数百亿向量。
NVIDIA、Salesforce、Walmart、eBay、IBM、Reddit 都在 Milvus 用户墙上;美团在自建 Milvus 上跑着 100 亿+ 向量。
来源:VectorDBBench 排行榜(zilliz.com/vdbbench-leaderboard),配置名称按原样引用。结果取决于配置,建议用自己的数据跑一遍 VectorDBBench。
Zilliz Cloud 是全托管的 Milvus:API 相同,不用自己规划、升级和扩缩集群。
免费试用 Zilliz Cloud官方 SDK 和 REST API 覆盖主流技术栈和 AI 框架。
每个 collection 按召回、延迟和内存选索引,可叠加标量过滤和全文检索。
同一个引擎、同一套 API,容量建议来自安装概览文档。分布式版用官方 Helm Chart 或 Milvus Operator 部署。
| 数据库 | 许可证 / 语言 | 自建部署方式 | 向量索引 | 混合检索(关键词 + 向量) |
|---|---|---|---|---|
| Milvus | Apache-2.0;Go、C++ | pip(Lite)、Docker(Standalone)、Kubernetes(Distributed);Zilliz Cloud 托管 | HNSW、IVF、DiskANN、SCANN、IVF_RABITQ、GPU_CAGRA | 内置 BM25 和稀疏向量;RRF 或加权融合 |
| Qdrant | Apache-2.0;Rust | Docker 单节点、集群;Qdrant Cloud 托管 | HNSW | 稠密 + 稀疏向量,RRF 或 DBSF 融合 |
| Weaviate | 核心 BSD-3-Clause(wl/ 目录为 Weaviate License);Go | Docker、Kubernetes;Weaviate Cloud 托管 | HNSW、flat、dynamic、HFresh | 向量 + BM25F,相对分数或排名融合 |
| Chroma | Apache-2.0;Python、Rust | 进程内嵌入、client-server;Chroma Cloud 托管 | HNSW(单机)、SPANN(分布式) | 向量检索叠加全文和元数据过滤 |
| pgvector | PostgreSQL License;C | 任意 Postgres 的扩展,含各家托管 Postgres | HNSW、IVFFlat | 与 Postgres 全文检索在 SQL 里合并,如 RRF |
以上是各项目官方文档中的事实;开源向量数据库怎么推荐、怎么选型,取决于数据规模、过滤和混合检索需求。性能取决于配置,建议用自己的数据跑一遍 VectorDBBench。
Milvus Lite 随 pymilvus 一起安装。不需要服务器、Docker 或账号,数据库就是一个本地文件。
# pip install -U "pymilvus[milvus-lite]"
import random
from pymilvus import MilvusClient
client = MilvusClient("milvus_demo.db") # Milvus Lite: data lives in this local file
client.create_collection(collection_name="demo", dimension=768)
docs = ["Milvus is an open-source vector database.", "It runs on a laptop or on Kubernetes."]
vecs = [[random.random() for _ in range(768)] for _ in docs] # swap in your embedding model
client.insert(collection_name="demo",
data=[{"id": i, "vector": v, "text": t} for i, (v, t) in enumerate(zip(vecs, docs))])
print(client.search(collection_name="demo", data=[vecs[0]], limit=2, output_fields=["text"]))要切换到服务端,把 URI(如 http://localhost:19530)传给 MilvusClient 即可。
免费。Milvus 是免费向量数据库:Apache 2.0 允许免费商用、修改和再分发,已发布的代码永远是 Apache 2.0。它是 LF AI & Data 基金会毕业项目,Zilliz 是主要贡献者。
开源向量数据库推荐按负载选。要混合检索、过滤和规模的 RAG 适合 Milvus:内置 BM25,partition key 按租户召回,LangChain、LlamaIndex 官方集成,本地文件到 Kubernetes 一套代码。
自建 Milvus 数据和成本完全可控,升级、扩容、备份由自己团队负责。Zilliz Cloud 跑同一个引擎、同一套 MilvusClient API,两边切换不用改代码。
float32 向量每条占 维度 × 4 字节,索引另算。Milvus 用 SQ8(比 FP32 省 75%)、IVF_RABITQ(1:32 压缩)或 NVMe 上的 DiskANN 压内存;可用 milvus.io/tools/sizing 估算。
能。Distributed 版跑在 Kubernetes 上,多副本、组件独立扩缩容。美团在自建 Milvus 上承载 100 亿+ 向量,Read AI 为数百万用户提供 20–50 ms 检索。
pip 安装 pymilvus,打开本地文件,开始检索。数据量上来后切到 Standalone 或 Kubernetes,或交给 Zilliz Cloud 托管,代码不用改。