Milvus

Milvus

开源向量数据库,为 AI 应用提供向量相似度检索与标量过滤

核心功能

Milvus 是 Go 编写的开源向量数据库,提供 Lite、Standalone、Distributed 三种部署形态且共用同一套客户端 API。适合从 Notebook 原型走到 Kubernetes 十亿级向量检索的团队。差异在于同一份代码可从笔记本平滑迁到分布式集群,并提供四档可调一致性。

功能亮点

三形态同一 API

三种部署形态共用一套 API,从笔记本迁到集群客户端代码基本不改

一致性可调

默认 bounded staleness,也可切成 strong 或 eventually

单机零外部依赖

安装脚本把嵌入式 etcd 与 Woodpecker WAL 打进同一个容器

自带 Web 界面

启动后访问 127.0.0.1:9091/webui 查看实例状态

适用场景

• RAG 应用的知识库检索层,文档切片 embedding 入库后按语义召回上下文
• 以图搜图与相似商品推荐,先用标量字段过滤类目再做向量近邻检索
• 先用 Milvus Lite 在笔记本上验证原型,再原样把代码迁到 Docker 或 K8s 集群

安装配置

bash
Docker 单机版(Linux):
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
bash standalone_embed.sh start

停止与删除数据:
bash standalone_embed.sh stop
bash standalone_embed.sh delete

Python SDK(内含 Milvus Lite):
pip install -U pymilvus

显式安装 Milvus Lite:
pip install -U pymilvus[milvus-lite]

说明:脚本启动后容器名为 milvus-standalone,服务端口 19530,嵌入式 etcd 端口 2379,数据卷映射到当前目录的 volumes/milvus,Web 界面在 http://127.0.0.1:9091/webui/。

使用方法

python
连接本地 Milvus Lite:
from pymilvus import MilvusClient

client = MilvusClient("milvus_demo.db")

建集合(只需集合名与向量维度,主键与向量字段默认叫 id 和 vector,度量默认 COSINE):
if client.has_collection(collection_name="demo_collection"):
    client.drop_collection(collection_name="demo_collection")
client.create_collection(
    collection_name="demo_collection",
    dimension=768,
)

写入数据(Milvus 要求数据组织成字典列表,每个字典是一条实体):
data = [
    {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"}
    for i in range(len(vectors))
]
res = client.insert(collection_name="demo_collection", data=data)

向量检索:
res = client.search(
    collection_name="demo_collection",
    data=query_vectors,
    limit=2,
    output_fields=["text", "subject"],
)

带标量过滤的检索:
res = client.search(
    collection_name="demo_collection",
    data=query_vectors,
    filter="subject == 'biology'",
    limit=2,
    output_fields=["text", "subject"],
)

改连远程服务端时只需换 uri 与 token,其余代码不变:
client = MilvusClient(uri="http://localhost:19530", token="root:Milvus")

关键指标

尚未核验对标产品,此处只列本工具自身指标,不做对比结论。

指标Milvus
价格免费
开源
上手难度进阶

相关工具

优点

  • Lite / Standalone / Distributed 三形态共用同一套 API,官方明确迁移时客户端代码不需要大改
  • 提供 strong、bounded staleness、session、eventually 四档一致性,可按业务在延迟与可见性间取舍
  • 单机 Docker 部署自带嵌入式 etcd 与 Woodpecker 消息队列(本地文件系统作 WAL),不需要额外的外部 MQ
  • Apache 2.0 许可证开源,同时提供 REST 与 gRPC 接口及 Python、Java、Go、C#、Node.js 五种客户端

缺点

  • Milvus Lite 只支持 FLAT 索引类型,无论建集合时指定什么索引都会按 FLAT 处理
  • Milvus Lite 不支持分区、用户与角色、别名,一致性级别也只支持 Strong(其他配置一律按 Strong 处理)
  • Milvus Lite 目前只支持 Ubuntu ≥ 20.04 与 macOS ≥ 11.0,官方声明它仅适合小规模检索场景
  • 单机 Docker 部署若要使用 Milvus Backup,官方建议改用 Docker Compose 部署方式