云原生向量数据库Milvus知识大全,看完这篇就够了[基本概念、系统架构、主要组件、应用场景]

news/2025/10/29 15:13:03/文章来源:https://www.cnblogs.com/gaoyanbing/p/19174490

1.Milvus简介

1.1什么是 Milvus

Milvus 是一款云原生向量数据库,它具备高可用、高性能、易拓展的特点,用于海量向量数据的实时召回。

Milvus 基于 FAISS、Annoy、HNSW 等向量搜索库构建,核心是解决稠密向量相似度检索的问题。在向量检索库的基础上,Milvus 支持数据分区分片、数据持久化、增量数据摄取、标量向量混合查询、time travel 等功能,同时大幅优化了向量检索的性能,可满足任何向量检索场景的应用需求。通常,建议用户使用 Kubernetes 部署 Milvus,以获得最佳可用性和弹性。

Milvus 采用共享存储架构,​存储计算完全分离​,计算节点支持横向扩展。从架构上来看,Milvus 遵循数据流和控制流分离,整体分为了四个层次,分别为接入层(access layer)、协调服务(coordinator service)、执行节点(worker node)和存储层(storage)。各个层次相互独立,独立扩展和容灾。

1.2.为什么需要 Milvus

随着互联网不断发展,电子邮件、论文、物联网传感数据、社交媒体照片、蛋白质分子结构等非结构化数据已经变得越来越普遍。如果想要使用计算机来处理这些数据,需要使用 embedding 技术将这些数据转化为向量。随后,Milvus 会存储这些向量,并为其建立索引。Milvus 能够根据两个向量之间的距离来分析他们的相关性。如果两个向量十分相似,这说明向量所代表的源数据也十分相似。

Milvus 向量数据库专为向量查询与检索设计,能够为万亿级向量数据建立索引。

与现有的主要用作处理结构化数据的关系型数据库不同,Milvus 在底层设计上就是为了处理由各种非结构化数据转换而来的 Embedding 向量而生。

1.3.为什么选择使用 Milvus

  • 高性能:性能高超,可对海量数据集进行向量相似度检索。
  • 高可用、高可靠:Milvus 支持在云上扩展,其容灾能力能够保证服务高可用。
  • 混合查询:Milvus 支持在向量相似度检索过程中进行标量字段过滤,实现混合查询。
  • 开发者友好:支持多语言、多工具的 Milvus 生态系统。 *

2.Milvus 基本概念


2.1 非结构化数据

非结构化数据指的是数据结构不规则,没有统一的预定义数据模型,不方便用数据库二维逻辑表来表现的数据。

非结构化数据包括图片、视频、音频、自然语言等,占所有数据总量的 80%。

非结构化数据的处理可以通过各种人工智能(AI)或机器学习(ML)模型转化为向量数据后进行处理。

特征向量

向量又称为 embedding vector,是指由 embedding 技术从离散变量(如图片、视频、音频、自然语言等各种非结构化数据)转变而来的连续向量。

在数学表示上,向量是一个由浮点数或者二值型数据组成的 n 维数组。

通过现代的向量转化技术,比如各种人工智能(AI)或者机器学习(ML)模型,可以将非结构化数据抽象为 n 维特征向量空间的向量。这样就可以采用最近邻算法(ANN)计算非结构化数据之间的相似度。

向量相似度检索

相似度检索是指将目标对象与数据库中数据进行比对,并召回最相似的结果。同理,向量相似度检索返回的是最相似的向量数据。

近似最近邻搜索(ANN)算法能够计算向量之间的距离,从而提升向量相似度检索的速度。如果两条向量十分相似,这就意味着他们所代表的源数据也十分相似。

Collection

包含一组 entity,可以等价于关系型数据库系统(RDBMS)中的表。

Entity

包含一组 field。field 与实际对象相对应。field 可以是代表对象属性的结构化数据,也可以是代表对象特征的向量。primary key 是用于指代一个 entity 的唯一值。

​**注意:**​ 你可以自定义 primary key,否则 Milvus 将会自动生成 primary key。请注意,目前 Milvus 不支持 primary key 去重,因此有可能在一个 collection 内出现 primary key 相同的 entity。

Field

Entity 的组成部分。​​Field​​ 可以是结构化数据,例如数字和字符串,也可以是向量。

