在本笔记本中,我们将学习如何创建一个连接到单个知识库的亚马逊 Bedrock 代理,以便亚马逊 Bedrock 检索公司数据并完成任务。
此笔记本的用例是存储为 PDF 的亚马逊 Bedrock 文档页面。它将允许我们询问有关亚马逊 Bedrock 的问题,并根据知识库中可用的文档获得答复。
完成此笔记本的步骤如下:
亚马逊 Bedrock 的知识库当前要求数据驻留在亚马逊 S3 存储桶中。在本节中,我们将创建一个亚马逊 S3 存储桶和文件。
在本节中,我们将经历创建和测试知识库的所有步骤。
这些是要完成的步骤:
让我们首先创建 IAM 策略,允许我们的知识库访问 Bedrock Titan Embedding Foundation 模型、Amazon OpenSearch Serverless 和包含知识库文件的 S3 存储桶。
一旦策略准备就绪,我们就会创建知识库角色
首先,我们必须创建一个向量存储。在本节中,我们将使用 Amazon OpenSerach Serverless。
Amazon OpenSearch Serverless 是 Amazon OpenSearch Service 中的一个无服务器选项。作为开发人员,我们可以使用 OpenSearch Serverless 运行 petabyte 级别的工作负载,而无需配置、管理和扩展 OpenSearch 集群。我们可以获得与 OpenSearch Service 相同的交互式毫秒响应时间,同时享有无服务器环境的简单性。根据使用情况自动扩展资源,为我们的应用程序提供正确的容量 - 而不会影响数据摄取。
现在让我们创建一个向量索引来索引我们的数据
现在我们已经在 OpenSearch Serverless 中拥有了向量数据库,让我们创建一个知识库并将其与 OpenSearch DB 关联
一旦创建了知识库和数据源,我们就可以启动摄取作业。在摄取作业期间,知识库将获取数据源中的文档,对其进行预处理以提取文本,根据提供的块大小对其进行块化,为每个块创建嵌入,然后将其写入向量数据库,在本例中为 Amazon OpenSource Serverless。
我们现在将创建代理并将知识库与之关联。为此,我们需要:
首先,我们需要创建允许 bedrock 模型调用和知识库检索的代理策略
一旦创建了所需的 IAM 角色,我们就可以使用 bedrock 代理客户端创建一个新的代理。为此,我们使用 create_agent 函数。它需要一个代理名称、基础模型和说明。我们还可以提供代理描述。请注意,创建的代理尚未准备就绪。我们将专注于准备代理,然后使用它来调用操作并使用其他 API
让我们现在将代理 id 存储在一个本地变量中,以便在下一步中使用它
接下来,我们需要将创建的代理与 Bedrock 文档的知识库关联
让我们创建代理的 DRAFT 版本,可用于内部测试。
现在我们有了代理,让我们调用它来测试它是否提供了正确的亚马逊 Bedrock 信息。为此,让我们首先创建一个代理别名
现在我们已经创建了代理,让我们使用 bedrock-agent-runtime 客户端来调用这个代理并从知识库中获取信息
下一步是可选的,演示如何删除我们的代理。要删除代理,我们需要:
我们现在已经使用 boto3 SDK 进行了实验,创建、调用和删除了一个只连接一个 KB 的代理。
调整此笔记本以为我们的应用程序创建新的代理