向量数据库 Milvus
为专门为处理输入向量查询而设计的数据库,它能够对万亿规模的向量进行索引。与现有的关系数据库主要处理遵循预定义模式的结构化数据不同,Milvus 是自下而上设计的,旨在处理从非结构化数据转换而来的嵌入向量。
Milvus 采用共享存储架构,存储计算完全分离,计算节点支持横向扩展。从架构上来看,Milvus 遵循数据流和控制流分离,整体分为了四个层次,分别为接入层(access layer)、协调服务(coordinator service)、执行节点(worker node)和存储层(storage)。各个层次相互独立,独立扩展和容灾。
2. 核心概念理解
Embeddings:Embedding = 把文字 / 图片 / 音频,变成一串数字(向量),让计算机能 “读懂” 内容的含义。
2.1 数据库概念
-
Collections,相当于关系数据库中的“表”,用于存储和管理实体。
-
实体(Entity),行,由多个字段组成,代表现实世界对象;每个实体有唯一主键(可自定义或 AutoID)。
-
字段(Field),列,支持标量字段(int, string)和向量字段(dense/sparse vector)。
-
模式(Schema),定义 Collection 的结构,包括字段、主键是否自动递增(AutoID)、描述等。
-
动态模式(Dynamic Schema),允许插入未在 Schema 中预定义的新字段,实现无 Schema 写入。
-
非结构化数据,图像、视频、文本等无固定格式数据,通过 AI 模型转入向量存储 Milvus。
-
向量(Vector),非结构化数据(图像、视频、文本)的嵌入表示,Milvus 2.4+ 支持密集向量和稀疏向量。
-
主键与ID(AutoID),主键字段的属性,启用后由系统根据时间戳自动生成唯一 ID;
-
索引与搜索(Index), 为加速向量相似性搜索而构建的数据结构;支持多种类型(IVF, HNSW 等)。
-
自动索引,Milvus 根据经验自动选择最优索引类型和参数,适合无需精细调参的场景。
-
度量类型(Metric Type),定义向量相似度计算方式:L2(欧氏距离)、IP(内积)、COSINE(余弦)、二元等。
-
搜索(Search),基于向量执行相似性搜索的 API。
-
查询(Query),使用布尔表达式对标量字段进行过滤的 API 。
-
过滤搜索,向量搜索 + 标量条件过滤(如
category == "cat")。 -
混合搜索,Milvus 2.4+ 支持对多个向量字段同时搜索并融合结果。
-
范围搜索, 查找与目标向量距离在指定范围内的结果。
-
高级功能:
- 嵌入(Embedding) , Milvus 内置支持调用嵌入模型(如 text2vec),简化向量化流程。
- Milvus 集群,分布式部署,支持高可用、水平扩展。
-
数据组织:
名称 解释 分区(Partition) 对 Collection 的逻辑划分,减少读取时扫描的数据量。 分区键(Partition Key) 按字段值自动分片,使相同简直的数据落在同一分区,加速带该字段过滤的查询。 碎片(Shard) 基于主键哈希的物理分片,用于分散写入负载,提升读写吞吐。 分段(Segment) 存储实体数据文件,分为"成长段"(接收新数据)和“封存段”(只读,对象存储) -
流式日志:
名称 解释 通道(Channel) Milvus 流架构的核心单元,分 PChannel(物理)和 VChannel(虚拟)。 PC 通道(PChannel) 物理通道,对应 Woodpecker 管理的一个 WAL 流。 VChannel 虚拟通道,对应一个 Collection 的一个分片(shard)。 流服务(Stream Service) 基于 WAL 构建,支持流式写入、故障恢复、数据订阅等。 日志快照(Binlog) 记录数据变更的二进制日志,分 Insert/Delete/DDL 三类。 WAL storage 先写日志机制,确保数据持久性和一致性。 MemoryBuffer Woodpecker 轻量模式,数据暂存内存后刷入对象存储,适合小规模批量写入。 QuorumBuffer Woodpecker 高可用模式,三副本法定写入,适合低延迟、高可靠场景。 -
工具与生态
名称 解释 Attu Milvus 官方一体化 Web 管理 UI,降低运维复杂度。 Birdwatcher 调试工具,连接 etcd 实时监控 Milvus 状态,支持 etcd 备份与故障排查。 PyMilvus 官方 Python SDK,支持 ORM 和 MilvusClient 两种使用方式。 Milvus 备份 数据备份工具,用于灾难恢复。 -
依赖组件,Milvus 依赖 etcd(元数据)、MinIO/S3(对象存储)、Pulsar/Kafka(旧版日志)或 Woodpecker(新版 WAL)。
2.2 部署模式
- Milvus 单机版, 所有组件运行于单进程,适合开发/测试。
- Milvus 集群,分布式部署,支持高可用、水平扩展。
2.3 安装
Milvus 是一个高性能、可扩展的向量数据库。它支持各种规模的用例,从在 Jupyter 笔记本中本地运行的演示到处理数百亿向量的大规模 Kubernetes 集群。
目前,Milvus 有三种部署选项:Milvus Lite、Milvus Standalone 和 Milvus Distributed。

更多推荐




所有评论(0)