开源向量数据库:Apache 2.0,可自建可托管

Milvus 是免费、Apache 2.0 许可的开源向量数据库,由 LF AI & Data 基金会托管,Go 和 C++ 编写,面向大规模高性能向量检索。pip 装上就能跑,数据量上来后在 Kubernetes 上扩到数百亿向量,API 不变。

  • Apache License 2.0
  • GitHub 40K+ star
  • LF AI & Data 毕业项目
  • 可扩展到数百亿向量
  • VectorDBBench 9,575 QPS(Cohere 1M)
一个开源引擎、一套客户端 API,覆盖所有部署形态。
一个开源引擎、一套客户端 API,覆盖所有部署形态。
Milvus 与 Zilliz Cloud 用户
  • NVIDIA
  • Salesforce
  • Walmart
  • eBay
  • IBM
  • Cisco
  • Reddit
  • Roblox
  • Shell
  • LINE
  • Bosch
  • Airtable

为什么选 Milvus 做 RAG 和 Agent 应用的开源向量数据库

真开源

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 亿+ 向量。

向量检索吞吐(QPS,越高越好)Cohere 1M 数据集,768 维
  • Zilliz CloudZillizCloud-8cu-perf13,316.23 QPSP99 2 ms · 召回率 0.9383
  • MilvusMilvus-16c64g-sq4u-fp16-force_merge9,575.69 QPSP99 2.3 ms · 召回率 0.9189

来源:VectorDBBench 排行榜(zilliz.com/vdbbench-leaderboard),配置名称按原样引用。结果取决于配置,建议用自己的数据跑一遍 VectorDBBench。

Zilliz Cloud 是全托管的 Milvus:API 相同,不用自己规划、升级和扩缩集群。

免费试用 Zilliz Cloud

核心能力

开放生态,不锁定

官方 SDK 和 REST API 覆盖主流技术栈和 AI 框架。

  • Python、Java、Go、Node.js SDK,以及 RESTful API
  • 集成 LangChain、LlamaIndex、OpenAI、Hugging Face、Spark、Kafka
  • 运维配套:Attu 图形界面、Prometheus/Grafana 监控、Milvus CDC

主流索引一个引擎全覆盖

每个 collection 按召回、延迟和内存选索引,可叠加标量过滤和全文检索。

  • HNSW、IVF、DiskANN、SCANN,以及 RaBitQ 量化(IVF_RABITQ)
  • GPU 索引:GPU_CAGRA、GPU_IVF_FLAT、GPU_IVF_PQ
  • BM25 全文检索 + 稀疏向量,支持混合检索

向量数据库私有化部署:Milvus 单机部署、分布式部署还是托管

同一个引擎、同一套 API,容量建议来自安装概览文档。分布式版用官方 Helm Chart 或 Milvus Operator 部署。

  • Milvus Lite:pip 安装、本地文件,几百万向量以内,适合 notebook 和原型
  • 单机部署(Standalone):一份 Docker Compose 起 milvus-standalone、etcd、MinIO,约 1 亿向量以内
  • K8s 分布式部署(Distributed):1 亿到数百亿向量,冷热分层,默认 65,536 个 collection,partition key 支撑百万级租户

开源向量数据库有哪些?怎么选型?Milvus 和 Qdrant、Weaviate、Chroma、pgvector 对比

开源向量数据库对比:Milvus、Qdrant、Weaviate、Chroma、pgvector 的许可证、语言、部署方式、向量索引与混合检索,均来自各项目的 LICENSE 文件和官方文档
数据库许可证 / 语言自建部署方式向量索引混合检索(关键词 + 向量)
MilvusApache-2.0;Go、C++pip(Lite)、Docker(Standalone)、Kubernetes(Distributed);Zilliz Cloud 托管HNSW、IVF、DiskANN、SCANN、IVF_RABITQ、GPU_CAGRA内置 BM25 和稀疏向量;RRF 或加权融合
QdrantApache-2.0;RustDocker 单节点、集群;Qdrant Cloud 托管HNSW稠密 + 稀疏向量,RRF 或 DBSF 融合
Weaviate核心 BSD-3-Clause(wl/ 目录为 Weaviate License);GoDocker、Kubernetes;Weaviate Cloud 托管HNSW、flat、dynamic、HFresh向量 + BM25F,相对分数或排名融合
ChromaApache-2.0;Python、Rust进程内嵌入、client-server;Chroma Cloud 托管HNSW(单机)、SPANN(分布式)向量检索叠加全文和元数据过滤
pgvectorPostgreSQL License;C任意 Postgres 的扩展,含各家托管 PostgresHNSW、IVFFlat与 Postgres 全文检索在 SQL 里合并,如 RRF

以上是各项目官方文档中的事实;开源向量数据库怎么推荐、怎么选型,取决于数据规模、过滤和混合检索需求。性能取决于配置,建议用自己的数据跑一遍 VectorDBBench。

向量数据库本地部署:从 pip install 到第一次检索

Milvus Lite 随 pymilvus 一起安装。不需要服务器、Docker 或账号,数据库就是一个本地文件。

python
# 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 免费吗?可以商用吗?

免费。Milvus 是免费向量数据库:Apache 2.0 允许免费商用、修改和再分发,已发布的代码永远是 Apache 2.0。它是 LF AI & Data 基金会毕业项目,Zilliz 是主要贡献者。

RAG 用哪个开源向量数据库?

开源向量数据库推荐按负载选。要混合检索、过滤和规模的 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 托管,代码不用改。

资料来源与技术文档 (40)