这份文档结合了你的实际操作经验、版本避坑指南以及最新的兼容性表格,是一份非常完善的 《Windows 环境下 Python 方式安装 Milvus 向量库与 Attu 避坑指南》。
一、 核心版本兼容性对照表(⚠️ 必读)
Milvus 的服务端与客户端工具(Attu)之间存在严格的版本对应关系。高版本的 Attu(如 v3.0+)无法连接低版本的 Milvus 服务端,这是最常见的报错来源。
| Milvus 服务端版本 | 推荐 Attu 客户端版本 | 备注 |
|---|---|---|
| 2.5.x | v2.5.6 | 较新版本,需 Docker 部署 |
| 2.4.x | v2.4.12 | 当前主流稳定版,支持 Windows 本地运行 |
| 2.3.x | v2.3.5 | 旧版本维护中 |
| 2.2.x / Lite | v2.2.8 | 适合轻量级测试,Windows 本地常用 |
| 2.1.x | v2.2.2 | 极老版本 |
⚠️ 避坑警示:
如果你下载了最新的 Attu v3.0+ ,它会明确提示不支持 2.5 以下的版本。如果你正在使用 Windows 本地的
milvus-lite(通常显示为 v2.2.16-lite),请务必下载 Attu v2.4.12 或 v2.2.8。
二、 准备工作
1. 确认 Python 环境
按 Win + S 搜索 cmd,打开命令提示符,输入:
cmd
python --version
确保版本为 Python 3.8 或以上。
2. 创建项目文件夹
在 D 盘(或任意非系统盘)新建一个文件夹,例如:D:\milvus_local。
注意:路径中尽量不要包含中文或空格,以免后续启动服务报错。
三、 安装 Milvus 服务端
1. 创建并激活虚拟环境
在 D:\milvus_local 文件夹的地址栏输入 cmd 并回车,打开命令行,执行:
cmd
python -m venv .venv
.venv\Scripts\activate
成功后命令行前面会出现 (.venv) 标识。
2. 安装 Milvus 包
在虚拟环境中执行以下命令,安装旧版 Milvus(支持 Windows 本地运行):
cmd
pip install pymilvus==2.4.9 milvus
注意 :必须使用
pymilvus==2.4.9,因为 2.5+ 版本在 Windows 上存在兼容性问题,且需配合milvus这个包来启动本地单机版服务。
安装完成后,验证是否成功:
cmd
milvus-server --help
如果出现帮助信息,说明安装成功。
四、 创建一键启动/停止脚本
为了方便管理,我们创建两个批处理文件。
注意: 运行之后,关闭电脑之前一定要手动正常关闭运行,通过下边脚本也可以或者Ctrl+C等也可以,否则下次启动容易出现
Wait for milvus server started timeout类似的异常, 如果真的出现了可以删除milvus_data文件,前提是这个里边没有存储什么数据情况。
1. 启动脚本 start_milvus.bat
在 D:\milvus_local 文件夹中新建文本文件,重命名为 start_milvus.bat (注意去掉 .txt 后缀),右键用记事本打开,复制以下内容并保存:
batch
@echo off
chcp 65001 >nul
echo ==========================================
echo Milvus 本地单机版 - 一键启动
echo ==========================================
echo.
:: 激活虚拟环境
call .venv\Scripts\activate
:: 创建数据目录(如果不存在)
if not exist milvus_data mkdir milvus_data
:: 启动 Milvus 服务端
echo [正在启动 Milvus 服务...]
milvus-server --data milvus_data
echo.
echo [提示] Milvus 服务已停止,按任意键关闭窗口。
pause
2. 停止脚本 stop_milvus.bat
同样方式新建 stop_milvus.bat,内容如下:
batch
@echo off
chcp 65001 >nul
echo ==========================================
echo 正在停止 Milvus 服务...
echo ==========================================
:: 查找并结束 milvus-server 进程
tasklist | findstr /i "milvus-server" >nul
if %errorlevel%==0 (
taskkill /f /im python.exe /fi "WINDOWTITLE eq milvus-server*"
echo [成功] Milvus 服务已停止。
) else (
echo [提示] 未找到正在运行的 Milvus 服务。
)
echo.
pause
3. 如何使用
- 启动 :双击
start_milvus.bat,会弹出一个黑色窗口,看到服务启动信息后不要关闭该窗口(关闭即停止服务)。 - 停止 :双击
stop_milvus.bat,或直接关闭启动脚本的黑窗口。
五、 安装并配置 Attu
1. 安装 Attu
打开你已下载的 Attu 安装包(.exe 文件),双击按向导完成安装。
推荐版本:Attu v2.4.12
2. 连接 Milvus
- 启动 Attu 桌面客户端。
- 在连接配置界面填写:
- Connection Name :
Local Milvus(随意命名) - Milvus Address :
localhost:19530 - Username / Password:留空(默认未开启认证)
- Connection Name :
- 点击 Connect 连接。
⚠️ 前提 :必须先通过
start_milvus.bat启动 Milvus 服务,Attu 才能连接成功。如果报错 "Connection refused",请检查黑窗口是否还在运行。
六、 Python 常用操作命令
在你的 Python 项目中,通过 SDK 操作 Milvus。以下是最常用的基础命令:
1. 连接数据库
python
from pymilvus import connections
# 连接到本地 Milvus 服务
connections.connect(alias="default", host="localhost", port="19530")
print("✅ 连接成功")
2. 创建集合(相当于建表)
python
from pymilvus import CollectionSchema, FieldSchema, DataType, Collection
# 定义字段
field_id = FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True)
field_vec = FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=768)
field_text = FieldSchema(name="text", dtype=DataType.VARCHAR, max_length=500)
# 创建 Schema
schema = CollectionSchema(fields=[field_id, field_vec, field_text], description="测试集合")
# 创建集合
col = Collection(name="my_collection", schema=schema)
print("✅ 集合创建成功")
3. 创建索引并加载
python
# 为向量字段创建索引(提升检索速度)
index_params = {
"index_type": "IVF_FLAT",
"metric_type": "L2",
"params": {"nlist": 128}
}
col.create_index(field_name="vector", index_params=index_params)
# 加载集合到内存
col.load()
print("✅ 索引创建并加载成功")
4. 插入数据
python
import numpy as np
# 生成测试数据
texts = ["人工智能", "机器学习", "深度学习"]
vectors = [np.random.rand(768).tolist() for _ in texts]
# 插入数据
col.insert([texts, vectors])
col.flush() # 刷新到磁盘
print(f"✅ 插入了 {len(texts)} 条数据")
5. 向量检索
python
# 生成查询向量
query_vector = np.random.rand(768).tolist()
# 执行相似度搜索
results = col.search(
data=[query_vector],
anns_field="vector",
param={"metric_type": "L2", "params": {"nprobe": 10}},
limit=3,
output_fields=["text"]
)
# 打印结果
for hits in results:
for hit in hits:
print(f"距离: {hit.distance:.4f}, 文本: {hit.entity.get('text')}")
七、 完整测试脚本
将以下代码保存为 test_milvus.py,放在 D:\milvus_local 文件夹中,双击运行即可验证整个环境:
python
import numpy as np
from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType
# 1. 连接
connections.connect(host="localhost", port="19530")
print("✅ 1. 连接成功")
# 2. 创建集合
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=768),
FieldSchema(name="text", dtype=DataType.VARCHAR, max_length=500),
]
schema = CollectionSchema(fields=fields, description="测试集合")
col = Collection(name="test_col", schema=schema)
print("✅ 2. 集合创建成功")
# 3. 创建索引并加载
col.create_index("vector", {"index_type": "IVF_FLAT", "metric_type": "L2", "params": {"nlist": 128}})
col.load()
print("✅ 3. 索引创建并加载成功")
# 4. 插入数据
texts = ["人工智能是未来", "机器学习很重要", "深度学习很强大"]
vectors = [np.random.rand(768).tolist() for _ in texts]
col.insert([texts, vectors])
col.flush()
print(f"✅ 4. 插入了 {len(texts)} 条数据")
# 5. 向量检索
query_vec = np.random.rand(768).tolist()
results = col.search([query_vec], "vector", {"metric_type": "L2", "params": {"nprobe": 10}}, limit=3, output_fields=["text"])
print("✅ 5. 检索结果:")
for hits in results:
for hit in hits:
print(f" 距离: {hit.distance:.4f} | 文本: {hit.entity.get('text')}")
print("\n🎉 全部测试通过!Milvus + Attu 环境搭建成功!")
运行方式:先启动 start_milvus.bat,然后在虚拟环境中执行:
cmd
.venv\Scripts\activate
python test_milvus.py
八、 常见问题排查
| 问题 | 解决方案 |
|---|---|
pip install 报错 |
确认虚拟环境已激活(命令行前有 (.venv)) |
| Attu 连接失败 | 确认 start_milvus.bat 的黑窗口未关闭,服务正在运行;检查 Attu 版本是否过高(需用 v2.4.x) |
| 端口 19530 被占用 | 执行 `netstat -ano |
milvus-server 命令找不到 |
确认已执行 pip install pymilvus==2.4.9 milvus 且虚拟环境已激活 |
| 数据目录包含中文/空格 | 数据路径禁止包含中文或空格,请使用纯英文路径 |
九、 总结流程图
text
安装 Python → 创建虚拟环境 → pip 安装 Milvus → 创建 Bat 脚本 → 双击启动服务 → 安装 Attu (v2.4.12) → 连接 localhost:19530 → 开始使用
整个流程顺利的话,大约 10-15 分钟即可完成。如果哪一步遇到问题,随时告诉我具体报错信息。