本文时对 Attu(Milvus 的图形用户界面)的详细介绍。从零开始,聚焦 Attu 的功能、安装、配置、使用方法、适用场景和注意事项。
1. Attu 概述
Attu 是由 Zilliz 开发并开源的 Milvus 图形用户界面(GUI) 工具,专为管理 Milvus 向量数据库设计。它提供直观的界面,简化数据库操作,降低运维成本。Attu 支持 Milvus 2.x 版本(包括 Milvus 2.5.10),适用于本地部署(Milvus Standalone)、Kubernetes 集群(Milvus Distributed)以及 Zilliz Cloud。以下是 Attu 的核心特点:
- 直观界面:通过图形化操作管理数据库、集合、分区、向量索引等,减少命令行操作的复杂性。
- 多功能支持:支持数据导入、查询、向量搜索、系统监控等,适合开发者和运维人员。
- 开源项目:托管于 GitHub(
zilliztech/attu
),支持社区贡献和插件开发。 - 跨平台:提供 Docker、桌面应用(Windows、Mac、Linux)和 Kubernetes Helm 部署方式。
- 快速迭代:每周更新,持续添加新功能(如集群统计、用户角色管理等)。
2. Attu 的核心功能
Attu 通过以下功能简化 Milvus 的管理与操作:
2.1 数据库与集合管理
- 数据库管理:查看、创建和删除数据库,显示数据库列表及其详细信息。
- 集合管理:
- 创建、加载、释放和删除集合。
- 查看集合 Schema(字段、向量维度、索引类型等)。
- 支持动态 Schema,管理未预定义的字段(存储在
$meta
中)。
- 分区管理:创建、查看和删除分区,管理数据分片。
2.2 数据操作
- 数据导入:
- 通过 GUI 上传 JSON 或 CSV 文件,批量导入数据。
- 支持向指定集合或分区插入向量和标量数据。
- 数据查询:
- 使用过滤条件(如
id != 0
或color > 10 && color < 20
)查询数据。 - 支持动态字段过滤,查看导入的实体(ID、向量、元数据等)。
- 使用过滤条件(如
- 数据删除:
- 选择实体并通过 GUI 删除,支持批量操作。
- 批量操作:
- 执行 CRUD(创建、读取、更新、删除)操作,无需编写脚本。
2.3 向量搜索
- 向量搜索界面:
- 输入查询向量(如从 CSV 文件复制),选择集合和字段,执行相似性搜索。
- 支持多种度量(如
IP
内积、L2
欧氏距离)。 - 显示搜索结果,包括实体 ID、相似性得分和动态字段。
- 可视化:
- 生成随机测试查询,快速验证搜索结果。
- 表格形式展示结果,便于分析数据关系。
2.4 索引管理
- 创建索引:
- 一键创建向量索引(如
HNSW
、IVF_FLAT
),配置参数(如M
、efConstruction
)。
- 一键创建向量索引(如
- 查看索引:
- 显示索引类型、参数和构建状态。
2.5 系统监控
- 系统拓扑(System View):
- 显示 Milvus 实例的拓扑结构,包括协调节点(Coordinator)和数据节点。
- 点击节点查看详细信息(如 CPU、内存、磁盘使用情况),每 10 秒动态刷新。
- 支持按指标排序(如 CPU 使用率),便于排查高负载节点。
- 集群统计:
- 查看加载的集合数量、总实体数等(部分功能在 v2.5.x 中标记为 TBD,待开发)。
- 依赖状态:
- 监控元存储(etcd)、消息队列和对象存储的状态。
2.6 用户与权限管理
- 用户管理:
- 创建、删除用户,分配角色。
- 角色管理:
- 配置权限,控制对集合、数据的访问。
- 适用场景:
- 企业级应用中管理多用户访问权限。
2.7 插件系统
- 可扩展性:
- Vector Search 和 System View 页面为插件,支持用户开发自定义插件。
- 插件代码存储在
plugins
目录,参考现有插件即可开发。
- 配置:
- 通过配置文件添加插件,扩展 Attu 功能。
3. 安装 Attu
Attu 支持多种安装方式,以下基于 Milvus 2.5.10 和文档(,)详细说明。
3.1 使用 Docker 安装
- 步骤:
- 确保 Milvus 2.x 已运行(默认端口
19530
)。 - 运行 Attu 容器:
docker run -p 8000:3000 \ -e HOST_URL=http://{attu_ip}:8000 \ -e MILVUS_URL={milvus_ip}:19530 \ zilliz/attu:v2.5
- 打开浏览器,访问
http://{attu_ip}:8000
。
- 确保 Milvus 2.x 已运行(默认端口
- 注意:
- 确保 Attu 容器可访问 Milvus 的 IP 地址。
- 可通过
-e ATTU_LOG_LEVEL=info
设置日志级别。 - 支持 TLS 配置,需挂载证书文件(如
-v /your-tls-file-path:/app/tls
)。
3.2 使用 Helm Chart 安装(Kubernetes)
- 步骤:
- 添加 Milvus Helm 仓库:
helm repo add milvus https://milvus-io.github.io/milvus-helm/ helm repo update
- 安装 Milvus 和 Attu:
helm install my-release milvus/milvus --set attu.enabled=true
- 检查 Attu 服务:
kubectl get svc my-release-milvus-attu
- 配置 Ingress 或端口转发:
访问kubectl port-forward service/my-release-milvus-attu 3000
http://localhost:3000/connect
。
- 添加 Milvus Helm 仓库:
- 服务模式:
- ClusterIP(默认):内部访问。
- Ingress:推荐生产环境,需配置 DNS(如
milvus-attu.local
)。 - LoadBalancer:云环境外部访问。
- NodePort:测试环境。
- 注意:
- 确保 Kubernetes 集群已集成 Ingress 控制器或 LoadBalancer。
- Attu 仅支持 Milvus 2.x。
3.3 使用桌面应用安装
- 步骤:
- 访问 GitHub Releases 页面(
https://github.com/zilliztech/attu/releases
),下载适合操作系统的安装包(Windows、Mac、Linux)。 - 安装并运行 Attu。
- 输入 Milvus 地址(如
http://localhost:19530
)连接。
- 访问 GitHub Releases 页面(
- Mac M 芯片注意:
- 若提示
attu.app is damaged
,运行:sudo xattr -rd com.apple.quarantine /Applications/attu.app
- 若提示
- 局限性:
- 部分 Zilliz Cloud 功能可能不支持。
3.4 本地构建(开发者)
- 步骤:
- 克隆 Attu 仓库:
git clone https://github.com/zilliztech/attu.git
- 安装服务端依赖:
cd server yarn install yarn start
- 安装客户端依赖:
cd client yarn install yarn start
- 访问
http://localhost:3000
。
- 克隆 Attu 仓库:
- 用途:
- 测试最新功能、贡献代码或调试 PR。
4. 配置 Attu
连接 Milvus 后,需配置以下参数:
- Milvus 地址:
- 格式:
http://{milvus_ip}:19530
(Standalone)或 Zilliz Cloud 的 URI。 - 示例:
http://localhost:19530
。
- 格式:
- 认证:
- 默认用户名:
root
,密码:Milvus
(可通过COMMON_SECURITY_DEFAULTROOTPASSWORD
修改)。 - 支持 token 认证(Zilliz Cloud)。
- 默认用户名:
- 可选设置:
- 一致性级别(
Strong
、Session
、Bounded
、Eventually
)。 - TLS 证书路径(若启用安全连接)。
- 一致性级别(
- 界面导航:
- Overview:显示加载的集合、实体总数。
- Collection:列出所有集合,管理 Schema 和分区。
- Vector Search:执行向量相似性搜索。
- System View:监控系统拓扑和节点状态。
5. 使用 Attu:示例流程
以下是以 Milvus 2.5.10 为例,使用 Attu 管理向量数据库的典型流程(基于,)。
5.1 创建集合
- 登录 Attu,连接 Milvus(
http://localhost:19530
)。 - 在 Collection 页面,点击 Create Collection。
- 配置 Schema:
- 字段:
id
(Int64
,主键)、vector
(FloatVector
,维度 384,IP
度量)。 - 启用
enable_dynamic_field=True
。
- 字段:
- 创建集合
demo_collection
。
5.2 导入数据
- 点击集合
demo_collection
,进入 Data Query 标签。 - 点击 Import Data,上传 CSV 文件(如
example_vectors.csv
)。 - 验证导入:
- 设置过滤条件(如
id != 0
),点击 Apply Filter 和 Query。 - 查看实体列表,包括 ID、向量和动态字段。
- 设置过滤条件(如
5.3 执行向量搜索
- 进入 Vector Search 页面。
- 复制查询向量(从 CSV 或点击 Generate Random Data)。
- 选择集合
demo_collection
和字段vector
,点击 Search。 - 查看结果:表格显示 ID、相似性得分和元数据。
5.4 监控系统
- 进入 System View 页面。
- 查看拓扑图,点击节点检查 CPU、内存等指标。
- 按需排序节点,定位高负载节点。
6. 代码示例:结合 Attu 和 Milvus
以下示例展示如何通过 Python 创建集合并使用 Attu 进行管理(基于)。
from pymilvus import MilvusClient
import numpy as np
# 连接 Milvus
client = MilvusClient(uri="http://localhost:19530")
# 创建集合
collection_name = "attu_tutorial"
if client.has_collection(collection_name):
client.drop_collection(collection_name)
client.create_collection(
collection_name=collection_name,
dimension=384,
metric_type="IP",
consistency_level="Strong",
enable_dynamic_field=True
)
# 插入数据
docs = [
"Artificial intelligence was founded in 1956.",
"Alan Turing was the first to research AI.",
"Turing was born in London."
]
vectors = [np.random.rand(384).astype(np.float32) for _ in range(len(docs))]
data = [{"id": i, "vector": vec, "text": doc} for i, (vec, doc) in enumerate(zip(vectors, docs))]
client.insert(collection_name=collection_name, data=data)
# 创建索引
client.create_index(
collection_name=collection_name,
field_name="vector",
index_params={"index_type": "HNSW", "metric_type": "IP", "params": {"M": 16, "efConstruction": 200}}
)
# 加载集合
client.load_collection(collection_name=collection_name)
print(f"Collection {collection_name} created and loaded with {len(data)} entities.")
使用 Attu 操作
- 打开 Attu(
http://localhost:8000
),连接 Milvus。 - 在 Collection 页面查看
attu_tutorial
,确认 Schema(id: Int64
,vector: FloatVector(384)
, 动态字段text
)。 - 在 Data Query 标签,查询数据(过滤
id >= 0
),查看 3 条实体。 - 在 Vector Search 页面,输入随机向量(384 维),执行搜索,查看相似性结果。
7. 适用场景
Attu 在以下场景中表现优异:
- 开发与调试:
- 快速创建集合、导入数据、验证向量搜索,适合算法开发。
- 运维管理:
- 监控 Milvus 集群状态,排查性能瓶颈。
- 数据探索:
- 可视化向量数据和 Schema,分析数据关系,适用于 RAG、推荐系统。
- 多用户环境:
- 配置用户和角色,管理企业级权限。
- 跨平台部署:
- 支持本地、云端(Zilliz Cloud)和 Kubernetes,适应不同架构。
8. 注意事项
- 版本兼容性:
- 依赖要求:
- 确保 Milvus 服务可访问(默认
19530
端口)。 - Docker 部署需正确映射端口(
8000:3000
)。
- 确保 Milvus 服务可访问(默认
- 性能考虑:
- 大规模数据导入建议分批操作,避免 GUI 卡顿。
- System View 刷新频率(10 秒)可能影响实时性。
- 局限性:
- 错误排查:
9. Attu vs. 其他工具
Milvus 还提供其他管理工具,以下是与 Attu 的对比(基于,):
工具 | 类型 | 特点 | 适用场景 |
---|---|---|---|
Attu | GUI | 直观界面,支持集合管理、向量搜索、系统监控,插件化扩展 | 开发、运维、数据探索 |
Milvus Web UI | 内置 GUI | 专注于系统观测,显示组件统计、依赖状态,界面简单 | 系统监控、配置检查 |
Birdwatcher | 调试工具 | 连接 etcd,检查系统状态,支持动态配置,命令行操作 | 高级调试、配置调整 |
Milvus CLI | 命令行 | 简单直接,支持数据导入导出、向量距离计算,适合脚本自动化 | 批量操作、自动化任务 |
Attu 的优势:综合性强,适合非命令行用户,GUI 降低学习曲线。
10. 总结
Attu 是 Milvus 2.5.10 的高效开源 GUI 工具,通过直观界面简化数据库管理、数据操作、向量搜索和系统监控。它支持 Docker、Helm 和桌面应用部署,适用于本地和云端环境。核心功能包括集合管理、数据导入查询、向量搜索、索引创建和系统拓扑监控,特别适合开发、运维和数据探索场景。Attu 的插件系统和社区支持使其具有良好扩展性。