跳到主要内容Milvus 实战:Attu 可视化安装与 Python 整合指南 | 极客日志PythonAI算法
Milvus 实战:Attu 可视化安装与 Python 整合指南
Milvus 向量数据库实战教程,涵盖 Attu 可视化工具的跨平台安装部署及 Python SDK(PyMilvus)的深度整合。通过 Docker 或本地方式快速搭建管理界面,演示静态与动态 Schema 的 Collection 创建、数据插入及检索流程。重点解析分片策略、字段类型定义及 MilvusClient 简化用法,帮助开发者高效构建 RAG 系统底层存储能力。
abccba1 浏览 Milvus 实战:Attu 可视化安装与 Python 整合指南
Attu 可视化客户端:Milvus 图形化管理利器
Attu 是 Zilliz 团队专为 Milvus 向量数据库打造的开源图形化管理工具,核心价值在于让操作脱离命令行,显著降低学习与运维成本。
主要优势
- 跨平台兼容:支持 Windows、Linux、macOS 三大系统,同时提供 Docker 镜像部署方案
- 开箱即用:无需编写代码,通过界面即可完成数据库、集合、索引的全生命周期管理
- 深度集成:与 Milvus 生态无缝衔接,由官方团队维护,功能迭代与 Milvus 版本同步
- 版本适配:需重点注意 Attu 与 Milvus 的版本匹配(当前实战环境:Milvus V2.5X,建议搭配 Attu 2.5.X 版本)
- 开源地址:https://github.com/zilliztech/attu
核心功能模块
- 数据库与集合管理:创建/删除数据库、定义集合字段(主键、标量、向量)、索引构建、数据导入导出
- 分区与分片优化:支持按业务维度(时间/用户组)划分分区,分片数可配置(默认 2 个,支持水平扩展)
- 向量检索能力:支持 L2(欧氏距离)、余弦相似度等度量方式,结合标量过滤实现混合查询
- 资源与权限控制:加载/释放内存数据,多角色权限分配(全局权限、集合权限、用户权限)
Attu 安装实战(跨平台适配)
Attu 支持多种安装方式,以下是不同系统的最简部署流程,核心目标是通过'IP+端口'连接 Milvus 服务。
环境准备
- 已部署 Milvus 服务(本地或远程,确保网络可通)
- Milvus 服务端口默认 19530(TCP 端口)、9091(HTTP 端口)
- 安装版本匹配:Milvus 2.5X → Attu 2.5.X(避免接口不兼容)
Windows 系统安装
- 访问 GitHub Releases 页面,下载 Windows 对应的 exe 安装包(如 attu-windows-x64.exe)
- 双击安装包,按向导完成安装(默认路径即可,无需额外配置)
- 启动 Attu,在连接页面输入 Milvus 服务 IP + 端口 19530,点击'Connect'即可登录
(此处展示 Attu 连接界面截图)
macOS 系统安装
- 下载 macOS 对应的 dmg 安装包(attu-macos-x64.dmg)
- 拖拽安装包到应用程序文件夹,完成安装
- 启动 Attu,输入 Milvus 服务 IP 和 19530 端口,验证连接(若提示权限不足,右键选择'打开'即可)
Linux 系统安装(Debian/Ubuntu)
- 下载 deb 安装包:wget https://github.com/zilliztech/attu/releases/download/v2.5.3/attu_2.5.3_amd64.deb(版本号可按需替换)
- 执行安装命令:sudo dpkg -i attu_2.5.3_amd64.deb
- 启动 Attu:在终端输入 attu,或通过应用列表启动,输入连接信息即可
Docker 部署(跨平台通用方案)
- 拉取 Attu 镜像:docker pull zilliz/attu:v2.5.3
- 启动容器(映射本地 8080 端口,连接 Milvus 服务):
docker run -p 8080:3000 -e MILVUS_URL=xxx.xxx.xxx.xxx:19530 zilliz/attu:v2.5.3
Python 整合 Milvus:SDK 安装与验证
Milvus 提供多语言 SDK(Python/Node.js/GO/Java),其中 Python SDK(PyMilvus)是最常用的开发工具。
安装 PyMilvus
核心要求:PyMilvus 版本需与 Milvus 服务器版本匹配(当前环境:Milvus 2.5X → PyMilvus 2.5.5)
pip install pymilvus==2.5.5
验证安装
python -c "from pymilvus import Collection"
PyMilvus 核心接口分类
- DDL/DCL:创建/删除集合、分区,检查集合/分区是否存在(createCollection、dropCollection 等)
- DML/Produce:数据插入、删除、更新操作
- DQL:向量搜索、标量查询、混合查询操作
Python 操作 Milvus 核心流程
Python 操作 Milvus 的核心链路:连接服务 → 数据库操作 → 集合操作 → 数据操作 → 检索查询。以下是关键步骤实战。
连接 Milvus 服务
支持两种连接方式(推荐第二种 MilvusClient,语法更简洁):
from pymilvus import connections, db
conn = connections.connect(host="192.168.229.128", port=19530)
from pymilvus import MilvusClient
client = MilvusClient("http://192.168.229.128:19530")
数据库操作(创建/使用/删除)
from pymilvus import connections, db
connections.connect(host="192.168.229.128", port=19530)
db.create_database("my_rag_database")
db.using_database("my_rag_database")
all_dbs = db.list_database()
print("所有数据库:", all_dbs)
db.drop_database("my_rag_database")
Collection 与 Schema 实战:静态 + 动态字段
Collection 是 Milvus 中的'数据表',Schema 定义表结构(字段类型、主键、向量维度等),支持静态字段和动态字段两种模式。
核心概念
- Schema:集合的结构定义,由多个 FieldSchema(字段定义)组成
- FieldSchema:单个字段的定义,包括名称、数据类型、是否为主键、向量维度等
- 静态 Schema:字段固定,需提前定义所有字段(适用于数据结构稳定的场景,如用户画像)
- 动态 Schema:支持新增未定义的字段(Milvus 2.3+ 支持,适用于日志、多变数据场景)
字段类型详解(常用)
| 数据类型 | 说明 | 示例 |
|---|
| INT64 | 64 位整型,常用作主键 | DataType.INT64 |
| VARCHAR | 变长字符串,需指定 max_length | DataType.VARCHAR(max_length=50) |
| FLOAT | 单精度浮点数 | DataType.FLOAT |
| FLOAT_VECTOR | 浮点型向量,需指定 dim(维度) | DataType.FLOAT_VECTOR(dim=128) |
静态 Schema+Collection 创建
from pymilvus import connections, FieldSchema, DataType, CollectionSchema, Collection
connections.connect(host="192.168.229.128", port=19530)
db.using_database("my_rag_database")
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128),
FieldSchema(name="doc_tag", dtype=DataType.VARCHAR, max_length=50)
]
schema = CollectionSchema(
fields=fields,
description="RAG 系统文档向量集合(静态字段)",
enable_dynamic_field=False
)
collection = Collection(
name="static_doc_collection",
schema=schema,
shards_num=2
)
print("Collection 创建成功!")
动态 Schema+Collection 创建与数据插入
动态 Schema 允许插入未定义的字段,灵活适配多变数据场景:
from pymilvus import connections, FieldSchema, DataType, CollectionSchema, Collection
connections.connect(host="192.168.229.128", port=19530)
db.using_database("my_rag_database")
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
]
dynamic_schema = CollectionSchema(
fields=fields,
description="RAG 系统动态字段集合",
enable_dynamic_field=True
)
dynamic_collection = Collection(
name="dynamic_doc_collection",
schema=dynamic_schema,
shards_num=2
)
data = [
{
"id": 0,
"embedding": [0.358, -0.602, 0.184, -0.263, 0.903],
"color": "pink_8682",
"doc_source": "pdf_file_1.pdf"
},
{
"id": 1,
"embedding": [-0.334, -0.257, 0.899, 0.940, 0.538],
"color": "grey_8510",
"doc_source": "docx_file_2.docx"
}
]
insert_result = dynamic_collection.insert(data=data)
print("数据插入成功,插入 ID:", insert_result.primary_keys)
关键参数说明
- shards_num:分片数量,创建后不可修改,直接影响分布式扩展能力
- enable_dynamic_field:是否启用动态字段,Milvus 2.3+ 版本支持
- dim:向量维度,需与嵌入模型(如 BERT、Sentence-BERT)输出的向量维度完全一致
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online