核心功能
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 部署方式