Windows 环境下 Python 方式安装 Milvus 向量库与 Attu 避坑指南

这份文档结合了你的实际操作经验、版本避坑指南以及最新的兼容性表格,是一份非常完善的 《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.12v2.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

  1. 启动 Attu 桌面客户端。
  2. 在连接配置界面填写:
    • Connection NameLocal Milvus(随意命名)
    • Milvus Addresslocalhost:19530
    • Username / Password:留空(默认未开启认证)
  3. 点击 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 分钟即可完成。如果哪一步遇到问题,随时告诉我具体报错信息。

相关推荐
RoboWizard2 小时前
三星和金士顿内存条哪个更适合游戏超频
大数据·人工智能
深圳市恒星物联科技有限公司2 小时前
轻量MCU设备通过OpenHarmony兼容性测评的全流程关键要点与实战踩坑经验
大数据·人工智能·物联网·鸿蒙
AI闲人2 小时前
企业 AI 最大的问题,不是数据不足,而是数据没有业务语义
人工智能·数字化·企业ai落地
米小虾2 小时前
一周 AI 观察(9.14–9.18):Anthropic 自曝"AI 写了我四分之一的研发",于是这一周所有人都在买同一样东西
人工智能
米小虾3 小时前
加了 20 条示例反而变差:你的 few-shot 提升,可能只是 prompt 变长的功劳
人工智能·llm
东方-教育技术博主3 小时前
自进化智能体编码软件用法
人工智能
jimmyleeee3 小时前
大模型安全之十八:AI常见漏洞类别与缓解策略
人工智能·安全
火山引擎开发者社区3 小时前
多行业专家招募|参与线上访谈拿 2000元/h 现金报酬!
人工智能
4SAPI3 小时前
企业大模型API服务商推荐:从多模型接入到AI API Gateway的技术选型分析
人工智能·php