为专门为处理输入向量查询而设计的数据库,它能够对万亿规模的向量进行索引。与现有的关系数据库主要处理遵循预定义模式的结构化数据不同,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。

image-20260313142915749

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