Skip to content

Milvus 简介

什么是 Milvus

Milvus 是一个开源的向量数据库,专门用于存储、索引和管理大规模的向量数据。它由 Zilliz 公司开发并维护,旨在为机器学习应用提供高效的向量相似度搜索能力。

核心特性

高性能向量搜索

  • 支持十亿级向量数据的毫秒级检索
  • 采用多种先进的近似最近邻(ANN)算法
  • GPU 加速支持,进一步提升搜索性能

灵活的索引类型

  • FLAT: 精确搜索,适用于小规模数据集
  • IVF_FLAT: 基于倒排文件的向量索引
  • IVF_SQ8: 量化压缩,节省存储空间
  • IVF_PQ: 乘积量化,平衡速度和精度
  • HNSW: 基于图的索引,高速搜索
  • ANNOY: 树形索引结构
  • DISKANN: 磁盘上的高效索引

多语言 SDK 支持

  • Python SDK(最常用)
  • Java SDK
  • Go SDK
  • Node.js SDK
  • C++ SDK

云原生架构

  • 支持 Kubernetes 部署
  • 分布式架构,水平扩展
  • 高可用性设计

应用场景

图像搜索

  • 以图搜图
  • 相似图片推荐
  • 图片去重

自然语言处理

  • 语义搜索
  • 问答系统
  • 文本相似度匹配

推荐系统

  • 个性化推荐
  • 相似商品推荐
  • 用户画像匹配

生物信息学

  • DNA 序列比对
  • 蛋白质结构搜索
  • 药物分子筛选

音频处理

  • 音乐识别
  • 语音相似度匹配
  • 音频指纹

Milvus 架构概览

┌─────────────────────────────────────────────────────────────┐
│                        应用层                                │
│              (Python/Java/Go/Node.js SDK)                   │
└───────────────────────┬─────────────────────────────────────┘

┌───────────────────────▼─────────────────────────────────────┐
│                      Proxy 层                                │
│         (负载均衡、请求路由、结果聚合)                        │
└───────────────────────┬─────────────────────────────────────┘

┌───────────────────────▼─────────────────────────────────────┐
│                      协调服务层                               │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │ Root Coord  │  │ Data Coord  │  │ Query Coord         │  │
│  │ (元数据管理) │  │ (数据管理)   │  │ (查询协调)          │  │
│  └─────────────┘  └─────────────┘  └─────────────────────┘  │
│  ┌─────────────┐  ┌─────────────┐                           │
│  │ Index Coord │  │ Data Node   │                           │
│  │ (索引管理)   │  │ (数据节点)   │                           │
│  └─────────────┘  └─────────────┘                           │
└─────────────────────────────────────────────────────────────┘

┌───────────────────────▼─────────────────────────────────────┐
│                      存储层                                  │
│              (对象存储 / 分布式文件系统)                      │
└─────────────────────────────────────────────────────────────┘

核心概念

Collection(集合)

类似于关系型数据库中的表,用于存储向量数据及其元数据。

Entity(实体)

集合中的一条记录,包含向量字段和标量字段。

Field(字段)

实体的属性,可以是向量字段(如特征向量)或标量字段(如标签、描述)。

Partition(分区)

集合的逻辑分区,用于数据管理和查询优化。

Index(索引)

用于加速向量搜索的数据结构。

版本说明

Milvus 目前主要维护两个版本:

  • Milvus 2.x: 最新版本,采用云原生分布式架构
  • Milvus 1.x: 单机版本,已逐渐停止维护

本教程基于 Milvus 2.x 版本,使用 Python SDK 进行讲解。

学习路径

  1. 基础入门: 环境搭建、基本概念、Python SDK 连接
  2. 核心操作: 创建集合、插入数据、向量搜索
  3. 进阶功能: 索引管理、分区、数据过滤
  4. 高级应用: 性能优化、集群部署、实际案例

相关资源