最火向量数据库Milvus安装使用一条龙!

向量数据库是大模型应用开发必备组件之一,因为它在知识库、语义搜索、检索增强生成(RAG)等人工智能应用中发挥着举足轻重的作用。但向量数据有很多,为什么要使用 Milvus 呢?

常见向量数据

常见的向量数据库有以下这些:

  • Chroma

  • Elasticsearch

  • Milvus

  • Neo4j

  • OpenSearch

  • Redis

  • PGVector

然而目前市面上使用最多的向量数据库还是 Milvus,为什么呢?

这点从企业的招聘要求中也能发现:

图片

为什么是 Milvus?

Milvus 设计之初就是为 AI  而生的一个高效的向量数据库系统,在大多数情况下,Milvus 的性能是其他向量数据库的 2-5 倍,它能实现万亿级向量的毫秒级相似性搜索,而且 Milvus 还是开源的向量数据库

PS:也就说 Milvus 既开源(可以免费使用+支持二次开发)又具备高性能,这样的数据库谁不爱呢?

为什么 Milvus 这么快?

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

  • 硬件感知优化:为了让 Milvus 适应各种硬件环境,我们专门针对多种硬件架构和平台优化了其性能,包括 AVX512、SIMD、GPU 和 NVMe SSD。

  • 高级搜索算法:Milvus 支持多种内存和磁盘索引/搜索算法,包括 IVF、HNSW、DiskANN 等,所有这些算法都经过了深度优化。与 FAISS 和 HNSWLib 等流行实现相比,Milvus 的性能提高了 30%-70%。

  • C++ 搜索引擎:向量数据库性能的 80% 以上取决于其搜索引擎。由于 C++ 语言的高性能、底层优化和高效资源管理,Milvus 将 C++ 用于这一关键组件。最重要的是,Milvus 集成了大量硬件感知代码优化,从汇编级向量到多线程并行化和调度,以充分利用硬件能力。

  • 面向列:Milvus 是面向列的向量数据库系统。其主要优势来自数据访问模式。在执行查询时,面向列的数据库只读取查询中涉及的特定字段,而不是整行,这大大减少了访问的数据量。此外,对基于列的数据的操作可以很容易地进行向量化,从而可以一次性在整个列中应用操作,进一步提高性能。

Milvus 支持的搜索类型

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

  • ANN 搜索:查找最接近查询向量的前 K 个向量。

  • 过滤搜索:在指定的过滤条件下执行 ANN 搜索。

  • 范围搜索:查找查询向量指定半径范围内的向量。

  • 混合搜索:基于多个向量场进行 ANN 搜索。

  • 全文搜索:基于 BM25 的全文搜索。

  • Rerankers:根据附加标准或辅助算法调整搜索结果顺序,完善初始 ANN 搜索结果。

  • 根据主键检索数据

  • 查询使用特定表达式检索数据

Milvus 安装

Milvus 有三种部署方式:

  • Milvus Lite:Milvus Lite 是一个 Python 库,可导入到您的应用程序中。作为 Milvus 的轻量级版本,它非常适合在 Jupyter 笔记本或资源有限的智能设备上运行快速原型。Milvus Lite 支持与 Milvus 其他部署相同的 API。与 Milvus Lite 交互的客户端代码也能与其他部署模式下的 Milvus 实例协同工作。

  • Milvus Standalone:Milvus Standalone 是单机服务器部署。Milvus Standalone 的所有组件都打包到一个 Docker 镜像中,部署起来非常方便。

  • Milvus Distributed:Milvus Distributed 可部署在 Kubernetes 集群上。这种部署采用云原生架构,摄取负载和搜索查询分别由独立节点处理,允许关键组件冗余。它具有最高的可扩展性和可用性,并能灵活定制每个组件中分配的资源。Milvus Distributed 是在生产中运行大规模向量搜索系统的企业用户的首选。

PS:当然中小型公司生产环境也可以直接购买 XXX 云的 Milvus 实例直接使用。

我们这里使用 Milvus Standalone 单机版部署方式。