​**注意:**​

Milvus 2.0 现已支持标量字段过滤。并且,Milvus 2.0 在一个集合中只支持一个主键字段。

Milvus 与关系型数据库的对应关系如下:

Milvus 向量数据库

关系型数据库

Collection

Entity

Field

表字段

Partition

分区是集合(Collection)的一个分区。Milvus 支持将收集数据划分为物理存储上的多个部分。这个过程称为分区,每个分区可以包含多个段。

Segment

Milvus 在数据插入时,通过合并数据自动创建的数据文件。一个 collection 可以包含多个 segment。一个 segment 可以包含多个 entity。在搜索中,Milvus 会搜索每个 segment,并返回合并后的结果。

Sharding

Shard 是指将数据写入操作分散到不同节点上,使 Milvus 能充分利用集群的并行计算能力进行写入。默认情况下,单个 Collection 包含 2 个分片(Shard)。目前 Milvus 采用基于​主键哈希​的分片方式,未来将支持随机分片、自定义分片等更加灵活的分片方式。

​**注意:**​ 分区的意义在于通过划定分区减少数据读取,而分片的意义在于多台机器上并行写入操作。

索引

索引基于原始数据构建,可以提高对 collection 数据搜索的速度。Milvus 支持多种​​索引类型​​。为提高查询性能,你可以为每个向量字段指定一种索引类型。目前,一个向量字段仅支持一种索引类型。切换索引类型时,Milvus 自动删除之前的索引。

相似性搜索引擎的工作原理​是将输入的对象与数据库中的对象进行比较,找出与输入最相似的对象。索引是有效组织数据的过程,极大地加速了对大型数据集的查询,在相似性搜索的实现中起着重要作用。对一个大规模向量数据集创建索引后,查询可以被路由到最有可能包含与输入查询相似的向量的集群或数据子集。在实践中,这意味着要牺牲一定程度的准确性来加快对真正的大规模向量数据集的查询。

PChannel

PChannel 表示物理信道。每个 PChannel 对应一个日志存储主题。默认情况下,将分配一组 256 个 PChannels 来存储记录 Milvus 集群启动时数据插入、删除和更新的日志。

VChannel

VChannel 表示逻辑通道。每个集合将分配一组 VChannels,用于记录数据的插入、删除和更新。VChannels 在逻辑上是分开的,但在物理上共享资源。

3.Milvus 系统架构

Milvus 2.0 是一款云原生向量数据库,采用​存储与计算分离​的架构设计,所有组件均为无状态组件,极大地增强了系统弹性和灵活性。

整个系统分为四个层次:

  • 接入层(Access Layer):系统的门面,由一组无状态 proxy 组成。对外提供用户连接的 endpoint,负责验证客户端请求并合并返回结果。
  • 协调服务(Coordinator Service):系统的大脑,负责分配任务给执行节点。协调服务共有四种角色,分别为 root coord、data coord、query coord 和 index coord。
  • 执行节点(Worker Node):系统的四肢,负责完成协调服务下发的指令和 proxy 发起的数据操作语言(DML)命令。执行节点分为三种角色,分别为 data node、query node 和 index node。
  • 存储服务 (Storage): 系统的骨骼,负责 Milvus 数据的持久化,分为元数据存储(meta store)、消息存储(log broker)和对象存储(object storage)三个部分。 *

各个层次相互独立,独立扩展和容灾。

3.1接入层

接入层由一组无状态 proxy 组成,是整个系统的门面,对外提供用户连接的 endpoint。接入层负责验证客户端请求并减少返回结果。

  • Proxy 本身是无状态的,一般通过负载均衡组件(Nginx、Kubernetes Ingress、NodePort、LVS)对外提供统一的访问地址并提供服务。
  • 由于 Milvus 采用大规模并行处理(MPP)架构,proxy 会先对执行节点返回的中间结果进行全局聚合和后处理后,再返回至客户端。 *

3.2协调服务

协调服务是系统的大脑,负责向执行节点分配任务。它承担的任务包括集群拓扑节点管理、负载均衡、时间戳生成、数据声明和数据管理等。

