微信扫码
与创始人交个朋友
我要投稿
当越来越多企业构建基于企业知识库的LLM+RAG应用时,自然而然会碰到一个目前讨论较少的问题:基于企业用户权限对大模型RAG应用做问答内容输出范围的控制。即,RAG应用只能回答当前用户有权限可访问的知识内容。
访问控制不是一个新鲜的话题,对于熟练的程序员来说,很自然能想到RBAC、ABAC、PBAC等多种方案,结合场景做基于角色、属性、策略的各类访问控制。
在LLM RAG应用中,首先会有一个存放各类原始企业知识文档的存储。直接在知识库里做权限访问控制,粒度可以到文档级别。通过划分知识库、建立多级文件夹、打标签等方式做强制限制RAG应用在指定范围里做检索。阿里云百炼模型服务平台1.0版用的就是打标签的方式,把上传到知识库的文档通过标签归类聚合,限制RAG应用在该范围里做知识问答。
知识库里的的文档接着做分块Chunk、Embedding后存放向量数据,并用于提供Retrieval功能的向量数据库。自然而然地,我们立刻想到可以在检索向量数据库时做访问控制,基于当前用户角色权限检索出其可以访问的向量数据给到LLM。有的在向量数据库层面支持身份权限访问控制,比如Zilliz的RBAC实践:轻松管理基于 RAG 的知识库!RBAC 的最佳实践来了;更多的时候需要和应用结合更灵活的控制权限,就需要对向量数据库中的数据增加元数据metadata,在metadata中把诸如数据密级、分类、单位部门、时间、地点等信息加入,用于在后续检索中做查询过滤。
比如,我们在向量数据库中增加如下的metadata信息:
collection.add(documents=["这是公司2023年上半年的公开财报。财报中针对..."],
metadatas =[{"auth_level": 1, "category": "公司财报", "department": "IR", "role":"all", "year": "2023"}],
ids="id1")
collection.add(documents=["2023年饮料事业部内部经营分析报告,针对事业部在2023年的经营策略..."],
metadatas =[{"auth_level": 2, "category": "经营分析报告", "department": "饮料事业部", "role":"bev|ir|IT|sec", "year": "2023"}],
ids="id2")
collection.add(documents=["机密:公司未来一年的重点投资方向和投资策略..."],
metadatas =[{"auth_level": 3, "category": "投资策略", "department": "投资部", "role":"hqhead|boardsmembers", "year": "2024"}],
ids="id3")
然后写一个检索函数,简单根据前端应用传入的auth_level授权级别做数据查询过滤。
def vector_search_with_rbac(query_text, user_auth_level):
if not isinstance(user_auth_level, int) or user_auth_level < 0:
raise ValueError("Invalid user_auth_level. Must be a non-negative integer.")
try:
results = collection.query(query_texts=[query_text],n_results=10, where={"auth_level": user_auth_level})
return results
except Exception as e:
print(f"An error occurred: {e}")
return []
可以基于上面的思路,进一步扩展到根据前端应用传入的时间地点、分类类别、单位部门、角色岗位等元数据信息,做各种数据查询过滤,以满足当前用户只能得到他有权限可以知道的回答内容。
元数据内容,可以是把第一环节知识库中配置好的权限转化过来存入,也可以是直接根据前端应用中的权限配置信息转化直接存入。
总的来说,对企业级RAG应用,权限访问控制是绕不过去的一关,只有做好这步,才能让RAG应用更加放心的投产使用。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-07-06
比Kimi还好用?AI写作神器「橙篇」来势汹汹 欲夺长文创作之未来
2024-07-06
暴走WAIC:跟AI+教育有关的,都在这儿↑
2024-07-02
【研究成果】ArchGPT:利用大语言模型支持传统建筑遗产的更新与保护
2024-06-28
所有男生女生,AI 卖货主播来咯!
2024-06-28
AI+医疗专题报告:院内场景丰富,AI 全面赋能医疗健康领域
2024-06-20
AI 背后 B 端设计师的机会
2024-06-20
30 款让教师工作更轻松的 AI 工具
2024-06-13
知识图谱(KG)和大模型(LLMs)双轮驱动的企业级AI平台构建之道暨行业调研
2024-05-03
2023-07-06
2023-06-30
2023-06-29
2023-07-03
2024-04-28
2023-07-01
2024-05-25
2023-07-10
2023-06-29