亚马逊 Bedrock 知识库中的守护措施介绍
作者 Hardik Vasa 和 Bani Sharma 日期 2024 年 7 月 3 日分类 亚马逊 Bedrock、亚马逊机器学习、亚马逊 OpenSearch 服务
关键点
亚马逊 Bedrock 知识库 提供一个完全托管的功能,可安全连接基础模型与公司数据,利用检索增强生成RAG。新推出的 亚马逊 Bedrock 守护措施 允许您根据使用案例和责任 AI 政策自定义安全措施。守护措施增强了生成 AI RAG 应用的安全性和合规性,过滤有害内容,保护敏感信息。本文将介绍亚马逊 Bedrock 知识库中守护措施的实施流程和实际应用案例。亚马逊 Bedrock 知识库是一个完全托管的功能,帮助您安全地将基础模型 (FMs) 连接到公司数据,利用检索增强生成 (RAG)。这一功能简化了整个 RAG 工作流,从数据获取到检索及提示增强,消除了对自定义数据源集成和数据流管理的需要。
我们最近宣布了 亚马逊 Bedrock 守护措施 的正式发布,这使您能够在生成 AI 应用中实现根据特定使用案例和责任 AI 政策自定义的安全措施。您可以创建多个守护措施,针对不同的使用案例,并跨多个 FMs 应用它们,实现生成 AI 应用中安全控制的标准化。
今天推出的亚马逊 Bedrock 知识库中的守护措施为您的生成 AI RAG 应用带来了增强的安全性和合规性。这项新功能提供行业领先的安全措施,过滤有害内容并保护文档中的敏感信息,从而改善用户体验并符合组织标准。
解决方案概述
亚马逊 Bedrock 知识库允许您配置 RAG 应用,以便使用 RetrieveAndGenerate API 查询知识库,并基于检索到的信息生成响应。
默认情况下,知识库允许您的 RAG 应用查询整个向量数据库,访问所有记录并检索相关结果。这可能会导致生成不当或不期望的内容,或者提供敏感信息,从而可能违反公司所设定的某些政策或指南。将守护措施与您的知识库集成,为控制生成输出、符合预定义规则和法规提供了一种机制。
以下图示说明了示例工作流程。
当您使用亚马逊 Bedrock 控制台测试知识库或者通过 AWS SDK 调用 RetrieveAndGenerate API 时,系统会生成一个查询嵌入并执行语义搜索,以从向量存储中检索相似文档。
查询随后将包含检索到的文档片段、提示和守护措施配置进行增强。在增强的查询被发送到 InvokeModel API 之前,守护措施会被应用,以检查被拒绝的主题并过滤出有害内容。最终,InvokeModel API 从大型语言模型 (LLM) 生成响应,确保输出不包含任何不当内容。
在接下来的部分中,我们将展示如何创建一个带有守护措施的知识库,并比较使用和不使用守护措施的查询结果。
亚马逊 Bedrock 知识库守护措施的使用场景
以下是将守护措施集成到知识库中的常见使用场景:
使用场景描述法律事务的信息管理帮助法律专业人士搜索案件文件、法律先例和客户通信。守护措施可以防止检索机密客户信息和过滤不当语言。例如,一名律师可能会问:“关于知识产权的最新案例法的要点是什么?”守护措施将确保回答中不包含任何机密客户细节或不当语言,保持信息的完整性和机密性。金融服务的对话式搜索使金融顾问能够搜索投资组合、交易历史和市场分析。守护措施可以防止检索未经授权的投资建议并过滤违反合规的内容。例如,查询可以是:“我们高净值客户的最新业绩指标是什么?”守护措施确保仅共享许可信息。电商平台的客户支持使客户服务代表能够访问订单历史、客户查询和产品细节。守护措施可以阻止敏感客户数据如姓名、电子邮件或地址在响应中泄露。例如,当代表问:“您能总结一下关于我们新产品线的近期投诉吗?”守护措施将会删除任何可识别个人身份的信息 (PII),确保隐私并遵守数据保护法规。为亚马逊 Bedrock 知识库准备数据集
在本节中,我们使用了一个包含多个虚构急救报告的示例数据集,例如详细的手术记录、术前和术后诊断以及患者病史。这些记录说明了如何将知识库与守护措施集成并有效查询。
如果您希望在自己的 AWS 帐户中进行操作,请 下载文件。每个医疗记录都是一个 Word 文档。我们将数据集存储在 亚马逊简单存储服务Amazon S3桶中。有关创建桶的说明,参见 创建桶。将解压的文件上传到此 S3 桶中。创建亚马逊 Bedrock 知识库
有关如何创建新的知识库的说明,请参见 创建知识库。在此示例中,我们使用以下设置:
小熊加速器官网下载安装在 配置数据源 页面,选择您数据集的 S3 桶。在 分块策略 中,选择 不分块,因为数据集中的文档已经过预处理,以符合特定长度。在 嵌入模型 部分,选择模型 Titan G1 嵌入 文本。在 向量数据库 部分,选择 快速创建新向量存储。与知识库同步数据集
创建知识库后,您的数据文件位于 S3 桶中,您可以开始增量加载。有关说明,请参见 同步以将数据源摄取到知识库中。
在等待同步任务完成时,您可以继续到下一个部分,创建守护措施。
在亚马逊 Bedrock 控制台上创建守护措施
完成以下步骤以 创建守护措施:
在亚马逊 Bedrock 控制台中,选择导航窗格中的 守护措施。选择 创建守护措施。在 提供守护措施详细信息 页面中,在 守护措施详细信息 部分为守护措施提供名称和可选描述。在 被拒绝的主题 部分,添加两个主题的信息,如以下截图所示。在 添加敏感信息过滤器 部分,在 PII 类型 中添加所有 PII 类型。选择 创建守护措施。在亚马逊 Bedrock 控制台上查询知识库
现在让我们测试带有守护措施的知识库:
在亚马逊 Bedrock 控制台中,选择导航窗格中的 知识库。选择您创建的知识库。选择 测试知识库。选择 配置 图标,然后向下滚动到 守护措施。以下截图显示了没有守护措施左侧和有守护措施右侧查询知识库的对比。
第一个示例演示了针对被拒绝主题的查询。

