如何用Python开发Milvus向量数据库实现查询?

摘要:一、前置准备:环境与依赖 Milvus 环境要求 版本:milvus_2.6.9 Python 依赖安装 pip install pymilvus==2.5.0 二、核心知识点:Milvus RBAC 权限体系 核心概念 角色(Role):
一、前置准备:环境与依赖 Milvus 环境要求 版本:milvus_2.6.9 Python 依赖安装 pip install pymilvus==2.5.0 二、核心知识点:Milvus RBAC 权限体系 核心概念 角色(Role):权限的集合,如 test_role 权限(Privilege):具体操作权限,如 Insert/Search 作用对象:权限生效的范围,如 Collection/Database 权限粒度:集合级(核心)、数据库级、分区级 默认角色:root(超级管理员,拥有所有权限) 三、实战操作:角色与权限管理(Python 实现) 1. 连接 Milvus(带权限认证) 核心函数:connections.connect() 关键参数:uri(服务地址)、token(用户名密码)、db_name(指定数据库) 注意:未指定 db_name 时默认连接 default 数据库 2. 角色管理:创建 / 删除角色 实例化 Role 对象:role = Role("test_role") 创建角色:role.create()(需 root 权限,重复创建会报错) 删除角色:role.drop()(谨慎操作,删除后角色关联权限全部失效) 3. 权限操作:授予 / 收回权限 授予权限:role.grant(对象类型, 对象名称, 具体权限) 示例:role.grant("Collection", "*", "Insert")(给角色授予所有集合的插入权限) 通配符:* 表示 “所有”,可替换为具体集合名(如 "user_vector") 收回权限:role.revoke(对象类型, 对象名称, 具体权限) 示例:role.revoke("Collection", "*", "Insert") 4. 权限查询:校验权限配置 全量查询:role.list_grants()(查看角色的所有权限) 精准查询:role.list_grant(对象类型, 对象名称)(仅查看指定类型权限) 应用场景:权限配置后校验、问题排查 5. 核心清单:Milvus 集合级所有可配置权限 分类讲解权限: 集合管理:CreateCollection/DropCollection 等 数据操作:Insert/Search/Query 等 索引管理:CreateIndex/DropIndex 等 分区管理:CreatePartition/DropPartition 等 注意点:删除角色时,需要先将该角色的权限都收回,否则会报错 看代码实现: # 过滤 pymilvus 依赖的 pkg_resources 废弃警告(setuptools≥81 版本触发) import warnings warnings.filterwarnings("ignore", message=".*pkg_resources is deprecated as an API.*") # 导入 Milvus Python 客户端核心模块 # connections:用于连接 Milvus 服务 # Role:用于 Milvus 角色与权限管理(RBAC 权限体系) from pymilvus import connections, Role def connect_to_milvus(db_name="default"): """ 连接 Milvus 向量数据库 :param db_name: 要连接的数据库名称,默认使用 Milvus 内置的 default 数据库 :return: None 注意: 1. uri 格式为 http://<ip>:<port>,Milvus 2.x 默认端口 19530 2. token 格式为 <用户名>:<密码>,默认管理员账号 root,密码需替换为实际值(示例为 Milvus) 3. 若未指定 db_name,默认连接 default 数据库 """ print(f"开始连接 Milvus 数据库,目标数据库:{db_name}\n") try: # 建立 Milvus 连接 connections.connect( uri="http://192.168.211.128:19530", # Milvus 服务地址 token="root:Milvus", # 认证令牌(用户名密
阅读全文