一、Milvus 是什么(核心定位)
Milvus = 专门做"向量检索"的数据库
本质上解决的问题是:
在"高维向量空间"中做近似最近邻搜索(ANN, Approximate Nearest Neighbor)
典型输入:
-
embedding(文本 / 图片 / 音频 / 视频)
-
维度:128 / 256 / 768 / 1536 / 4096 等
典型查询:
- "找最相似的 TopK 向量"
二、为什么需要 Milvus(本质问题)
传统数据库(MySQL / ES)的问题:
| 问题 | 说明 |
|---|---|
| 无法高效处理高维向量 | 维度爆炸 |
| 全量扫描太慢 | O(N) |
| 无法支持语义搜索 | keyword ≠ semantic |
Milvus解决:
👉 把向量检索复杂度从 O(N) 降到亚线性甚至接近 O(logN)
三、核心架构(Milvus 2.x)
Milvus 2.x 是云原生 + 分布式架构
1️⃣ 整体架构
Client
↓
Proxy
↓
-----------------------
| Coordinator 层 |
| RootCoord |
| DataCoord |
| QueryCoord |
-----------------------
↓
-----------------------
| Worker 层 |
| DataNode |
| QueryNode |
-----------------------
↓
Storage:
- Object Storage(S3 / MinIO)
- Metadata(etcd)
- Log(Pulsar / Kafka)
2️⃣ 关键组件说明
(1)Proxy
-
接收请求
-
做参数校验
-
路由到 QueryNode / DataNode
(2)RootCoord
-
管理 collection(表)
-
schema 管理
-
全局元数据
(3)DataCoord + DataNode
👉 写路径
-
DataNode:写入数据
-
DataCoord:调度、segment 管理
(4)QueryCoord + QueryNode
👉 查询路径(最核心)
-
QueryNode:
-
加载向量索引
-
执行 ANN 搜索
-
-
QueryCoord:
- 分发查询任务
(5)存储层
| 类型 | 技术 |
|---|---|
| 向量数据 | S3 / MinIO |
| 元数据 | etcd |
| 日志 | Pulsar |
四、核心数据模型
1️⃣ Collection(类似表)
{
"id": int64,
"vector": float[768],
"title": string,
"category": string
}
2️⃣ Segment(核心设计)
Milvus 数据不是直接存表,而是:
👉 按 segment(分片)存储
类型:
| 类型 | 说明 |
|---|---|
| Growing | 正在写入 |
| Sealed | 已固化(可建索引) |
五、核心能力:ANN 检索原理
Milvus支持多种索引算法:
1️⃣ IVF(倒排文件)
思想:先聚类,再查局部
流程:
-
KMeans 分桶
-
查询只在部分桶中搜索
优点:
-
快
-
可控精度
2️⃣ HNSW(最常用)
👉 图结构搜索
特点:
-
多层小世界网络
-
类似"跳表"
优点:
-
高精度
-
查询快
缺点:
- 内存消耗高
3️⃣ PQ(Product Quantization)
👉 向量压缩
优点:
-
节省内存
-
支持十亿级数据
缺点:
- 精度下降
4️⃣ DiskANN(磁盘级)
👉 面向超大规模(TB级)
六、查询流程(非常重要)
一次查询流程:
1. Client 发起向量查询
2. Proxy 接收
3. QueryCoord 分配 QueryNode
4. QueryNode:
- 加载 segment
- 使用索引(HNSW/IVF)检索
5. 返回 TopK
关键优化点:
-
并行查询多个 segment
-
SIMD / GPU 加速
-
批量查询
七、性能优化核心机制
1️⃣ 向量索引(决定性能上限)
| 类型 | 场景 |
|---|---|
| HNSW | 高精度 |
| IVF_FLAT | 通用 |
| IVF_PQ | 大规模 |
| DiskANN | 超大规模 |
2️⃣ Segment 并行
👉 多 segment 并发查询
3️⃣ 内存管理
-
热数据加载内存
-
冷数据走磁盘
4️⃣ GPU 加速
Milvus 支持 GPU:
-
Faiss GPU
-
批量向量计算
八、生态与集成
Milvus 在 AI 生态中的位置:
1️⃣ 和 embedding 模型
常见:
-
OpenAI embedding
-
Hugging Face
-
Sentence-BERT
2️⃣ 和 RAG(最重要)
Milvus 是 RAG 核心组件:
用户问题 → embedding
↓
Milvus 检索
↓
TopK 文档
↓
LLM 生成答案
3️⃣ 和数据湖
常见组合:
-
Apache Iceberg
-
Delta Lake
👉 离线 + 在线统一
4️⃣ 和流式计算
-
Apache Flink
-
实时 embedding + 写入 Milvus
九、典型应用场景
1️⃣ RAG(检索增强生成)
最核心:
-
ChatGPT-like 系统
-
企业知识库问答
2️⃣ 推荐系统
-
用户 embedding
-
商品 embedding
3️⃣ 图像搜索
- 以图搜图
4️⃣ 多模态搜索
-
文本 → 图片
-
图片 → 视频
5️⃣ 风控 / 相似检测
-
欺诈检测
-
相似账号识别
十、Milvus vs 其他向量数据库
| 数据库 | 特点 |
|---|---|
| Milvus | 分布式、工业级 |
| Faiss | 库级(非数据库) |
| Pinecone | SaaS |
| Weaviate | GraphQL |
十一、优缺点总结
优点
-
高性能 ANN
-
分布式扩展
-
AI 生态完善
-
支持十亿级数据
缺点
-
运维复杂(依赖多组件)
-
内存消耗大(HNSW)
-
不适合事务型查询
十二、一个典型架构(你重点关注)
结合你做数据平台 + AI:
┌──────────────┐
│ 数据湖 Iceberg │
└──────┬───────┘
↓
Flink 实时处理
↓
embedding 生成
↓
Milvus
↓
RAG / 推荐系统
↓
LLM
十三、你应该重点掌握的 5 个点(面试 / 实战)
如果你要转 AI 数据平台,这 5 个必须掌握:
1️⃣ ANN 原理(HNSW / IVF)
2️⃣ Segment + 索引机制
3️⃣ Query 流程(调度 + 并行)
4️⃣ RAG 架构
5️⃣ embedding 生命周期管理