向量数据库之Milvus

一、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(倒排文件)

思想:先聚类,再查局部

流程:

  1. KMeans 分桶

  2. 查询只在部分桶中搜索

优点:

  • 可控精度


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 生命周期管理

相关推荐
weixin_580614002 小时前
如何防止SQL注入利用存储过程_确保存储过程不拼字符串.txt
jvm·数据库·python
weixin_408717772 小时前
mysql权限表查询性能如何优化_MySQL系统权限缓存原理
jvm·数据库·python
吕源林2 小时前
怎么优化MongoDB的软删除设计_布尔标记与删除时间戳
jvm·数据库·python
吕源林2 小时前
如何解决SQL存储过程连接泄露_确保在异常后关闭连接
jvm·数据库·python
Gofarlic_OMS2 小时前
应对MathWorks合规审查的专项准备工作
大数据·服务器·网络·数据库·人工智能
七夜zippoe2 小时前
DolphinDB SQL查询:从基础到进阶
数据库·sql·进阶·聚合·dolphindb
有想法的py工程师3 小时前
PostgreSQL 深入heap_update() 与 HOT 机制(附源码级解析)
数据库·postgresql
qq_342295824 小时前
如何为容器内多个列表实现统一滚动条.txt
jvm·数据库·python