AI创想

标题: 向量数据库系列2:开源向量数据库Milvus [打印本页]

作者: admin    时间: 2025-9-7 23:04
标题: 向量数据库系列2:开源向量数据库Milvus
1、Milvus向量数据库是什么?

Milvus 是一个开源的、高性能、高扩展性的向量数据库,专门用于处理和检索高维向量数据。它适用于相似性搜索(Approximate Nearest Neighbor Search,ANN),特别适合AI、推荐系统、计算机视觉、自然语言处理(NLP)等领域。
Zilliz 采用 Milvus 作为其开源高性能、高扩展性向量数据库的名称,该数据库可在从笔记本电脑到大规模分布式系统等各种环境中高效运行。它既是开源软件,也是云服务。
Milvus 由 Zilliz 开发,并很快捐赠给了 Linux 基金会下的 LF AI & Data 基金会,现已成为世界领先的开源向量数据库项目之一。它采用 Apache 2.0 许可发布,大多数贡献者都是高性能计算(HPC)领域的专家,擅长构建大规模系统和优化硬件感知代码。核心贡献者包括来自 Zilliz、ARM、英伟达、AMD、英特尔、Meta、IBM、Salesforce、阿里巴巴和微软的专业人士。
Quickstart | Milvus Documentation

2、非结构化数据、Embeddings 和 Milvus

非结构化数据(如文本、图像和音频)格式各异,蕴含丰富的潜在语义,因此分析起来极具挑战性。为了处理这种复杂性,Embeddings 被用来将非结构化数据转换成能够捕捉其基本特征的数字向量。然后将这些向量存储在向量数据库中,从而实现快速、可扩展的搜索和分析。
Milvus 提供强大的数据建模功能,使您能够将非结构化或多模式数据组织成结构化的 Collections。它支持多种数据类型,适用于不同的属性模型,包括常见的数字和字符类型、各种向量类型、数组、集合和 JSON,为您节省了维护多个数据库系统的精力。


非结构化数据、Embeddings 和 Milvus


3、Milvus架构

Milvus 主要由以下组件组成:




highly-decoupled-architecture

Milvus 的云原生和高度解耦的系统架构确保了系统可以随着数据的增长而不断扩展。Milvus 本身是完全无状态的,因此可以借助 Kubernetes 或公共云轻松扩展。此外,Milvus 的各个组件都有很好的解耦,其中最关键的三项任务--搜索、数据插入和索引/压实--被设计为易于并行化的流程,复杂的逻辑被分离出来。这确保了相应的查询节点、数据节点和索引节点可以独立地向上和向下扩展,从而优化了性能和成本效率。

4、Milvus的基本概念:collection、schema、Fields

Milvus 是一个专门用于向量相似度检索的数据库系统。在 Milvus 中,collection 、 schema和Fields 是三个核心概念,它们对于数据的组织和管理至关重要。
(1)Collection

Collection 在 Milvus 中可以理解为数据的集合或者表。每个 collection 都是由一系列具有相同结构(由 schema 定义)的数据记录组成。这些记录通常是高维向量,但也可以包含一些标量字段来辅助过滤或排序。
你可以把 collection 看作是存储相似类型数据的地方。例如,在图像搜索应用中,所有图像特征向量可能会被存储在一个 collection 中,而文本特征向量则可能被存储在另一个 collection 中。
(2)Schema

Schema 定义了一个 collection 的结构,包括向量字段和其他标量字段的信息。具体来说,schema 包含了字段名、字段类型以及是否为主键等信息。在 Milvus 中,每个 collection 必须有一个唯一的 schema。对于向量字段,schema 还会指定向量的维度,这是指向量有多少个元素。对于标量字段,可以根据需要定义不同的数据类型,比如整型、浮点型、字符串等。通过定义 schema,用户可以在创建 collection 时指定数据如何组织,这有助于确保数据的一致性和有效性。
在使用 Milvus 时,首先需要根据你的数据特点设计合适的 schema,然后基于这个 schema 创建 collection 来存储和管理数据。这样做不仅有助于保持数据的组织性,还能够提高查询效率,特别是在处理大规模向量数据时尤为重要。
(3)Fields

在 Milvus 数据库中,字段(Fields)是构成 collection 的基本单位。每个字段都有其特定的数据类型和作用,主要分为向量字段和标量字段两大类。
以下是关于 Milvus 数据库字段的一些关键概念:
字段类型

