Milvus 基本原理

下面用面试能直接说、简短又完整的方式讲清楚 Milvus 基本原理(偏原理+架构+索引,Java/后端面试够用)。


一、一句话概括

Milvus 是分布式向量数据库 ,专门存高维向量(Embedding) ,核心是用ANN(近似最近邻)索引 解决"亿级向量中快速找相似 "的问题,支持向量+标量混合检索,适合 RAG、推荐、图像搜索等 AI 场景。


二、核心原理(三块:向量存储、索引、分布式架构)

1. 向量从哪来(Embedding)

文本/图片/音频 → 深度学习模型(如 BERT、CLIP)→ 高维浮点向量(如 768维、1536维),向量越近 = 内容越相似。

  • 相似度:余弦相似度 (文本常用)、欧氏距离(图像常用)。

2. 数据模型(类比 MySQL)

  • Collection(集合) ≈ 表,存向量+标量字段(如 id、content)
  • Partition(分区) ≈ 分区,按时间/业务分,缩小查询范围
  • Segment(分片) ≈ 数据块,分布式存储最小单元:
    • Growing Segment :内存中,正在写入,无索引
    • Sealed Segment :刷盘到对象存储(S3/MinIO),建索引,不可改

3. 索引原理(核心!解决慢查询)

直接全量算距离太慢(亿级向量 O(N)),Milvus 用ANN 索引 ,牺牲一点点精度换百倍速度。

常用索引(面试必说)
  1. HNSW(Hierarchical Navigable Small World)

    • 分层图索引,向量之间连"邻居边"
    • 搜索:从顶层往下跳,快速定位最近邻居
    • 特点:查询快、召回高、内存占用大,默认首选
  2. IVF(Inverted File,倒排文件)

    • 用 K-means 把向量聚成 N 个"桶(聚类中心)"
    • 搜索:只查最相近的几个桶(nprobe),不扫全量
    • 变种:IVF_FLAT (原始向量)、IVF_PQ(向量压缩,省内存)
  3. 核心逻辑:先建索引 → 检索时走索引 → 只算少量候选向量距离 → 返回 TopK 相似结果。

4. 分布式架构(Milvus 2.x 核心)

分层解耦,弹性扩缩容,适合大数据量:

  • Proxy(接入层):无状态,接收请求、路由、负载均衡
  • Coord(协调层) :
    • RootCoord:元数据、全局时间戳
    • DataCoord:数据管理、持久化
    • QueryCoord:查询调度
    • IndexCoord:索引管理
  • Worker(执行层) :
    • DataNode:写入、Flush、Compaction(合并小文件)
    • QueryNode:向量检索、过滤、聚合
    • IndexNode:异步建索引
  • 存储层 :
    • WAL:RocksDB,保证写入可靠
    • 向量/索引:对象存储(S3/MinIO)
    • 元数据:etcd

三、查询流程(面试常问)

  1. 客户端发向量 + TopK + 过滤条件
  2. Proxy 路由到 QueryCoord
  3. QueryCoord 调度多个 QueryNode 并行搜索
  4. QueryNode:
    • 对 Sealed Segment:走 HNSW/IVF 索引
    • 对 Growing Segment:暴力扫描
    • 合并结果、过滤标量条件
  5. 汇总 TopK,返回客户端

四、面试背诵版(30秒说清楚)

Milvus 是分布式向量数据库,专门存储 Embedding 向量,核心用 HNSW/IVF 等 ANN 索引 ,把全量计算变成近似搜索 ,实现亿级向量毫秒级相似查询。采用 Proxy--Coord--Worker--存储四层架构,数据分 Segment 管理,支持向量与标量混合检索,常用于 RAG、推荐系统等 AI 场景。


相关推荐
kyrie_sakura17 小时前
大模型学习19 大模型学习 - LangChain2_Retrieval(RAG-文档处理-向量处理检索-Milvus)
学习·langchain·milvus
Maiko Star1 天前
*【HM-LC】Milvus向量库详解:Collection、索引、混合检索与LangChain实战
langchain·milvus
霸道流氓气质3 天前
AI 图片管理平台:Spring AI 原生多模态、Milvus 向量语义检索与 MinIO 预签名安全管控的 React + 全栈生产级实战
人工智能·spring·milvus
一枕槐安4874 天前
多模态RAG实战:PDF图文混合文档检索问答本地跑通
langchain·pdf·milvus·ai应用开发·多模态rag
ai大模型-探索者8 天前
BGE-M3三种向量在Milvus怎么存(稠密、稀疏、多向量)
milvus·稀疏·多向量·稠密
唠点键盘之外的10 天前
29 切片的权限隔离(实战篇):Milvus + Spring AI,从 0 搭一条带权限过滤的检索链路
人工智能·spring·milvus
ai大模型-探索者10 天前
Milvus向量数据库(介绍与使用)
数据库·milvus
Crayon Lin11 天前
Milvus向量数据库入门
数据库·milvus
一木 之林13 天前
LangChain 第9章 RAG 与项目实战:文档切分、嵌入、Milvus 与客服知识库
人工智能·计算机视觉·langchain·milvus
今年下半年13 天前
AI智能体项目实战记录(05):RAG项目实战之向量知识库milvus部署
人工智能·llm·milvus·rag