AI智能体项目实战记录(05):RAG项目实战之向量知识库milvus部署

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 常见问题排查

如果连接失败,按以下顺序排查:

  1. 确认 Milvus 容器状态 :docker compose ps 检查 standalone 是否正常启动。
  2. 确认端口可达 :在宿主机执行 telnet 127.0.0.1 19530,看端口是否开放。
  3. 确认网络模式 :Attu 容器内访问宿主机,Windows/Mac 用 host.docker.internal,Linux 需要额外配置 host-gateway。
  4. 查看 Milvus 日志 :docker logs milvus-standalone,检查是否有报错信息。

6. 总结

本文记录了 Milvus 向量知识库的 Docker Compose 部署过程,并验证了 Attu 可视化工具的连接。部署完成后,就可以在 RAG 项目中通过 Python SDK(pymilvus)连接 localhost:19530 进行向量数据的写入与检索了。下一步我们将记录如何创建集合、构建索引以及实现文档向量的入库流程。

相关推荐
haluhalu.1 小时前
深入理解 AI Agent(1.2):Harness 工程——模型之外的竞争力
前端·数据结构·人工智能·python·langchain·个人开发
BD_Marathon1 小时前
Milvus数据库的DQL操作
milvus
fpcc1 小时前
AI和大模型—矩阵相似
人工智能·线性代数·矩阵
data analyse 4561 小时前
服务端统计时区切换的日期归并
大数据·前端·数据库·人工智能·数据分析
DongQiShanRen1 小时前
六根硬件映射(下):物理闭环五步法,抽一条已实装的看
大数据·jvm·人工智能·算法·rust·哈希算法·集成学习
鸿翼Macrowing1 小时前
鸿翼入选 2026 年上海市 “AI + 制造” 服务商能力图谱
人工智能·制造·opencontent ai·ai+制造
墨子夕1 小时前
创新的潮汐——从科学发现到资本周期的百年规律(第三卷)
人工智能·其他·周期
尘一不染1 小时前
多模型 API 接入实战(一):从一次 HTTP 请求到可维护的适配层
网络·人工智能·网络协议·http
piaopiaolanghua1 小时前
【Ai】提示词不累积,对话才累积:LLM 中系统、用户、助手与工具的本质差异
llm·上下文