开始使用 Amazon Bedrock 知识库集成
注意
Atlas Vector Search 当前仅在位于美国的 AWS 区域作为知识库提供。
您可以将 Atlas Vector Search 用作 知识库 适用于 Amazon 基岩版 构建生成式 AI 应用程序并实施检索增强生成 (RAG)。本教程演示如何开始将 Atlas Vector Search 与 Amazon BedRock 结合使用。 具体来说,您执行以下操作:
将自定义数据加载到 Amazon S3 存储桶中。
(可选)使用 AWS PrivateLink 配置端点服务。
在您的数据上创建一个 Atlas Vector Search 索引。
在 Atlas 上创建知识库以存储数据。
创建一个使用 Atlas Vector Search 实施RAG的代理。
背景
Amazon Bedrock 是一项用于构建生成式人工智能应用程序的完全托管服务。通过此项服务,您可以利用来自不同 AI 公司的基础模型 (FM) 作为单个 API。
您可以使用 Atlas Vector Search 作为 Amazon Bedrock 的知识库,在 Atlas 中存储自定义数据,创建一个代理来实现 RAG 并回答有关数据的问题。要了解有关 RAG 的更多信息,请参阅 使用 Atlas Vector Search 实现检索增强生成 (RAG)。
先决条件
如要完成本教程,您必须具备以下条件:
运行 MongoDB 版本 6. 0. 11、7. 0. 2 或更高版本的 Atlas M 10+ 集群。
包含 Atlas 集群凭证的 AWS 账户,该账户有一个秘密。
加载自定义数据
如果您还没有包含文本数据的 Amazon S 3 存储桶,请创建一个新的存储桶并加载以下有关 MongoDB 最佳实践的可公开访问的 PDF:
下载 PDF。
导航至 MongoDB 最佳实践指南。
单击 Read Whitepaper 或 Email me the PDF,即可访问 PDF。
下载并在本地保存 PDF。
将 PDF 上传到Amazon S 存储桶。3
按照步骤创建 S3 存储桶 。确保使用描述性的 Bucket Name。
按照步骤 将文件上传到您的存储桶 。选择包含刚刚下载的 PDF 的文件。
配置端点服务
默认情况下,Amazon Bedrock 通过公共 Internet 连接到您的知识库。为进一步确保连接安全,Atlas Vector Search 支持通过 AWS PrivateLink 端点服务在虚拟网络上连接到知识库。
(可选)完成以下步骤,启用连接到 AWS PrivateLink 私有端点的 Atlas 集群的端点服务:
在 Atlas 中设置私有端点。
按照步骤为您的 Atlas 集群设置 AWS PrivateLink 私有端点。确保使用描述性的 VPC ID 来标识您的私有端点。
要了解更多信息,请参阅了解 Atlas 中的私有端点。
配置端点服务。
MongoDB 和合作伙伴提供了一个云开发工具包 (CDK),您可以使用它来配置由网络负载均衡器支持的端点服务,将流量转发到您的私有端点。
按照 CDK GitHub 存储库所指定的步骤准备和运行 CDK 脚本。
创建 Atlas Vector Search 索引
在本部分中,您将通过在集合上创建 Atlas Vector Search 索引,将 Atlas 设置为向量数据库(也称为向量存储)。
必需的访问权限
要创建 Atlas Vector Search 索引,您必须对 Atlas 项目拥有 Project Data Access Admin
或更高访问权限。
步骤
在Atlas中,转到项目的Clusters 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未显示,请单击侧边栏中的Clusters 。
会显示集群页面。
GoCollections 页面。
单击集群的对应 Browse Collections 按钮。
显示数据浏览器。
转到集群的 Atlas Search 页面。
您可以从侧边栏、 Data Explorer 或集群详细信息页面转到 Atlas Search 页面。
在侧边栏中,单击 Services 标题下的 Atlas Search。
从 Select data source 下拉菜单中选择您的集群并单击 Go to Atlas Search。
将显示 Atlas Search 页面。
单击集群的对应 Browse Collections 按钮。
展开数据库并选择集合。
单击该集合的 Search Indexes 标签页。
将显示 Atlas Search 页面。
单击集群的名称。
单击 Atlas Search 标签页。
将显示 Atlas Search 页面。
定义 Atlas Vector Search 索引。
单击 Create Search Index 按钮。
在Atlas Vector Search下,选择JSON Editor ,然后单击Next 。
在 Database and Collection(数据库和集合)部分中找到
bedrock_db
数据库,然后选择test
集合。在 Index Name 字段中输入
vector_index
。将默认定义替换为以下示例索引定义,然后单击Next 。
此索引定义用于指定在 vectorSearch 类型的索引中对以下字段建立索引:
embedding
字段作为向量类型。embedding
字段包含使用您在配置知识库时指定的嵌入模型创建的向量嵌入。索引定义指定了1024
个向量维度,并使用cosine
来衡量相似性。metadata
和text_chunk
字段作为过滤器类型,用于预过滤数据。您可以在配置知识库时指定这些字段。
1 { 2 "fields": [ 3 { 4 "numDimensions": 1024, 5 "path": "embedding", 6 "similarity": "cosine", 7 "type": "vector" 8 }, 9 { 10 "path": "metadata", 11 "type": "filter" 12 }, 13 { 14 "path": "text_chunk", 15 "type": "filter" 16 } 17 ] 18 }
创建知识库
在本节中,您将创建一个知识库,以便将自定义数据加载到向量存储中。
管理模型访问权限。
Amazon Bedrock 不会自动授予 FM 的访问权限。如果尚未执行此操作,请按照步骤为 Titan Embeddings G1 - Text 和 Anthropic Claude V2.1 模型添加模型访问权限。
将 Atlas 连接到知识库。
在 Vector database 部分,选择 Choose a vector store you have created。
选择 MongoDB Atlas 并配置以下选项:
在Hostname 中,输入 Atlas 集群连接字符串中的 URL。该主机名使用以下格式:
<clusterName>.mongodb.net 对于 Database name,输入
bedrock_db
。对于 Collection name,输入
test
。对于Credentials secret ARN ,输入包含 Atlas 集群档案的密钥的ARN 。 要了解更多信息,请参阅Amazon Web Services Secrets Manager 概念。
在Metadata field mapping 部分中,配置以下选项,以确定Atlas Search Atlas用于嵌入和存储数据源的 索引和字段名称:
对于 Vector search index name,输入
vector_index
。对于 Vector embedding field path,输入
embedding
。对于 Text field path,输入
text_chunk
。对于 Metadata field path,输入
metadata
。
如果您 配置了端点服务,请输入 PrivateLink Service Name。
单击 Next(连接)。
同步数据源。
Amazon Bedrock 创建知识库后,会提示您同步数据。在 Data source 部分,选择数据源并单击 Sync,同步 S3 存储桶中的数据并将其加载到 Atlas 中。
同步完成后,您可以导航到集群中的 bedrock_db.test
集合,在 Atlas UI 中查看向量嵌入内容。
创建代理
在本部分中,您将创建一个 代理 使用 Atlas Vector Search 实施 RAG 并回答有关数据的问题。当您提示该代理时,它会执行以下操作:
连接到知识库,访问存储在 Atlas 中的自定义数据。
使用 Atlas Vector Search 根据提示从向量存储中检索相关文档。
利用 AI 聊天模型,根据这些文档生成情境感知响应。
完成以下步骤以创建和测试RAG代理:
选择一个模型并提供提示。
默认情况下,Amazon Bedrock 会创建一个新的IAM角色来访问代理。 在Agent details部分中,指定以下内容:
从下拉菜单中,选择 Anthropic 和 Claude V2.1,作为用于回答有关数据的问题的提供程序和 AI 模型。
注意
Amazon Bedrock 不会自动授予 FM 的访问权限。如果还没有该权限,请按照该步骤为 Anthropic Claude V2.1 模型添加模型访问权限。
为代理提供说明,以便其知道如何完成任务。
例如,如果您使用的是样本数据,请粘贴以下说明:
You are a friendly AI chatbot that answers questions about working with MongoDB. 单击 Save(连接)。
测试该代理。
单击 Prepare 按钮。
单击Test 。 Amazon BedRock 会在助手详细信息的右侧显示一个测试窗口(如果尚未显示)。
在测试窗口中,输入提示。代理会提示模型,使用 Atlas Vector Search 检索相关文档,然后根据文档生成响应。
如果使用了示例数据,请输入以下提示。 生成的响应可能会有所不同。
What's the best practice to reduce network utilization with MongoDB? The best practice to reduce network utilization with MongoDB is to issue updates only on fields that have changed rather than retrieving the entire documents in your application, updating fields, and then saving the document back to the database. [1] 提示
单击助手响应中的注释,查看 Atlas Vector Search 检索的文本块。
后续步骤
MongoDB 和合作伙伴还提供以下开发者资源: