Docs 菜单
Docs 主页
/
MongoDB Atlas
/ /

开始使用 Amazon Bedrock 知识库集成

在此页面上

  • 背景
  • 先决条件
  • 加载自定义数据
  • 配置端点服务
  • 创建 Atlas Vector Search 索引
  • 创建知识库
  • 创建代理
  • 后续步骤

注意

Atlas Vector Search 当前仅在位于美国的 AWS 区域作为知识库提供。

您可以将 Atlas Vector Search 用作 知识库 适用于 Amazon 基岩版 构建生成式 AI 应用程序并实施检索增强生成 (RAG)。本教程演示如何开始将 Atlas Vector Search 与 Amazon BedRock 结合使用。 具体来说,您执行以下操作:

  1. 将自定义数据加载到 Amazon S3 存储桶中。

  2. (可选)使用 AWS PrivateLink 配置端点服务。

  3. 在您的数据上创建一个 Atlas Vector Search 索引。

  4. 在 Atlas 上创建知识库以存储数据。

  5. 创建一个使用 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 账户,该账户有一个秘密

  • 访问权限 本教程中使用的以下基础模型:

  • 如果您计划配置 AWS PrivateLink 端点服务,请安装 AWS CLInpm

如果您还没有包含文本数据的 Amazon S 3 存储桶,请创建一个新的存储桶并加载以下有关 MongoDB 最佳实践的可公开访问的 PDF:

1
  1. 导航至 MongoDB 最佳实践指南。

  2. 单击 Read WhitepaperEmail me the PDF,即可访问 PDF。

  3. 下载并在本地保存 PDF。

2
  1. 按照步骤创建 S3 存储桶 。确保使用描述性的 Bucket Name

  2. 按照步骤 将文件上传到您的存储桶 。选择包含刚刚下载的 PDF 的文件。

默认情况下,Amazon Bedrock 通过公共 Internet 连接到您的知识库。为进一步确保连接安全,Atlas Vector Search 支持通过 AWS PrivateLink 端点服务在虚拟网络上连接到知识库。

(可选)完成以下步骤,启用连接到 AWS PrivateLink 私有端点的 Atlas 集群的端点服务:

1

按照步骤为您的 Atlas 集群设置 AWS PrivateLink 私有端点。确保使用描述性的 VPC ID 来标识您的私有端点。

要了解更多信息,请参阅了解 Atlas 中的私有端点。

2

MongoDB 和合作伙伴提供了一个云开发工具包 (CDK),您可以使用它来配置由网络负载均衡器支持的端点服务,将流量转发到您的私有端点。

按照 CDK GitHub 存储库所指定的步骤准备和运行 CDK 脚本。

在本部分中,您将通过在集合上创建 Atlas Vector Search 索引,将 Atlas 设置为向量数据库(也称为向量存储)。

要创建 Atlas Vector Search 索引,您必须对 Atlas 项目拥有 Project Data Access Admin或更高访问权限。

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 如果尚未显示,请单击侧边栏中的Clusters

    会显示集群页面。

2

单击集群的对应 Browse Collections 按钮。

显示数据浏览器

3
  1. 单击 + Create Database 按钮。

  2. 对于 Database name,输入 bedrock_db

  3. 对于 Collection name,输入 test

  4. 单击 Create 创建数据库及其第一个集合。

4

您可以从侧边栏、 Data Explorer 或集群详细信息页面转到 Atlas Search 页面。

  1. 在侧边栏中,单击 Services 标题下的 Atlas Search

  2. Select data source 下拉菜单中选择您的集群并单击 Go to Atlas Search

    将显示 Atlas Search 页面。

  1. 单击集群的对应 Browse Collections 按钮。

  2. 展开数据库并选择集合。

  3. 单击该集合的 Search Indexes 标签页。

    将显示 Atlas Search 页面。

  1. 单击集群的名称。

  2. 单击 Atlas Search 标签页。

    将显示 Atlas Search 页面。

5
  1. 单击 Create Search Index 按钮。

  2. Atlas Vector Search下,选择JSON Editor ,然后单击Next

  3. Database and Collection(数据库和集合)部分中找到 bedrock_db 数据库,然后选择 test 集合。

  4. Index Name 字段中输入 vector_index

  5. 将默认定义替换为以下示例索引定义,然后单击Next

    此索引定义用于指定在 vectorSearch 类型的索引中对以下字段建立索引:

    • embedding 字段作为向量类型。embedding 字段包含使用您在配置知识库时指定的嵌入模型创建的向量嵌入。索引定义指定了 1024 个向量维度,并使用 cosine 来衡量相似性。

    • metadatatext_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}
