玩转 Milvus(二):在 Ubuntu 22.04(WSL2)上安装 Milvus
引言:让 Milvus 在你的笔记本上“起飞”
在《玩转 Milvus(一)》中,我们揭开了向量数据库的神秘面纱,认识了 Milvus 作为 AI 时代的“超级引擎”,如何驱动智能搜索、推荐系统和多模态应用。现在,是时候让 Milvus 在你的电脑上“落地生根”了!本篇博客将带你在 Ubuntu 22.04(WSL2) 环境下安装 Milvus,聚焦两种单机模式:Milvus Lite 和 Milvus Standalone。无论你是初学者想快速上手,还是进阶开发者准备小规模生产,这篇教程都能帮你轻松搞定。
Milvus 支持三种部署模式:Milvus Lite(轻量级 Python 库)、Milvus Standalone(单机部署)和 Milvus Distributed(分布式集群)。考虑到我们专栏的目标(单机环境,2025年7月14日会话)和 Ubuntu 22.04/WSL2 的开发环境,本篇只讲 Milvus Lite 和 Milvus Standalone(通过 Docker 和 Docker Compose 两种方式)。分布式部署后续有机会再探讨。
通过详细步骤、验证案例和常见问题解答,你将学会在几分钟内跑通 Milvus,甚至实现一个简单的语义搜索。准备好你的 Ubuntu 终端,让我们开始这场“安装冒险”!
环境准备:为 Milvus 铺好跑道
在安装 Milvus 之前,需要确保你的 Ubuntu 22.04(WSL2)环境已准备就绪。以下是详细要求和配置步骤。
系统环境
- 操作系统:Ubuntu 22.04,运行在 WSL2 上(Windows 10/11)。
- 硬件要求:
- CPU:支持 AVX512 或 SIMD 指令(参考2025年5月6日会话),普通笔记本即可。
- 内存:建议 8GB+(Milvus Lite)或 16GB+(Standalone)。
- 磁盘:至少 10GB 可用空间(MinIO 存储向量和元数据)。
- WSL2 注意事项:
- 确保 WSL2 已正确安装:运行
wsl --version
,应显示 WSL 2。 - 推荐使用 Docker Desktop 与 WSL2 集成,简化 Docker 管理。
- 在 Windows 的 Docker Desktop 设置中,启用 WSL2 后端(Settings > Resources > WSL Integration),选择 Ubuntu 22.04 分发。
- 确保 WSL2 已正确安装:运行
必要软件
Docker(用于 Milvus Standalone):
安装命令:
sudo apt update sudo apt install -y docker.io sudo systemctl start docker sudo systemctl enable docker
验证:
docker --version
(应显示 Docker 20.x 或更高)。WSL2 特殊配置:确保 Docker Desktop 运行,WSL2 可通过
sudo service docker start
启动 Docker(若未用 Docker Desktop)。
Docker Compose(用于 Standalone 的 Docker Compose 方式):
安装命令:
sudo apt install -y docker-compose
验证:
docker-compose --version
(应显示 Docker Compose 1.29.x 或更高)。
Python 3.7+(用于 Milvus Lite 和验证):
安装命令:
sudo apt install -y python3 python3-pip
验证:
python3 --version
(应显示 3.7 或更高)。
为什么选择 WSL2 而非 Docker Desktop 直接安装?
- WSL2 优势:轻量、灵活,Ubuntu 环境更接近生产服务器,适合开发者调试。Docker Desktop 虽方便,但在 Windows 上直接运行可能遇到权限或网络问题(如 localhost 访问失败)。
- 注意:本篇使用 WSL2 的 Ubuntu 22.04 运行 Docker,避免 Windows 环境的复杂配置。若你更喜欢 Windows 原生 Docker Desktop,可参考 Milvus 文档。
Milvus 安装方式综述:选择你的“起飞方式”
Milvus 提供三种部署模式,适合不同场景:
- Milvus Lite:像笔记本上的“迷你数据库”,通过 Python 库运行,无需额外服务器,适合快速学习和原型开发。
- Milvus Standalone:单机“全能选手”,支持中等规模数据,适合开发、测试或小规模生产。
- Milvus Distributed:分布式“超级舰队”,适合亿级向量和企业级场景。
对于 Milvus Standalone,我们将介绍两种安装方式:
- Docker(Linux):通过单个容器快速启动,简单直接。
- Docker Compose(Linux):通过配置文件管理 Milvus 及其依赖(etcd、MinIO),适合自定义配置。
本篇聚焦 Milvus Lite 和 Milvus Standalone(Docker 和 Docker Compose),基于 Ubuntu 22.04(WSL2)。
安装方式对比:
特性 | Milvus Lite | Standalone (Docker) | Standalone (Docker Compose) |
---|---|---|---|
安装难度 | 超简单(pip 安装) | 简单(脚本启动) | 中等(配置 YAML 文件) |
资源占用 | 低(4GB 内存) | 中等(8GB+ 内存) | 较高(8GB+ 内存) |
自定义能力 | 低(默认配置) | 中等(有限调整) | 高(支持端口、存储配置) |
数据规模 | 小规模(<1000万向量) | 中规模(<1亿向量) | 中规模(<1亿向量) |
说明:
- Milvus Lite:适合初学者,几分钟跑通,笔记本就能用,完美用于学习或小项目。
- Standalone Docker:快速部署,适合开发测试,想省心就选它。
- Standalone Docker Compose:支持灵活配置,适合需要调整端口或存储的生产环境。
建议:新手从 Milvus Lite 开始,熟悉后尝试 Docker 方式,进阶者用 Docker Compose 定制部署。
安装方式一:Milvus Lite —— 几分钟跑通“迷你数据库”
概述
Milvus Lite 是一个轻量级 Python 库,集成了 Milvus 核心功能,无需部署独立服务器(参考 Milvus Lite 文档)。它像一个“便携式数据库”,直接嵌入 Python 项目,适合初学者和小规模实验。
适用场景
- 学习 Milvus 的基本操作(如集合创建、向量搜索)。
- 小规模数据处理(<1000万向量)。
- 无 Docker 环境的快速原型开发。
安装步骤
检查 Python 环境:
python3 --version
确保版本为 3.7 或更高。
安装 Milvus Lite:
pip3 install -U pymilvus
安装最新版
pymilvus
(推荐 2.5.8,与 Milvus 2.5.11 兼容)。验证安装:
启动 Python 解释器,运行:
from pymilvus import MilvusClient client = MilvusClient("./milvus_demo.db") print("Milvus Lite connected successfully!")
成功后,当前目录生成
milvus_demo.db
文件,表示本地数据库已创建.
简单语义搜索验证:
为确认 Milvus Lite 可用,试试一个小型语义搜索:from pymilvus import MilvusClient, CollectionSchema, FieldSchema, DataType client = MilvusClient("./milvus_demo.db") # 创建集合 schema = CollectionSchema(fields=[ FieldSchema("id", DataType.INT64, is_primary=True, auto_id=True), FieldSchema("vector", DataType.FLOAT_VECTOR, dim=4) ]) client.create_collection("test_collection", schema) # 插入数据 vectors = [[0.1, 0.2, 0.3, 0.4], [0.2, 0.3, 0.4, 0.5]] client.insert("test_collection", {"vector": vectors}) # 插入数据 client.insert("test_collection", [ {"vector": [0.1, 0.2, 0.3, 0.4]}, {"vector": [0.2, 0.3, 0.4, 0.5]} ]) index_params = MilvusClient.prepare_index_params() index_params.add_index( field_name="vector", index_type="IVF_FLAT", index_name="ivf_flat_index", params={"nlist": 128} ) # 创建索引 client.create_index( collection_name="test_collection", index_params=index_params ) # 搜索 results = client.search("test_collection", data=[[0.1, 0.2, 0.3, 0.4]], limit=1) print(f"Top result: ID {results[0][0]['id']}, Distance {results[0][0]['distance']}")
说明:此代码创建 4 维向量集合,插入两条数据,搜索最相似向量。输出示例:
Top result: ID 1, Distance 0.0
.
优点与局限性
- 优点:安装简单(一行 pip 命令),资源占用低,适合笔记本(4GB 内存即可)。
- 局限性:不支持分布式部署,数据规模限于百万级,功能较 Standalone 少。
安装方式二:Milvus Standalone —— Docker(Linux)
概述
Milvus Standalone 通过单个 Docker 容器运行,快速部署单机环境(参考 Standalone Docker 文档)。它像一台“全能服务器”,整合 Milvus 和依赖(etcd、MinIO),适合中等规模数据。
适用场景
- 快速搭建开发或测试环境。
- 处理百万级向量(如电商图像搜索)。
- 对配置要求较低的场景。
安装步骤
检查 Docker:
docker --version sudo service docker start
确保 Docker 运行(WSL2 中需 Docker Desktop 支持)。
创建工作目录:
mkdir -p /home/milvus cd /home/milvus
下载安装脚本:
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/v2.5.11/scripts/standalone_embed.sh -o standalone_embed.sh chmod +x standalone_embed.sh
启动 Milvus:
bash standalone_embed.sh start
- 启动后,
milvus-standalone
容器在 19530 端口运行,嵌入 etcd(2379 端口)。 - 数据存储在
/home/milvus/volumes/milvus
,配置文件为embedEtcd.yaml
.
- 启动后,
验证安装:
检查容器状态:
docker ps
应看到
milvus-standalone
运行。访问 WebUI:打开浏览器,输入
http://127.0.0.1:9091/webui/
,检查界面是否加载。测试 Python 连接:
pip3 install pymilvus==2.5.8
from pymilvus import connections, utility connections.connect(host="localhost", port="19530") print(f"Milvus version: {utility.get_server_version()}")
输出示例:
Milvus version: v2.5.11
.
停止和删除:
bash standalone_embed.sh stop bash standalone_embed.sh delete
优点与局限性
- 优点:部署快速(几分钟),支持数据持久化,适合开发测试。
- 局限性:配置灵活性有限,不支持分布式扩展。
安装方式三:Milvus Standalone —— Docker Compose(Linux)
概述
Docker Compose 通过配置文件管理 Milvus Standalone 及其依赖(etcd、MinIO),适合需要自定义配置的场景(参考 Docker Compose 文档)。它像一个“可定制的工作站”,提供更高灵活性。
适用场景
- 稳定的开发或小规模生产环境。
- 自定义存储路径、端口或日志配置。
- 处理千万到亿级向量。
安装步骤
检查 Docker Compose:
docker-compose --version
下载配置文件:
mkdir -p /home/milvus cd /home/milvus wget https://github.com/milvus-io/milvus/releases/download/v2.5.11/milvus-standalone-docker-compose.yml -O docker-compose.yml
注意:使用 Milvus 2.5.11 的配置文件,避免 2.5.10 的重启问题(参考初稿)。
启动服务:
docker-compose up -d
输出示例:
Creating milvus-etcd ... done Creating milvus-minio ... done Creating milvus-standalone ... done
验证安装:
检查服务状态:
docker-compose ps
确认
milvus-standalone
、milvus-etcd
、milvus-minio
均运行。访问 WebUI:
http://127.0.0.1:9091/webui/
.测试 Python 连接(同 Docker 方式):
from pymilvus import connections, utility connections.connect(host="localhost", port="19530") print(f"Milvus version: {utility.get_server_version()}")
停止和删除:
docker-compose down
优点与局限性
- 优点:支持自定义配置(如端口、存储路径),适合生产环境,扩展性强。
- 局限性:配置稍复杂,资源占用高于 Milvus Lite。
常见问题解答
1. Python SDK 连接失败?
- 原因:Milvus 服务未启动,或 host/port 配置错误。
- 解决:
- 确认服务状态:
docker ps
或docker-compose ps
. - 检查端口:默认
localhost:19530
. - 确保 SDK 版本匹配:Milvus 2.5.11 需
pymilvus==2.5.8
(参考 Milvus版本说明)。
- 确认服务状态:
2. Docker 容器启动失败?
- 原因:端口冲突(19530、2379、9091)或磁盘空间不足。
- 解决:
- 检查端口:
sudo netstat -tuln | grep 19530
. - 释放空间:
df -h
确认/home/milvus
有 10GB+ 空间。 - 查看日志:
docker logs -f milvus-standalone
.
- 检查端口:
3. Milvus Lite 性能瓶颈?
- 原因:内存不足或向量规模过大(>1000万)。
- 解决:
- 增加内存:建议 8GB+。
- 切换 Standalone:支持更大规模数据。
- 优化索引:使用 IVF_FLAT 替代 HNSW(后续文章详解)。
4. WSL2 与 Docker Desktop 网络问题?
- 原因:WSL2 网络隔离导致 localhost 不可用。
- 解决:
- 使用 Docker Desktop 的 WSL2 后端。
- 替换
localhost
为host.docker.internal
(Python SDK 中)。
性能优化提示
- Milvus Lite:适合 <1000万向量,内存 4GB 即可。HNSW 索引速度快但内存占用高,建议小数据集使用。
- Standalone Docker:支持 <1亿向量,建议 16GB 内存,MinIO 数据存储路径(
/home/milvus/volumes
)需 SSD。 - Docker Compose:自定义
docker-compose.yml
(如调整 MinIO 端口:9000),优化网络性能。 - 硬件:确保 CPU 支持 AVX512 或 SIMD,提升搜索效率。
- WSL2:分配足够资源,避免性能瓶颈。
结语:Milvus 之旅已启动
在 Ubuntu 22.04(WSL2)上成功安装 Milvus!本篇详细介绍了两种单机部署方式:
- Milvus Lite:像“迷你数据库”,一行命令搞定,适合快速学习。
- Milvus Standalone:
- Docker:快速启动,适合开发测试。
- Docker Compose:灵活配置,适合小规模生产。
通过验证代码和 WebUI,可以确认 Milvus 的可用性,甚至跑通了语义搜索。现在,已经为后续实战打下基础!运行上面的语义搜索代码,或在评论区分享你的安装体验!有什么问题?欢迎留言,我们一起解决!