1. 引言
在 RAG(检索增强生成)项目中,向量知识库是核心基础设施之一。它负责将文档切分后的文本块转换为向量并存储,供后续检索使用。本篇文章将记录 Milvus 向量数据库的部署过程,包括 Docker Compose 编排、服务启动以及通过 Attu 可视化工具验证连接。
2. 环境准备
在开始部署之前,请确保你的机器上已经安装好以下软件:
- Docker 20.10 及以上版本
- Docker Compose 1.29 及以上版本
- 至少 8GB 可用内存(Milvus 运行需要)
3. Docker Compose 编排文件
Milvus 2.5 版本采用分布式架构,核心依赖三个组件:
- etcd:元数据存储,负责记录 Milvus 内部的元数据信息
- MinIO:对象存储,用于存放向量数据文件和日志
- Milvus standalone:Milvus 主服务,提供向量检索能力
下面是我们使用的 docker-compose.yml 文件:
yaml
version: '3.5'
services:
etcd:
container_name: milvus-etcd
image: quay.io/coreos/etcd:v3.5.5
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- ./volumes/etcd:/etcd
command: etcd -name="etcd-0" -data-dir="/etcd" -listen-client-urls="http://0.0.0.0:2379" -advertise-client-urls="http://0.0.0.0:2379" -listen-peer-urls="http://0.0.0.0:2380"
ports:
- "2379:2379"
networks:
- milvus
minio:
container_name: milvus-minio
image: minio/minio:latest
environment:
MINIO_ACCESS_KEY: minioadmin
MINIO_SECRET_KEY: minioadmin
volumes:
- ./volumes/minio:/minio_data
command: minio server /minio_data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
networks:
- milvus
standalone:
container_name: milvus-standalone
image: milvusdb/milvus:v2.5.6
command: ["milvus", "run", "standalone"]
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
OPENBLAS_NUM_THREADS: "1"
OMP_NUM_THREADS: "1"
volumes:
- ./volumes/milvus:/var/lib/milvus
ports:
- "19530:19530"
- "9091:9091"
depends_on:
- etcd
- minio
cap_add:
- CAP_SYS_RESOURCE
ulimits:
nproc:
soft: -1
hard: -1
nofile:
soft: 65535
hard: 65535
privileged: true
networks:
- milvus
networks:
milvus:
driver: bridge
3.1 配置要点说明
- etcd :设置了自动压缩模式为
revision,保留最近 1000 个版本;后端配额设为 4GB,避免元数据膨胀。 - MinIO :使用默认账号密码
minioadmin/minioadmin,控制台端口映射到9001。 - Milvus standalone :通过
ETCD_ENDPOINTS和MINIO_ADDRESS指定依赖服务的内部地址;privileged: true和ulimits配置是为了满足 Milvus 运行时的资源限制要求。
4. 启动服务
将上述内容保存为 docker-compose.yml,然后在同目录下执行:
bash
docker compose up -d
等待镜像拉取和容器启动完成后,查看容器状态:
bash
docker compose ps
正常情况下,三个容器都处于 Up 状态。Milvus 服务默认监听 19530 端口,这是客户端 SDK 连接时使用的端口。
5. Attu 连接测试
Attu 是 Milvus 官方提供的可视化数据库管理工具,可以方便地查看集合、索引和数据。下面验证 Attu 是否能成功连接 Milvus。
windows版本直接安装查看:


5.1 Linux启动 Attu
使用 Docker 启动 Attu:
bash
docker run -p 8000:3000 -e MILVUS_URL=host.docker.internal:19530 zilliz/attu:latest
注意:
host.docker.internal用于从容器内部访问宿主机上的 Milvus 服务。如果你在 Linux 上使用,可能需要加上--add-host=host.docker.internal:host-gateway参数。
5.2 连接验证
启动成功后,浏览器访问 http://localhost:8000,在连接界面填写:
- 地址 :
host.docker.internal:19530(或直接填写宿主机 IP,如192.168.x.x:19530) - 用户名/密码:默认留空即可(Milvus 未开启认证时)
点击「连接」按钮,如果看到左侧出现数据库、集合等导航菜单,说明连接成功。
5.3 常见问题排查
如果连接失败,按以下顺序排查:
- 确认 Milvus 容器状态 :
docker compose ps检查 standalone 是否正常启动。 - 确认端口可达 :在宿主机执行
telnet 127.0.0.1 19530,看端口是否开放。 - 确认网络模式 :Attu 容器内访问宿主机,Windows/Mac 用
host.docker.internal,Linux 需要额外配置host-gateway。 - 查看 Milvus 日志 :
docker logs milvus-standalone,检查是否有报错信息。
6. 总结
本文记录了 Milvus 向量知识库的 Docker Compose 部署过程,并验证了 Attu 可视化工具的连接。部署完成后,就可以在 RAG 项目中通过 Python SDK(pymilvus)连接 localhost:19530 进行向量数据的写入与检索了。下一步我们将记录如何创建集合、构建索引以及实现文档向量的入库流程。