Milvus 是 Zilliz 主导、捐赠给 LF AI & Data 基金会,Apache‑2.0 开源协议的云原生分布式向量数据库。专门存储、检索Embedding高维向量,解决海量向量的近似最近邻ANN相似搜索,是大模型RAG、多模态AI的底层存储引擎。
传统数据库擅长精确匹配;Milvus擅长**“找相似”**:文本、图片、音频经过Embedding模型转为高维数值向量,Milvus快速找出语义/特征最接近的数据。
核心能力
- 丰富向量索引:HNSW、IVF系列、DiskANN,支持CPU/GPU加速;可在检索速度、召回率、内存占用三者之间权衡取舍。
- 混合查询:向量相似度搜索 + 标量字段过滤(where条件过滤元数据),生产环境高频使用。
- 存算分离分布式架构:Proxy接入、Coordinator协调、Query/Data计算节点、对象存储持久化;计算、存储可独立横向扩缩,支持百亿级向量,毫秒级召回。
- 多部署形态
| 版本 | 适用场景 |
|---|---|
| Milvus‑Lite | Python库,pip install,笔记本原型开发 |
| Milvus Standalone | 单机部署,百万~亿级向量生产 |
| Milvus Distributed | K8s分布式集群,十亿~百亿级企业业务 |
| Zilliz Cloud | 托管云服务,免运维 |
- 多语言SDK:Python(pymilvus)、Go、Java、REST API;配套可视化工具Attu、CLI。
典型业务场景
- RAG知识库:企业文档、私有知识库,语义检索,缓解大模型幻觉(Milvus最主流场景)
- 多模态检索:以图搜图、视频片段检索、音频检索
- 推荐系统:用户/物品向量做相似推荐、粗排召回
- 异常检测、风控、药物分子相似度匹配等科学计算场景
基础概念(类比MySQL)
| Milvus概念 | MySQL类比 | 说明 |
|---|---|---|
| Collection | Table | 集合,存放向量与元数据 |
| Field | Column | 字段,可以是向量、int、varchar、JSON |
| Entity | Row | 一行记录,一条业务数据 |
| Index | Index | 向量索引,ANN检索的核心 |
和FAISS的区别
- FAISS:Meta开源的检索算法库,只做内存内向量搜索,不是完整数据库,没有持久化、分布式、过滤、高可用,需要自己封装存储层。
- Milvus:完整数据库,封装FAISS等底层算法,提供持久化、分布式、过滤、备份、扩缩容,直接用于线上服务。
极简Python示例(Milvus‑Lite)
from pymilvus import MilvusClient
client = MilvusClient("demo.db")
# 创建集合,向量维度8
client.create_collection(collection_name="test", dimension=8)
# 插入向量
data = [{"vector":[0.1]*8, "id":1}]
client.insert("test", data)
# 向量相似检索
res = client.search(collection_name="test", data=[[0.1]*8], limit=2)
print(res)