Milvus简介 #
一、什么是Milvus #
1.1 Milvus定义 #
Milvus 是一个开源的高性能向量数据库,专为 AI 应用、机器学习和相似度搜索而设计。
text
┌─────────────────────────────────────────┐
│ Milvus 架构 │
├─────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ AI应用 │ │ 推荐系统 │ │ 图像搜索 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │
│ └────────────┼────────────┘ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ Milvus Server │ │
│ │ (向量存储与检索) │ │
│ └─────────────────────┘ │
│ │ │
│ ┌────────────┴────────────┐ │
│ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ │
│ │ 索引文件 │ │ 元数据 │ │
│ └─────────┘ └─────────┘ │
└─────────────────────────────────────────┘
1.2 发展历史 #
| 时间 | 事件 |
|---|---|
| 2019年 | Zilliz公司创建Milvus项目 |
| 2020年 | Milvus 1.0发布,开源 |
| 2021年 | Milvus 2.0发布,云原生架构 |
| 2022年 | Milvus 2.2发布,性能大幅提升 |
| 2023年 | Milvus 2.3发布,GPU索引支持 |
| 2024年 | Milvus 2.4发布,增强混合搜索 |
1.3 为什么选择Milvus #
text
传统数据库 vs Milvus
传统数据库:
┌─────────────────────────────────────┐
│ 应用 → 精确匹配查询 → 结果 │
│ 无法处理相似度搜索 │
└─────────────────────────────────────┘
Milvus:
┌─────────────────────────────────────┐
│ 应用 → 向量相似度搜索 → 相似结果 │
│ 支持高维向量高效检索 │
└─────────────────────────────────────┘
二、Milvus核心特点 #
2.1 高性能 #
text
Milvus性能指标:
单节点搜索延迟:< 10ms(百万级向量)
分布式搜索:支持十亿级向量
吞吐量:> 10,000 QPS
原因:
1. 先进的索引算法
2. GPU加速支持
3. 分布式架构
4. 列式存储
2.2 丰富的索引类型 #
| 索引类型 | 说明 | 适用场景 |
|---|---|---|
| FLAT | 暴力搜索 | 小数据集、高精度 |
| IVF_FLAT | 倒排索引 | 通用场景 |
| IVF_PQ | 乘积量化 | 内存受限场景 |
| HNSW | 图索引 | 高性能搜索 |
| DISKANN | 磁盘索引 | 大规模数据 |
| GPU_IVF_FLAT | GPU索引 | GPU加速场景 |
| GPU_IVF_PQ | GPU量化索引 | GPU大容量场景 |
2.3 混合搜索 #
text
混合搜索支持:
┌─────────────────────────────────────┐
│ 查询请求 │
├─────────────────────────────────────┤
│ 向量相似度 + 标量过滤 │
│ ┌─────────┐ ┌─────────┐ │
│ │ 向量搜索 │ │ 元数据过滤│ │
│ └────┬────┘ └────┬────┘ │
│ └──────┬─────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 结果融合 │ │
│ └─────────────┘ │
└─────────────────────────────────────┘
2.4 云原生架构 #
text
Milvus云原生特性:
┌─────────────────────────────────────┐
│ 云原生架构 │
├─────────────────────────────────────┤
│ ✓ 容器化部署 │
│ ✓ Kubernetes原生支持 │
│ ✓ 存储计算分离 │
│ ✓ 弹性伸缩 │
│ ✓ 高可用 │
│ ✓ 多租户支持 │
└─────────────────────────────────────┘
2.5 易用性 #
python
from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType
connections.connect("default", host="localhost", port="19530")
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
]
schema = CollectionSchema(fields, "demo collection")
collection = Collection("demo", schema)
三、应用场景 #
3.1 RAG(检索增强生成) #
text
RAG架构:
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 用户问题 │────▶│ 向量化 │────▶│ Milvus │
└──────────┘ └──────────┘ └────┬─────┘
│
▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 最终答案 │◀────│ LLM生成 │◀────│ 相关文档 │
└──────────┘ └──────────┘ └──────────┘
python
question_embedding = embed(question)
results = collection.search(
data=[question_embedding],
anns_field="embedding",
param={"metric_type": "L2", "params": {"nprobe": 10}},
limit=5
)
3.2 图像搜索 #
text
图像搜索流程:
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 查询图片 │────▶│ 特征提取 │────▶│ Milvus │
└──────────┘ └──────────┘ └────┬─────┘
│
▼
┌──────────┐
│ 相似图片 │
└──────────┘
3.3 推荐系统 #
python
user_embedding = get_user_embedding(user_id)
results = collection.search(
data=[user_embedding],
anns_field="item_embedding",
param={"metric_type": "IP", "params": {"nprobe": 16}},
limit=10,
expr='category == "electronics"'
)
3.4 文本相似度 #
python
query_embedding = text_to_embedding("机器学习入门教程")
results = collection.search(
data=[query_embedding],
anns_field="text_embedding",
param={"metric_type": "COSINE"},
limit=10
)
3.5 视频检索 #
text
视频检索流程:
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 视频帧 │────▶│ 特征提取 │────▶│ Milvus │
└──────────┘ └──────────┘ └────┬─────┘
│
▼
┌──────────┐
│ 相似视频 │
└──────────┘
四、Milvus与其他向量数据库对比 #
4.1 Milvus vs Pinecone #
| 特性 | Milvus | Pinecone |
|---|---|---|
| 开源 | ✓ | ✗ |
| 自托管 | ✓ | ✗ |
| 云服务 | Zilliz Cloud | Pinecone Cloud |
| 索引类型 | 丰富 | 有限 |
| 混合搜索 | 支持 | 有限 |
| 成本 | 低(自托管) | 较高 |
4.2 Milvus vs Weaviate #
| 特性 | Milvus | Weaviate |
|---|---|---|
| 性能 | 更高 | 较高 |
| 索引类型 | 更多 | 较少 |
| GraphQL | 不支持 | 支持 |
| 模块化 | 一般 | 强 |
| 学习曲线 | 中等 | 较低 |
4.3 Milvus vs Qdrant #
| 特性 | Milvus | Qdrant |
|---|---|---|
| 性能 | 更高 | 高 |
| 分布式 | 原生支持 | 支持 |
| 索引类型 | 更多 | 较少 |
| 社区 | 更大 | 较小 |
| 企业支持 | Zilliz | Qdrant |
五、Milvus架构概览 #
5.1 整体架构 #
text
┌─────────────────────────────────────────────────────┐
│ Milvus 架构 │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Access Layer │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ Proxy │ │ Proxy │ │ Proxy │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Coordinator Layer │ │
│ │ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ │ │
│ │ │ Root │ │ Query │ │ Data │ │ Index │ │ │
│ │ │Coord │ │ Coord │ │ Coord │ │ Coord │ │ │
│ │ └───────┘ └───────┘ └───────┘ └───────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Worker Layer │ │
│ │ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ │ │
│ │ │ Query │ │ Data │ │ Index │ │ Query │ │ │
│ │ │ Node │ │ Node │ │ Node │ │ Node │ │ │
│ │ └───────┘ └───────┘ └───────┘ └───────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Storage Layer │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Meta Store│ │ Log Store│ │Obj Store │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
5.2 组件说明 #
| 组件 | 说明 |
|---|---|
| Proxy | 请求代理,处理客户端连接 |
| Root Coordinator | 元数据管理,DDL操作 |
| Query Coordinator | 查询调度,负载均衡 |
| Data Coordinator | 数据管理,段管理 |
| Index Coordinator | 索引构建协调 |
| Query Node | 执行查询任务 |
| Data Node | 数据写入处理 |
| Index Node | 索引构建任务 |
六、Milvus适用场景总结 #
6.1 适合使用Milvus的场景 #
text
✓ RAG应用(检索增强生成)
✓ 图像/视频检索
✓ 推荐系统
✓ 文本相似度搜索
✓ 音频检索
✓ 分子结构搜索
✓ 欺诈检测
✓ 异常检测
6.2 不适合使用Milvus的场景 #
text
✗ 传统OLTP事务处理
✗ 复杂SQL关联查询
✗ 精确匹配为主的场景
✗ 数据量很小的场景(< 1万向量)
七、总结 #
Milvus核心特点:
| 特点 | 说明 |
|---|---|
| 高性能 | 毫秒级搜索,支持十亿级向量 |
| 丰富索引 | FLAT、IVF、HNSW、DISKANN等 |
| 混合搜索 | 向量+标量混合查询 |
| 云原生 | Kubernetes原生支持 |
| 易用性 | 多语言SDK,简单API |
下一步,让我们学习Milvus的安装与配置!
最后更新:2026-04-04