《实战指南:基于Linux环境部署与应用Milvus向量数据库》

目录

一.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镜像

bash 复制代码
# 国内可访问镜像连接
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服务

bash 复制代码
# 启动 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

bash 复制代码
# 首先安装 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服务

bash 复制代码
# 在 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-standalonemilvus-miniomilvus-etcd 的容器已启动。
    • milvus-etcd 容器不会向主机暴露任何端口,并将其数据映射到当前文件夹中的 volumes/etcd
    • milvus-minio 容器使用默认身份验证凭证在本地提供端口 90909091 ,并将其数据映射到当前文件夹中的 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 嵌入进行漏斗搜索 快速入门 向量搜索
相关推荐
nbsaas-boot27 分钟前
SQL Server 窗口函数全指南(函数用法与场景)
开发语言·数据库·python·sql·sql server
Y.ppm27 分钟前
数分思维12:SQL技巧与分析方法
数据库·sql
森叶30 分钟前
Claude Code 安装向量数据库MCP服务
数据库
bestsun99930 分钟前
Time drifts can result in unexpected behavior such as time-outs.
数据库·oracle
一只小bit2 小时前
Linux网络:阿里云轻量级应用服务器配置防火墙模板开放端口
linux·网络·阿里云
waveee1232 小时前
学习嵌入式的第三十四天-数据结构-(2025.7.29)数据库
数据结构·数据库·学习
何传令2 小时前
SQL优化系统解析
数据库·sql·mysql
找不到、了2 小时前
Redis内存使用耗尽情况分析
数据库·redis·缓存
DarkAthena2 小时前
【GaussDB】内存资源告急:深度诊断一起“memory temporarily unavailable“故障
数据库·gaussdb
小云数据库服务专线2 小时前
GaussDB as的用法
数据库·sql·gaussdb