接下来,我们查询包含 PII 的数据。
最后,我们查询另一个被拒绝的主题。
使用 AWS SDK 查询知识库
您可以使用以下示例代码通过 AWS SDK for Python (Boto3) 查询带有守护措施的知识库:
pythonimport boto3
client = boto3client(bedrockagentruntime)response = clientretrieveandgenerate( input={ text 示例输入文本 } retrieveAndGenerateConfiguration={ knowledgeBaseConfiguration { generationConfiguration { guardrailConfiguration { guardrailId 你的守护措施 ID guardrailVersion 你的守护措施版本 } } knowledgeBaseId 你的知识库 ID modelArn 你的模型 ARN } type KNOWLEDGEBASE } sessionId=你的会话 ID)
清理
要清理资源,请完成以下步骤:
删除知识库:在亚马逊 Bedrock 控制台中,选择导航窗格中的 知识库。选择您创建的知识库。注意在 知识库概览 中的 AWS 身份和访问管理 (IAM) 服务角色名称。在 向量数据库 部分,注意 亚马逊 OpenSearch 无服务器 集合 ARN。选择 删除,然后输入 delete 以确认。删除向量数据库:在 亚马逊 OpenSearch 服务 控制台中,选择导航窗格中的 集合 下的 无服务器。在搜索框中输入您保存的集合 ARN。选择集合并选择 删除。在确认提示中输入 confirm,然后选择 删除。删除 IAM 服务角色:在 IAM 控制台中,选择导航窗格中的 角色。搜索您之前记下的角色名称。选择角色并选择 删除。在确认提示中输入角色名称并删除该角色。删除示例数据集:在亚马逊 S3 控制台中,导航到您使用的 S3 桶。选择前缀和文件,然后选择 删除。在确认提示中输入永久删除以完成删除。结论
在本文中,我们讨论了将守护措施与亚马逊 Bedrock 知识库集成的过程。通过这种集成,您可以受益于一个强大且可定制的安全框架,使其与您的应用的独特要求和责任 AI 实践相一致。这种集成旨在增强知识库生态系统中基础模型的整体安全性、合规性和负责任的使用,从而为您的 AI 驱动应用提供更大的控制和信心。
有关定价信息,请访问 亚马逊 Bedrock 定价。要开始使用亚马逊 Bedrock 知识库,请参考 创建知识库。有关深入的技术内容,以及了解我们的 Builder 社区如何在其解决方案中使用亚马逊 Bedrock,请访问我们的 communityaws 网站。
关于作者
Hardik Vasa 是 AWS 的高级解决方案架构师,专注于生成 AI 和无服务器技术,帮助客户充分利用 AWS 服务。Hardik 在各种会议和研讨会上分享他的知识。业余时间,他喜欢学习新技术、玩电子游戏和与家人共度时光。
Bani Sharma 是亚马逊网络服务 (AWS) 的高级解决方案架构师,位于科罗拉多州丹佛市。作为解决方案架构师,她与大量中小型企业合作,提供技术指导和与 AWS 的解决方案。她在容器、现代化领域有深入的了解,目前正在深入研究生成 AI。在加入 AWS 之前,Bani 在大型电信提供商担任过多个技术角色,并在一家跨国银行担任高级开发人员。