协调服务共有四种角色:

  • ​**Root coordinator(root coord)**​:负责处理数据定义语言(DDL)和数据控制语言(DCL)请求。比如,创建或删除 collection、partition、index 等,同时负责维护中心授时服务 TSO 和时间窗口的推进。
  • ​**Query coordinator (query coord)**​:负责管理 query node 的拓扑结构和负载均衡以及从增长的 segment 移交切换到密封的 segment。
  • ​**Data coordinator (data coord)**​:负责管理 data node 的拓扑结构,维护数据的元信息以及触发 flush、compact 等后台数据操作。
  • ​**Index coordinator (index coord)**​:负责管理 index node 的拓扑结构,构建索引和维护索引元信息。 *

3.3执行节点

执行节点是系统的四肢,负责完成协调服务下发的指令和 proxy 发起的数据操作语言(DML)命令。

由于采取了存储计算分离,执行节点是无状态的,可以配合 Kubernetes 快速实现扩缩容和故障恢复。

执行节点分为三种角色:

  • ​**Query node:**​ Query node 通过订阅消息存储(log broker)获取增量日志数据并转化为 growing segment,基于对象存储加载历史数据,提供标量 + 向量的混合查询和搜索功能。
  • ​**Data node:**​ Data node 通过订阅消息存储获取增量日志数据,处理更改请求,并将日志数据打包存储在对象存储上实现日志快照持久化。
  • ​**Index node:**​ Index node 负责执行索引构建任务。Index node 不需要常驻于内存,可以通过 serverless 的模式实现。 *

3.4存储服务

存储服务是系统的骨骼,负责 Milvus 数据的持久化,分为元数据存储(meta store)、消息存储(log broker)和对象存储(object storage)三个部分。

元数据存储

负责存储元信息的快照,比如:集合 schema 信息、节点状态信息、消息消费的 checkpoint 等。元信息存储需要极高的可用性、强一致和事务支持,因此,etcd 是这个场景下的不二选择。除此之外,etcd 还承担了服务注册和健康检查的职责。

对象存储

负责存储日志的快照文件、标量 / 向量索引文件以及查询的中间处理结果。Milvus 采用 MinIO 作为对象存储,另外也支持部署于 AWS S3 和 Azure Blob 这两大最广泛使用的低成本存储。但是,由于对象存储访问延迟较高,且需要按照查询计费,因此 Milvus 未来计划支持基于内存或 SSD 的缓存池,通过冷热分离的方式提升性能以降低成本。

消息存储

消息存储是一套支持回放的发布订阅系统,用于持久化流式写入的数据,以及可靠的异步执行查询、事件通知和结果返回。执行节点宕机恢复时,通过回放消息存储保证增量数据的完整性。

目前,分布式版 Milvus 依赖 Pulsar 作为消息存储,单机版 Milvus 依赖 RocksDB 作为消息存储。消息存储也可以替换为 Kafka、Pravega 等流式存储。

整个 Milvus 围绕日志为核心来设计,遵循​日志即数据​的准则,因此在 2.0 版本中没有维护物理上的表,而是通过日志持久化和日志快照来保证数据的可靠性。

日志系统作为系统的主干,承担了数据持久化和解耦的作用。通过日志的发布订阅机制,Milvus 将系统的读、写组件解耦。一个极致简化的模型如上图所示,整个系统主要由两个角色构成,分别是消息存储(log broker)(负责维护”日志序列 “)与“日志订阅者”。其中的“日志序列” 记录了所有改变库表状态的操作,“日志订阅者”通过订阅日志序列更新本地数据,以只读副本的方式提供服务。 发布订阅机制还为系统在变更数据捕获(CDC)和全面的分布式部署方面的可扩展性提供了空间。

4.Milvus 主要的组件

Milvus 支持两种部署模式,单机模式(standalone)和分布式模式(cluster)。两种模式具备完全相同的能力,用户可以根据数据规模、访问量等因素选择适合自己的模式。Standalone 模式部署的 Milvus 暂时不支持在线升级为 cluster 模式。

4.1 单机版 Milvus

单机版 Milvus​ 包括三个组件:

  • Milvus​ 负责提供系统的核心功能。
  • etcd​ 是元数据引擎,用于管理 Milvus 内部组件的元数据访问和存储,例如:proxy、index node 等。
  • MinIO​ 是存储引擎,负责维护 Milvus 的数据持久化。 *

