使用RAG实现数据访问授权
组织越来越多地使用大语言模型通过生成式AI驱动的聊天机器人、虚拟助手和智能搜索功能来提供新型客户交互。为了增强这些交互,组织正在使用检索增强生成技术来整合专有数据、行业特定知识和内部文档,以提供更准确、更具上下文关联的响应。
RAG使用概述
RAG架构与搜索引擎有相似之处,但存在关键差异。虽然两者都使用索引数据源来查找相关信息,但它们的数据访问方法不同。搜索引擎提供信息源的链接,要求用户基于其权限直接访问原始数据源。
与搜索引擎不同,RAG实现直接从LLM返回向量数据库结果,绕过了原始数据源的权限检查。虽然元数据过滤有助于控制访问,但它面临两个关键挑战:首先,向量数据库仅定期同步,意味着源数据中的权限更改不会立即反映;其次,复杂的身份权限使得准确过滤结果变得困难。
解决方案概述:Bedrock知识库与S3访问授权
以下示例展示了一个ACME组织希望为其员工创建生成式AI聊天机器人的场景。组织内有多个团队在整个组织中开展项目。
授权流程实现
应用程序流程包含以下步骤:
- 用户使用身份提供商登录生成式AI应用程序
- 生成式AI应用程序与IAM身份中心交换令牌并代表用户担任角色
- 生成式AI应用程序调用S3访问授权以获取用户有权访问的授权列表
- 用户向生成式AI应用程序发送查询
- 生成式AI应用程序向知识库发送查询
- 生成式AI应用程序根据用户授权范围审查知识库返回的数据块
- 只有用户有权访问的范围才会传递给LLM生成响应
代码实现示例
|
|
解决方案考虑因素
在实施RAG实现的授权架构时,需要理解几个影响安全性、性能和可扩展性的关键考虑因素:
- 该架构可用于您选择的数据源,前提是知识库返回数据源的URI,并且有API可以调用以验证主体有权访问的内容
- S3访问授权为主体访问数据源提供授权,可以通过添加键/值标签或数据源来对每个存储桶应用额外的访问控制策略
- 授权范围列表可能会变得过时,需要决定刷新授权范围列表的频率
- 根据主体有权访问的数据块和知识库返回的内容,数据块可能在发送到LLM之前被丢弃
结论
本文展示了一种为知识库返回结果提供强授权的架构模式。通过Amazon S3访问授权与Bedrock知识库的实际示例,详细介绍了如何在RAG实现中实施数据访问授权控制机制。