最近更新时间:2026-09-11 17:06:40
随着 AI 时代的全面到来,非结构化数据(如社交媒体帖子、电商商品图片、音视频片段等)的体量与价值持续爆发式增长,已成为企业核心的数据资产之一。然而,传统关系型数据库虽擅长处理结构化数据,却难以应对非结构化数据的存储与语义检索需求,无法支撑大规模 AI 应用的低延迟相似性搜索。
向量数据库应运而生。它通过将非结构化数据转化为高维向量嵌入(Embedding),实现对数据语义关系的建模与检索,解决了传统数据库的痛点。Milvus 作为一款面向生成式 AI 的高性能开源云原生向量数据库,专为 Embedding 相似性检索场景设计,可扩展至数百亿向量,以大规模、高并发、高可用著称。金山云向量数据库 Milvus (以下简称 Milvus)基于开源 Milvus 构建,提供全托管服务。其核心能力是存储文本、图像、音频、视频等非结构化数据经向量化后生成的向量与配套标量数据,并提供高速相似度匹配检索,广泛应用于各类涉及 “语义查找” 或 “找相似” 的 AI 应用中,包括多模态搜索、检索增强生成(RAG)、智能推荐系统、安全风控与异常检测等。
Milvus采用云原生、存算分离的分布式部署设计。客户端请求通过Proxy分发到各节点上,每个节点相互通信和协调,实现数据存储与检索。
• Proxy:集群统一接入网关。负责接收客户端 SDK 请求,完成请求校验、路由分发,并汇聚多节点检索结果返回客户端;采用无状态设计,支持水平扩展。
• MixCoordinator:集群控制平面核心组件。负责元数据管理、集群拓扑维护与任务调度;统一管控 Streaming Node、Query Node 和 Data Node。
• Streaming Node:实时写入节点。写入数据先持久化到消息队列以保障可靠性;负责 Growing Segment 的实时查询;数据达到阈值后封存为 Sealed 段并写入对象存储。
• Query Node:历史数据查询节点。加载对象存储中已封存的 Sealed Segment,执行向量检索与标量过滤。
• Data Node:后台任务节点。读取对象存储中的 Segment,执行段合并(Compaction)与向量索引构建,并将结果与索引回写对象存储。
• 对象存储:持久化存放 Segment 向量原始数据与索引文件,实现计算与存储分离。
注:
当前用户选择 CU 数量(如 2CU、3CU、4CU等),系统会自动分配 MixCoordinator、Proxy、StreamingNode、QueryNode、DataNode 的规格与副本数,开箱即用,无需关心底层节点拓扑。
对象存储用于持久化存放向量数据与索引文件,当前免费包含在实例中,实现计算与存储的完全分离。
1. 数据写入(Insert)
客户端:通过 SDK 发送插入请求。
Proxy:接收请求,进行校验和路由,将写入请求转发。
Streaming Nodes:接收实时写入数据,写入内存中的 Growing 段(增量数据),并记录日志(WAL)。
Streaming Nodes → 对象存储:定期将日志和数据快照持久化到对象存储,确保数据可靠落盘。
2. 数据检索(Search)
客户端:通过 SDK 发送向量检索请求。
Proxy:接收请求,向协调器获取元数据,并将请求分发。
Query Nodes:检索已加载到本地内存/磁盘的历史 Sealed 段数据,执行向量索引检索,返回部分结果。
Streaming Nodes:查询内存中未落盘的 Growing 段(实时增量数据),返回部分结果。
Proxy:汇总 Query Nodes 和 Streaming Nodes 的结果,进行归并排序后返回给客户端。
3. 数据落盘与初步索引构建(Flush & Indexing)
Streaming Nodes:当内存中的 Growing 段数据量达到阈值,或收到手动 Flush 指令时,将其转换为 Sealed 段(历史数据段)。
落盘:Streaming Nodes 将 Sealed 段的数据文件持久化写入对象存储。
MixCoordinator:检测到新 Sealed 段生成后,检查集合是否已配置向量索引。
Data Nodes:若已配置索引,MixCoordinator 立即异步调度 Data Nodes 拉取该 Sealed 段,构建向量索引,并将索引文件写回对象存储。
4. 数据合并与索引重建(Compaction & Re-indexing)
MixCoordinator:监控对象存储,当检测到存在大量零散的小 Sealed 段时,触发合并任务以优化存储和查询效率。
Data Nodes:拉取多个小 Sealed 段执行段合并(Compaction),生成更大的 Sealed 段。由于数据布局发生重组,Data Nodes 会重新构建向量索引。
写回:将合并后的数据文件和新的索引文件写回对象存储,替换旧的小段及旧索引。
5. 数据加载(Load)
客户端:发送加载集合(Load Collection)请求。
Proxy & MixCoordinator:处理请求,定位数据段和索引文件。
Query Nodes:从对象存储中拉取指定的 Sealed 段数据和索引文件到本地内存或本地磁盘。
Query Nodes:加载完成后上报状态,后续即可提供低时延的检索服务。
6. 删除/更新(Delete/Update)
客户端:发送删除或更新请求。
Proxy:将请求转发给 Streaming Nodes。
Streaming Nodes:将删除标记(Delete Marker)作为增量数据写入日志流(WAL)。
后续流程:删除标记随 Flush 进入对象存储,最终由 Data Nodes 在 Compaction 阶段物理清理旧数据。
纯净模式