字段属性

定义 Fields

在创建 collection 之前,需要先定义 schema,而在 schema 中就需要明确指定各个字段的名字、类型以及是否为主键等信息。例如,在 Python 中使用 pymilvus 库时,可以通过以下方式定义一个包含向量字段和标量字段的 schema:
  1. from pymilvus import FieldSchema, CollectionSchema, DataType
  2. # 定义字段
  3. field1 = FieldSchema(name="id", dtype=DataType.INT64, is_primary=True)
  4. field2 = FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)  # 假设向量维度为128
  5. field3 = FieldSchema(name="age", dtype=DataType.INT32)
  6. # 创建集合schema
  7. schema = CollectionSchema(fields=[field1, field2, field3], description="My collection")
复制代码
在这个例子中,id 是主键字段,embedding 是向量字段,而 age 则是一个额外的标量字段。
通过合理设计和使用字段,可以使你在 Milvus 中更高效地管理和检索大规模向量数据。

5、Milvus部署模式

(1)Milvus 提供三种部署模式,涵盖各种数据规模


(2)根据你的项目数据集规模,选择适合你的部署方式
(3)Milvus Standalone 单机版部署方式的硬件配置要求



6、Milvus 支持的搜索类型

Milvus 支持各种类型的搜索功能,以满足不同用例的需求:

7、为什么 Milvus 这么快?

Milvus 运行比较快的原因有以下几个:

8、Win10在 Docker 中运行 Milvus

本地Win10电脑使用 Milvus Standalone 单机版部署方式。Milvus 提供了一个安装脚本,可将其安装为 Docker 容器。在 Microsoft Windows 上安装 Docker Desktop 后,就可以在管理员模式下通过 PowerShell 或 Windows Command Prompt 以及 WSL 2 访问 Docker CLI。
(1)安装 Docker Desktop

点击下载软件安装 https://www.docker.com/get-started/


安装之后,需要重启电脑,并且电脑会进行 Linux 子系统更新才能正常启动,此过程可能会比较慢。安装 Windows Subsystem for Linux 2 (WSL 2):通常不需要单独安装,安装 Docker Desktop 时会自动安装。
Docker镜像仓库配置:
  1. {
  2.   "builder": {
  3.     "gc": {
  4.       "defaultKeepStorage": "20GB",
  5.       "enabled": true
  6.     }
  7.   },
  8.   "experimental": false,
  9.   "registry-mirrors": [
  10.     "https://registry.docker-cn.com",
  11.     "https://docker.hpcloud.cloud",
  12.     "https://docker.m.daocloud.io",
  13.     "https://docker.unsee.tech",
  14.     "https://docker.1panel.live",
  15.     "http://mirrors.ustc.edu.cn",
  16.     "https://docker.chenby.cn",
  17.     "http://mirror.azure.cn",
  18.     "https://dockerpull.org",
  19.     "https://dockerhub.icu",
  20.     "https://hub.rat.dev",
  21.     "https://proxy.1panel.live",
  22.     "https://docker.1panel.top",
  23.     "https://docker.m.daocloud.io",
  24.     "https://docker.1ms.run",
  25.     "https://docker.ketches.cn"
  26.   ]
  27. }
复制代码
(2)正式安装

(3)安装 UI 客户端

Milvus 服务安装成功之后,可以按照一个 UI 客户端连接 Milvus 服务,使用官方提供的客户端 attu:https://github.com/zilliztech/attu
具体安装步骤如下:
1.访问下载安装包(attu-Setup-2.4.12.exe)地址:https://github.com/zilliztech/attu/releases/tag/v2.4.12
2.解压并安装 attu。
安装成功之后连接本地 Milvus 服务,如下图所示:




总结:Milvus 作为开源高性能向量数据库的代表,安装完成后就可以用它加上 Spring AI 或 LangChain4j 来实现 RAG 知识库功能。

参考链接:
在window11部署Milvus向量数据库_win11在docker desktop安装milvus-CSDN博客
Quickstart | Milvus Documentation
最火向量数据库Milvus安装使用一条龙!
开源向量数据库Milvus简介
milvus 三种部署方式说明




欢迎光临 AI创想 (http://llms-ai.com/) Powered by Discuz! X3.4