硬件要求

图片

前提条件

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

    图片

    安装之后,需要重启电脑,并且电脑会进行 Linux 子系统更新才能正常启动,此过程可能会比较慢。

  • 安装 Windows Subsystem for Linux 2 (WSL 2):通常不需要单独安装,安装 Docker Desktop 时会自动安装。

正式安装

1.打开 PowerShell。

2.下载安装脚本,命令如下:

Invoke-WebRequest https://raw.githubusercontent.com/milvus-io/milvus/refs/heads/master/scripts/standalone_embed.bat -OutFile standalone.bat

3.运行下载的脚本

standalone.bat start

最终执行效果如下:

图片

运行安装脚本后,包含以下内容:

  • 名为 Milvus-standalone 的 docker 容器已在19530 端口启动。

  • 嵌入式 etcd 与 Milvus 安装在同一个容器中,服务端口为 2379。其配置文件被映射到当前文件夹中的 embedEtcd.yaml。

  • Milvus 数据卷映射到当前文件夹中的 volumes/milvus。

在 Docker Desktop 也可以看到安装的 Milvus 相关组件:

图片

参考官方文档:https://milvus.io/docs/zh/install_standalone-windows.md

安装 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 作为开源高性能向量数据库的代表,它的安装也不难,如果顺利的情况下,可能 5 分钟左右就搞定了。安装完成之后就用它加上 Spring AI 或 LangChain4j 来实现一下 RAG 功能吧。

### 不同操作系统上的 Milvus 向量数据库安装方法 #### MacOS 上的 Milvus 安装 在 MacOS 系统中,可以通过 Docker 来完成 Milvus安装。首先需要确保本地已经正确安装并配置好 Docker 环境[^1]。接着通过运行以下命令拉取官方镜像并启动容器: ```bash docker pull milvusdb/milvus:latest docker run -d --name milvus_cpu -p 19530:19530 -p 8080:8080 \ -v /path/to/data:/var/lib/milvus \ milvusdb/milvus:latest ``` 上述命令会下载新版本的 Milvus 镜像,并将其绑定到主机端口 `19530` 和 `8080`,分别用于服务通信和管理界面访问。 --- #### Windows 下的 Milvus 安装 对于 Windows 用户而言,同样推荐使用 Docker 进行 Milvus 的部署。前提条件同样是确认已成功安装 Docker Desktop 并启用 WSL2 支持功能[^2]。执行如下指令即可快速搭建环境: ```bash docker pull milvusdb/milvus:latest docker run -d --name milvus_cpu -p 19530:19530 -p 8080:8080 \ -v C:\path\to\data:/var/lib/milvus \ milvusdb/milvus:latest ``` 这里需要注意的是,在指定数据存储路径时应采用兼容于 Linux 文件系统的写法(如 `/c/path/to/data`),或者直接利用绝对路径映射至宿主机目录。 --- #### 使用 MySQL 类似方式操作 Milvus 数据库 无论是哪种平台,一旦完成了基础架构构建之后,就可以借助 Python SDK 或其他支持的语言驱动程序连接实例,进而实现诸如创建集合、插入记录等功能。例如下面展示了一段简单的 Python 脚本用来初始化客户端对象并与远程服务器交互: ```python from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection connections.connect("default", host="localhost", port="19530") fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128) ] schema = CollectionSchema(fields, "Example collection") collection = Collection("example_collection", schema) print(f"Collection created successfully! {collection}") ``` 此脚本定义了一个新的表结构,其中包含整数类型的主键字段以及维度大小固定的浮点型数组列作为嵌入特征表示形式。 --- #### 向量数据库的应用价值 向量数据库特别适用于人工智能领域中的相似度检索任务,比如图像识别、自然语言处理等领域内的近邻查询需求。相比于传统关系型数据库仅能基于精确匹配返回结果集的方式,Milvus 提供了高效的 ANN (Approximate Nearest Neighbor) 查询能力,从而极大地提升了大规模高维空间数据分析效率.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值