目录
一.Milvus向量数据库
1.Milvus介绍
Milvus 是一个高性能、高度可扩展的开源向量数据库,赋能 AI 应用和向量相似度搜索,加速非结构化数据检索,专为处理大规模相似性搜索和人工智能应用而设计。它能够高效地存储和管理高维向量数据(如图像、文本、音频和视频等),并提供快速的相似性查询能力。Milvus 通常与深度学习模型结合使用,用于实现推荐系统、图像检索、自然语言处理、异常检测等场景。
Milvus 提供强大的数据建模功能,使您能够将非结构化或多模态数据组织成结构化集合。它支持不同属性建模的各种数据类型,包括常见的数字和字符类型、各种向量类型、数组、集合和 JSON,从而使您无需维护多个数据库系统。
Milvus 支持广泛的内存和磁盘索引/搜索算法,包括 IVF、HNSW、DiskANN 等,所有这些算法都经过深度优化。与 FAISS 和 HNSWLib 等流行的实现相比,Milvus 的性能提高了 30%-70%。
Milvus 是一个面向列的向量数据库系统。主要优势来自数据访问模式。在执行查询时,列式数据库只读取查询中涉及的特定字段,而不是整行,这大大减少了访问的数据量。此外,可以轻松对基于列的数据进行作矢量化,从而允许同时对整个列进行作,从而进一步提高性能。
Milvus 的云原生和高度解耦的系统架构确保了系统可以随着数据的增长而不断扩展。
2.Milvus搜索类型
- ANN 搜索:查找最接近您的查询向量的前 K 个向量。
- 筛选搜索:在指定的筛选条件下执行 ANN 搜索。
- Range Search(范围搜索):从查询向量中查找指定半径内的向量。
- 混合搜索:基于多个向量字段进行 ANN 搜索。
- Full Text Search:基于 BM25 的全文搜索。
- Reranking:根据其他条件或辅助算法调整搜索结果的顺序,从而优化初始 ANN 搜索结果。
- Fetch:按主键检索数据。
- Query:使用特定表达式检索数据。
3.Milvus高级数据类型
二.单机部署Milvus服务
1.Docker部署Milvus
1.1拉取Milvus镜像
# 国内可访问镜像连接
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/milvusdb/milvus:v2.5.4
# 下载 Milvus 安装脚本,可以将其安装为 docker 容器,注意将脚本中的镜像名改为拉取的镜像名和版本号
https://github.com/milvus-io/milvus/blob/master/scripts/standalone_embed.sh
1.2启动Milvus服务
# 启动 Milvus 容器
bash standalone_embed.sh start
# 停止 Milvus 容器
bash standalone_embed.sh stop
# 删除 Milvus 容器及数据
bash standalone_embed.sh delete
# 更新 Milvus 服务
$ bash standalone_embed.sh upgrade
# 重启服务
bash standalone_embed.sh restart
- 名为 milvus 的 docker 容器已在端口 19530 启动。
- 嵌入的 etcd 与 Milvus 一起安装在同一个容器中,并在 2379 端口提供服务。它的配置文件映射到当前文件夹下的 embedEtcd.yaml。
- 要更改默认的 Milvus 配置,请将您的设置添加到当前文件夹的 user.yaml 文件中,然后重新启动服务。
- Milvus 数据卷映射到当前文件夹中的 volumes/milvus。
- 各端口功能:19530为对外暴漏的操作api,开发时通过这个端口号进行数据库的操作;2379是当 Milvus 启动时各个组件与 Etcd 通信的端口,一般我们不用,属于Milvus 内部组件间的通讯;9091为对外暴漏的监控指标,可以使用对应的运营页面对milvus的监控。
2.Docker Compose部署Milvus
2.1安装 Docker Compose
# 首先安装 Docker
sudo apt-get update
sudo apt-get install -y docker.io
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
2.2启动Milvus服务
# 在 Milvus 仓库中提供了 Docker Compose 配置文件,下载milvus-standalone-docker-compose.yml
wget https://github.com/milvus-io/milvus/releases/download/v2.5.5/milvus-standalone-docker-compose.yml -O docker-compose.yml
# 使用 Docker Compose 启动 Milvus
sudo docker compose up -d
Creating milvus-etcd ... done
Creating milvus-minio ... done
Creating milvus-standalone ... done
# 检查容器是否已启动并正在运行
docker-compose ps
# 停止 Milvus 容器
sudo docker compose down
# 删除 Milvus 容器
sudo rm -rf volumes
- 名为 milvus-standalone、milvus-minio 和 milvus-etcd 的容器已启动。
- milvus-etcd 容器不会向主机暴露任何端口,并将其数据映射到当前文件夹中的 volumes/etcd。
- milvus-minio 容器使用默认身份验证凭证在本地提供端口 9090 和 9091,并将其数据映射到当前文件夹中的 volumes/minio。
- milvus-standalone 容器使用默认设置在本地提供端口 19530,并将其数据映射到当前文件夹中的 volumes/milvus。
三.Milvus图像化管理及使用教程
1.Milvus Web UI
- Milvus Web UI 是 Milvus 的图形化管理工具。它以简单直观的界面增强了系统的可观察性。可以使用 Milvus Web UI 观察 Milvus 组件和依赖关系的统计和指标,检查数据库和 Collections 的详细信息,并列出详细的 Milvus 配置。
- Milvus Web UI 与 Birdwatcher 和 Attu 不同,它是一个内置工具,以简单直观的界面提供整体系统可观察性。
- 从 v2.5.0 起,你可以在运行中的 Milvus 实例上使用以下 URL 访问 Milvus Web UI:http://${MILVUS_PROXY_IP}:9091/webui
2.高效使用 Milvus 教程
教程 | 使用场景 | 相关 Milvus 功能 |
---|---|---|
使用 Milvus 构建 RAG | RAG | 向量搜索 |
使用 Milvus 构建多模态 RAG | RAG | 向量搜索, 动态字段 |
使用 Milvus 进行图像搜索 | 语义搜索 | 向量搜索, 动态字段 |
使用 Milvus 进行混合搜索 | 混合搜索 | 混合搜索, 多向量, 密集嵌入, 稀疏嵌入 |
使用多向量实现多模态搜索 | 语义搜索 | 多向量, 混合搜索 |
问答系统 | 问答系统 | 向量搜索 |
推荐系统 | 推荐系统 | 向量搜索 |
视频相似性搜索 | 语义搜索 | 向量搜索 |
音频相似性搜索 | 语义搜索 | 向量搜索 |
DNA 分类 | 分类 | 向量搜索 |
文本搜索引擎 | 语义搜索 | 向量搜索 |
通过文本搜索图像 | 语义搜索 | 向量搜索 |
图像去重 | 重复数据删除 | 向量搜索 |
使用 Milvus 构建图形 RAG | RAG | 图搜索 |
使用 Milvus 进行上下文检索 | 快速入门 | 向量搜索 |
使用 Milvus 进行 HDBSCAN 聚类 | 快速入门 | 向量搜索 |
使用 ColPali 实现多模态检索 | 快速入门 | 向量搜索 |
向量可视化 | 快速入门 | 向量搜索 |
基于 Milvus 的电影推荐 | 推荐系统 | 向量搜索 |
使用 Matryoshka 嵌入进行漏斗搜索 | 快速入门 | 向量搜索 |
GitHub:https://github.com/milvus-io/milvus
.md) | 快速入门 | 向量搜索 |GitHub:https://github.com/milvus-io/milvus