🎯 课程主题
在 Docker 环境中安装 Milvus 向量数据库,掌握启动/停止命令,理解 Milvus 的四层数据模型(Database → Collection → Partition → Entity),并完成 pymilvus SDK 测试前的准备工作。
📝 核心知识点
1. Milvus 安装流程
环境要求:Docker Desktop 已安装并处于运行状态(左下角绿色 Running)。
安装目录:建议在非系统盘(如 D 盘)创建专用目录存放 Milvus 文件。
安装步骤:
- 以管理员身份打开 PowerShell
- 切换到目标目录(如
D:\milvus) - 下载官方 docker-compose YAML 文件(
milvus-standalone-docker-compose.yml) - 执行
docker compose up -d启动(首次会自动拉取镜像,耗时取决于网速) - 等待看到
started successfully提示
启停命令:
docker compose up -d # 启动(-d 表示后台运行) docker compose stop # 停止 docker compose down # 停止并移除容器验证:启动后在 Docker Desktop 中可看到
milvus-standalone容器处于 Running 状态。
2. pymilvus SDK 安装确认
pip show pymilvus
如果已在 requirements.txt 中安装过,可跳过此步骤。
3. Milvus 数据模型(四层结构)
| 层级 | 概念 | 对应关系型数据库 | 说明 |
|---|---|---|---|
| Database | 数据库 | Database | 隔离不同业务数据,默认有一个 default 数据库 |
| Collection | 集合 | Table(表) | 核心逻辑容器,存储向量和元数据,包含 Schema 定义 |
| Partition | 分区 | —(Milvus 特有) | Collection 的子集,可选;不手动创建时至少有默认分区 |
| Entity | 实体 | Row(行) | 具体的一条记录,包含向量字段 + 标量字段 |
4. 关系型数据库 vs Milvus 对比
关系型数据库: Milvus 向量数据库:
┌─────────────┐ ┌─────────────┐
│ Database │ │ Database │
│ └─ user │ │ └─ rag_demo │
│ └─ product │ │ └─ docs_collection ← 存向量+文本
│ └─ id │ │ └─ _default ← 默认分区
│ └─ name │ │ └─ entity: ← 一条记录
│ └─ ... │ │ ├─ vector (1024维)
│ │ │ └─ text ("长江是...")
└─────────────┘ └─────────────┘
5. Collection 为何要同时存储向量和文本?
- 向量用于相似度检索(找到最近邻)。
- 文本用于展示结果(检索到相似向量后,需要把原始文本返回给用户/LLM)。
- 只存向量不存文本 = 检索到了但不知道内容是什么,毫无意义。
🏗️ 架构与工作流
Milvus 单机部署架构 (Standalone):
┌──────────────────────────────────────────────┐
│ Docker Container │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ Milvus Standalone │ │
│ │ │ │
│ │ ┌─────────┐ ┌──────────┐ ┌────────┐ │ │
│ │ │ Root │ │ Query │ │ Data │ │ │
│ │ │ Coord │ │ Coord │ │ Coord │ │ │
│ │ └─────────┘ └──────────┘ └────────┘ │ │
│ │ │ │ │ │ │
│ │ ┌────▼─────────────▼────────────▼────┐ │ │
│ │ │ etcd + MinIO (内嵌存储) │ │ │
│ │ └────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────┘ │
│ │ │
│ Port 19530 (gRPC) │
│ Port 9091 (HTTP) │
└──────────────────────┼───────────────────────┘
│
pymilvus Client
💻 代码实战
Milvus 安装完整步骤
# 1. 以管理员身份打开 PowerShell
# 2. 创建并切换到目标目录
D:
mkdir D:\milvus
cd D:\milvus
# 3. 下载 docker-compose 配置文件
# (课程提供或从 GitHub 下载 standalone 版本)
Invoke-WebRequest -Uri "https://github.com/milvus-io/milvus/releases/download/v2.4.0/milvus-standalone-docker-compose.yml" -OutFile "docker-compose.yml"
# 4. 启动 Milvus(首次需拉取镜像,约几分钟)
docker compose up -d
# 输出示例:
# [+] Running 3/3
# ✔ Container milvus-etcd Started
# ✔ Container milvus-minio Started
# ✔ Container milvus-standalone Started
# milvus start successfully
# 5. 验证运行状态
docker compose ps
# 所有服务 STATUS 应为 Up
# 6. 停止 Milvus(不用时)
docker compose stop
# 7. 再次启动
docker compose up -d
pymilvus 安装检查
pip show pymilvus
# Name: pymilvus
# Version: 2.4.x
# ...
⚠️ 常见问题与避坑指南
- 管理员权限:PowerShell 需以管理员身份运行,否则
docker compose可能报权限错误。 - 目录名避免中文和空格:Milvus 安装目录路径中不要包含中文或空格,避免兼容性问题。
- 首次启动下载较慢:国内需配合 Docker 代理或镜像加速(参考第 113 节配置),否则可能超时。
- 端口冲突:确保
19530(gRPC)和9091(HTTP)端口未被占用。若冲突可修改docker-compose.yml端口映射。 - Collection ≠ Table:概念上接近但不等同,Collection 包含 Schema 定义(特别是向量维度和相似度度量方式)。
- 分区是可选的:不手动创建 Partition 也完全可用,每个 Collection 默认有
_default分区。
💡 个人总结与延伸
- Milvus 的四层模型比传统关系型数据库多了一层 Partition,这为大规模场景下的数据管理和查询优化提供了更大的灵活性。
- Collection 是最核心的概念,后续 DDL/DML 操作主要围绕它展开。
- 向量数据库存储的是一条条"向量 + 文本 + 元数据"的 Entity,检索时通过向量找到相似记录,然后返回关联的文本。
- 下一节将使用 pymilvus 客户端进行 DDL 操作:创建/删除 Database 和 Collection。