4.2分布式版 Milvus

分布式版 Milvus​ 由八个微服务组件和三个第三方依赖组成,每个微服务组件可使用 Kubernetes 独立部署。

微服务组件
  • Root coord
  • Proxy
  • Query coord
  • Query node
  • Index coord
  • Index node
  • Data coord
  • Data node *
第三方依赖
  • etcd​ 负责存储集群中各组件的元数据信息。
  • MinIO​ 负责处理集群中大型文件的数据持久化,如索引文件和全二进制日志文件。
  • Pulsar​ 负责管理近期更改操作的日志,输出流式日志及提供日志订阅服务。 *

5.Milvus 应用场景

你可以使用 Milvus 搭建符合自己场景需求的向量相似度检索系统。Milvus 的使用场景如下所示:

  • 图片检索系统:以图搜图,从海量数据库中即时返回与上传图片最相似的图片。
  • 视频检索系统:将视频关键帧转化为向量并插入 Milvus,便可检索相似视频,或进行实时视频推荐。
  • 音频检索系统:快速检索海量演讲、音乐、音效等音频数据,并返回相似音频。
  • 分子式检索系统:超高速检索相似化学分子结构、超结构、子结构。
  • 推荐系统:根据用户行为及需求推荐相关信息或商品。
  • 智能问答机器人:交互式智能问答机器人可自动为用户答疑解惑。
  • DNA 序列分类系统:通过对比相似 DNA 序列,仅需几毫秒便可精确对基因进行分类。
  • 文本搜索引擎:帮助用户从文本数据库中通过关键词搜索所需信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试数据准备难题?一个Dify工作流,让你告别“巧妇难为无米之炊”

关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集 在软件测试领域,我们经常面临“巧妇难为无米之炊”的困境——再完善的测试用例,没有合适的测试数据也是徒劳。据统计,测试工程师平均花费…

如何使用 vxe-table 展开行实现展开子表父子表格

如何使用 vxe-table 展开行实现展开子表父子表格 查看官网:https://vxetable.cn gitbub:https://github.com/x-extends/vxe-table gitee:https://gitee.com/x-extends/vxe-table<template><div><vxe…

ubuntu操作系统增加swap内存 - Ladisson

检查当前 Swap 状态sudo swapon --show free -h关闭现有 Swapsudo swapoff /swapfile调整或创建 Swap 文件# 设置为16GB sudo fallocate -l 16G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile启用新 Swap…

2025年航空VR智慧教室定做厂家权威推荐榜单:幼儿保育实训室/家政实训室/航空VR实训室源头厂家精选

随着虚拟现实技术在航空培训领域的深度应用,VR智慧教室正成为培养航空人才的重要平台。据行业数据显示,2025年中国航空VR培训市场规模预计突破42亿元,年复合增长率达28.5%。 航空VR智慧教室通过高度仿真的虚拟环境,…

stash 的一些操作

git stash 作用是将当前分支改动的代码存放到暂存区中,还原当前分支的改动,可以成功切换到其他待改动分支;保存当前分支改动代码到暂存区,并备注 xxxxgit stash save "xxxx"查询当前git项目下所有在暂存…

Ubuntu Netplan

什么是 Netplan? Netplan 是 Ubuntu 17.10 及更高版本中引入的网络配置工具,它使用 YAML 格式的配置文件来简化网络管理。 主要特点​​声明式配置​​ 使用易读的 YAML 格式 抽象底层网络守护进程(NetworkManager …

2025年成品岗亭供货厂家权威推荐榜单:成品门卫亭/小区保安亭/执法岗亭源头厂家精选

市场调研数据显示,2024年国内岗亭定制市场规模已突破80亿元,年增长率保持在15%以上,成品岗亭因其快速交付的优势备受市场青睐。 成品岗亭作为城市管理、社区安防和商业服务的基础设施,其市场需求随着城市化进程加速…

实时期货、黄金贵金属、外汇数据接口文档

StockTV 提供全面的期货、黄金贵金属和外汇市场数据接口,支持全球主要交易所的期货合约、贵金属现货及期货、全球外汇货币对等多种金融产品。所有接口返回数据均为 JSON 格式。 快速开始 1. 获取 API Key 请联系官方获…

python动态加载插件 - ling

获取当前脚本路径 根据当前位置获取绝对路径,区分打包后的可执行文件和开发环境 def get_plugins_dir(relative_path: str = "plugins") -> str:"""获取应用程序的插件目录如果是打包后的…

实用指南:C++设计模式_结构型模式_适配器模式Adapter

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年混凝土预制管桩设备定做厂家权威推荐榜单:PHC管桩生产设备/PHC管桩生产线/混凝土管桩生产设备源头厂家精选

在建筑工业化和基础建设持续发展的推动下,混凝土预制管桩设备的技术水平与定制化能力已成为衡量制造商实力的关键标尺。本文基于技术研发实力、设备性能参数、定制化解决方案及市场应用反馈,对行业内的专业设备制造企…

2025年微小流量质量流量计企业权威推荐榜单:差压质量流量计/液体质量流量计/数字式质量流量计源头厂家精选

在精密制造、生物医药和半导体等高端工业领域,微小流量质量流量计作为流体测控的核心设备,其测量精度与稳定性直接关系到生产工艺效率与产品质量。当前,随着生物制药向“高效发酵”升级、新能源储能进入“规模化并网…

2025年阻燃pp管厂商权威推荐榜单:阻燃pp管厂商/塑料pp管/pp化工管源头厂家精选

2025年阻燃PP管厂商权威推荐榜单:塑料PP管/PP化工管/FRPP管源头厂家精选 在化工、矿山、污水处理等行业,阻燃PP管以其卓越的耐腐蚀性和阻燃安全性,正成为工业流体输送系统的关键材料。 阻燃PP管作为工业流体输送系统…

ArkTS语言(六)

学习ArkTS语言 ArkTS是HarmonyOS的主要应用开发语言,在TypeScript基础上进行了扩展,保留了其基本风格,并通过增强静态检查和分析来提高程序的稳定性和性能。本教程将帮助开发者掌握ArkTS的核心功能、语法及最佳实践…

rbd元数据

rbd元数据https://cloud.tencent.com/developer/article/1006283 实际操作示例的 Ceph Pool → RBD → Object → OMAP 文档Ceph Pool / RBD / Object / OMAP 完整文档1️⃣ 关键概念说明概念说明Pool Ceph 的逻辑存储…

2025 年氧舱厂家最新推荐榜,聚焦企业技术创新、产品品质与市场口碑深度解析方圆组合式/减压/盾构气压/高原平衡/实验/软体氧舱公司推荐

引言 随着医疗健康与特殊环境保障需求的不断升级,氧舱市场规模持续扩大,但行业内企业资质、技术水平与产品质量差异显著。部分企业存在资质不全、技术滞后、产品类型单一等问题,导致采购方难以精准筛选符合需求的优…

2025年进口气动塑料球阀定制厂家权威推荐榜单:进口气动超低温球阀/进口气动三片式球阀/进口气动衬氟球阀源头厂家精选

2025年进口气动塑料球阀定制厂家权威推荐榜单:进口气动超低温球阀/进口气动三片式球阀/进口气动衬氟球阀源头厂家精选 在工业流体控制领域,进口气动塑料球阀以其独特的耐腐蚀性能和定制化服务,正成为化工、医药等特…

KL 散度

http://joschu.net/blog/kl-approx.htmlKL 散度定义标准的 k1 估计KL 散度, 方差大, 应为k1 有正有负k3 也是KL 散度的无偏估计, 但是元素都是正的, 方差小很多--- 她说, 她是仙,她不是神

2025年不锈钢编织绳网柔性加工厂权威推荐榜单:不锈钢编织绳网围网/不锈钢手工编织绳网/焊接不锈钢编织绳网源头厂家精选

随着建筑装饰与防护工程需求的升级,不锈钢编织绳网市场正以年均12.3%的速度增长,2025年全球市场规模预计突破58亿美元。 不锈钢编织绳网以其耐腐蚀、高强度、柔韧性好等特点,广泛应用于动物园围网、建筑装饰、体育场…

页面增加水印及水印防删

从以下几点判断水印消失: 1.选用canvas 防止水印内容篡改 2.选用MutationObserver 监听水印的style属性是否被篡改和监听水印元素是否被删除 3.定时更新元素的z-index动态计算最大层级 watermark.js let obj = JSON.p…