6

此时将显示一个模态窗口,让您知道索引正在构建中。

7

构建索引大约需要一分钟时间。在构建时,Status 列显示 Initial Sync。构建完成后,Status 列显示 Active

在本节中,您将创建一个知识库,以便将自定义数据加载到向量存储中。

1
  1. Amazon Web Services登录 控制台。

  2. 在左上角,单击 Services 下拉菜单。

  3. 单击Machine Learning ,然后选择Amazon Bedrock

  4. Amazon Bedrock 登陆页面上,单击 Get started

2

Amazon Bedrock 不会自动授予 FM 的访问权限。如果尚未执行此操作,请按照步骤为 Titan Embeddings G1 - TextAnthropic Claude V2.1 模型添加模型访问权限

3
  1. 在 Amazon Bedrock 控制台的左侧导航栏中,单击 Knowledge bases

  2. 单击 Create knowledge base(连接)。

  3. mongodb-atlas-knowledge-base指定为Knowledge base name

  4. 单击 Next(连接)。

默认情况下,Amazon BedRock 会创建一个新的IAM角色来访问知识库。

4
  1. 为知识库使用的数据源指定一个名称。

  2. 输入包含数据源的 S3 存储桶的 URI或者,单击Browse S3 ,然后从列表中找到包含您的数据源的S 3存储桶。

  3. 单击 Next(连接)。

    Amazon Bedrock 显示可用的嵌入模型,您可以使用该模型将数据源的文本数据转换为矢量嵌入。

  4. 选择 Titan Embeddings G1 - Text

5
  1. Vector database 部分,选择 Choose a vector store you have created

  2. 选择 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 概念。

  3. 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

  4. 如果您 配置了端点服务,请输入 PrivateLink Service Name

  5. 单击 Next(连接)。

6

在查看知识库的详细信息后,单击 Create knowledge base 以完成创建。

7

Amazon Bedrock 创建知识库后,会提示您同步数据。在 Data source 部分,选择数据源并单击 Sync,同步 S3 存储桶中的数据并将其加载到 Atlas 中。

同步完成后,您可以导航到集群中的 bedrock_db.test 集合,在 Atlas UI 中查看向量嵌入内容。

在本部分中,您将创建一个 代理 使用 Atlas Vector Search 实施 RAG 并回答有关数据的问题。当您提示该代理时,它会执行以下操作:

  1. 连接到知识库,访问存储在 Atlas 中的自定义数据。

  2. 使用 Atlas Vector Search 根据提示从向量存储中检索相关文档。

  3. 利用 AI 聊天模型,根据这些文档生成情境感知响应。

完成以下步骤以创建和测试RAG代理:

1
  1. 在 Amazon Bedrock 的左侧导航栏中,单击 Agents

  2. 单击 Create Agent(连接)。

  3. mongodb-rag-agent 指定为 Name,然后单击 Create

2

默认情况下,Amazon Bedrock 会创建一个新的IAM角色来访问代理。 在Agent details部分中,指定以下内容:

  1. 从下拉菜单中,选择 AnthropicClaude V2.1,作为用于回答有关数据的问题的提供程序和 AI 模型。

    注意

    Amazon Bedrock 不会自动授予 FM 的访问权限。如果还没有该权限,请按照该步骤为 Anthropic Claude V2.1 模型添加模型访问权限

  2. 为代理提供说明,以便其知道如何完成任务。

    例如,如果您使用的是样本数据,请粘贴以下说明:

    You are a friendly AI chatbot that answers questions about working with MongoDB.
  3. 单击 Save(连接)。

3

要将代理连接到您创建的知识库,请执行以下操作:

  1. Knowledge Bases 部分中,单击 Add

  2. 从下拉列表中选择 mongodb-atlas-knowledge-base

  3. 描述知识库,确定代理应如何与数据源交互。

    如果使用样本数据,请粘贴以下说明:

    This knowledge base describes best practices when working with MongoDB.
  4. 单击 Add,然后单击 Save(复制)。

4
  1. 单击 Prepare 按钮。

  2. 单击Test 。 Amazon BedRock 会在助手详细信息的右侧显示一个测试窗口(如果尚未显示)。

  3. 在测试窗口中,输入提示。代理会提示模型,使用 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 检索的文本块。

5

MongoDB 和合作伙伴还提供以下开发者资源:

提示

另请参阅:

后退

Spring AI