创建知识库 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建知识库

注意

您无法使用 root 用户创建知识库。在开始这些步骤之前,请使用 IAM 用户登录。

在 Amazon S3 中设置数据源和您选择的矢量存储后,您可以创建知识库。选择与您选择的方法相对应的选项卡,然后按照步骤操作。

Console
创建知识库
  1. 登录并打开 Amazon Bedrock 控制台,网址为 https://console.aws.amazon.com/bedrock/。 AWS Management Console

  2. 从左侧导航窗格中选择知识库

  3. 知识库部分,选择创建知识库

  4. 提供知识库详细信息页面上,设置以下配置:

    1. (可选)在知识库详细信息部分,更改默认名称并提供知识库描述。

    2. IAM 权限部分,选择一个提供 Amazon Bedrock 访问其他 AWS 服务的权限的 AWS Identity and Access Management (IAM) 角色。您可以让 Amazon Bedrock 创建服务角色或选择您创建的自定义角色

    3. (可选)向知识库添加标签。有关更多信息,请参阅 标记资源

    4. 选择下一步

  5. 设置数据源页面上,提供用于知识库的数据源的信息:

    1. (可选)更改默认的数据源名称

    2. 数据源位置选择 “当前账户” 或 “其他账户

    3. 提供包含您为数据源准备的文件的对象的 S3 URI。如果您选择其他账户,则可能需要更新其他账户的 Amazon S3 存储桶策略、AWS KMS 密钥策略和当前账户的知识库角色。

      注意

      选择与您正在创建的知识库位于同一区域的 Amazon S3 存储桶。否则,您的数据源将无法同步

    4. 如果您使用客户托管密钥加密了 Amazon S3 数据,请选择为亚马逊 S3 数据添加客户管理的 AWS KMS 密钥,然后选择 KMS 密钥以允许 Amazon Bedrock 对其进行解密。有关更多信息,请参阅 对传递给 Amazon OpenSearch 服务的信息进行加密

    5. (可选)要配置以下高级设置,请展开高级设置-可选部分。

      1. 在将您的数据转换为嵌入式数据时,Amazon Bedrock 会使用默认 AWS 拥有和管理的密钥对您的数据进行加密。要使用您自己的 KMS 密钥,请展开高级设置,选择自定义加密设置(高级),然后选择一个密钥。有关更多信息,请参阅 加密数据提取期间的临时数据存储

      2. 从以下选项中选择数据源的分块策略

        • 默认分块 – 默认情况下,Amazon Bedrock 会自动将您的源数据拆分为多个数据块,因此每个数据块最多包含 300 个词元。如果文档包含的词元少于 300 个,则不会再对其进行拆分。

        • 固定大小分块 – Amazon Bedrock 会将源数据拆分为与您设置的大小相近的数据块。配置以下选项。

          • 最大词元数量 – Amazon Bedrock 创建的数据块不会超过您选择的词元数量。

          • 数据块之间的重叠百分比 – 每个数据块将按照您选择的百分比与连续的数据块重叠。

        • 不分块 – Amazon Bedrock 将把每个文件都视为一个数据块。如果选择这个选项,则可能需要将文档拆分为单独的文件以进行预处理。

        注意

        创建完数据来源后,就无法更改分块策略。

      3. 从以下选项中选择数据源的数据删除策略:

        • 删除:删除知识库或数据源资源后,从矢量存储中删除属于该数据源的所有基础数据。请注意,矢量存储本身不会被删除,只会删除基础数据。如果删除了 AWS 帐户,则会忽略此标志。

        • 保留:删除知识库或数据源资源后,将所有基础数据保留在矢量存储中。

    6. 选择下一步

  6. 嵌入模型部分,选择支持的嵌入模型,将您的数据转换为知识库的矢量嵌入。

  7. 矢量数据库部分,选择以下选项之一来存储知识库的矢量嵌入:

    • 快速创建新的矢量图库 — Amazon Bedrock 为您创建亚马逊 OpenSearch 无服务器矢量搜索集合。使用此选项,将使用必填字段和必要配置为您设置公共矢量搜索集合和矢量索引。创建集合后,您可以在 Amazon OpenSearch Serverless 控制台中或通过 AWS API 对其进行管理。有关更多信息,请参阅《Amazon OpenSearch 服务开发者指南》中的使用矢量搜索集合。如果选择此选项,则可以选择启用以下设置:

      1. 要启用冗余活动副本,以便在基础设施出现故障时不会影响矢量存储的可用性,请选择启用冗余(活动副本)。

        注意

        我们建议您在测试知识库时禁用此选项。当您准备好部署到生产环境时,我们建议您启用冗余活动副本。有关定价的信息,请参阅 OpenSearch 无服务器定价

      2. 要使用客户管理的密钥加密自动矢量存储,请选择为 Amazon S OpenSearch erverless 矢量添加客户管理的 KMS 密钥(可选),然后选择密钥。有关更多信息,请参阅 对传递给 Amazon OpenSearch 服务的信息进行加密

    • 选择已创建的矢量存储-选择包含已创建的矢量数据库的服务。填写字段,允许 Amazon Bedrock 将知识库中的信息映射到您的数据库,以便它可以存储、更新和管理嵌入内容。有关这些字段如何映射到您创建的字段的更多信息,请参阅在支持的矢量存储中为您的知识库设置矢量索引

      注意

      如果您在 Amazon OpenSearch Serverless、Amazon Aurora 或 MongoDB Atlas 中使用数据库,则需要事先配置字段映射下的字段。如果您在Pinecone或中使用数据库Redis Enterprise Cloud,则可以在此处提供这些字段的名称,Amazon Bedrock 将在矢量存储中为您动态创建它们。

  8. 选择下一步

  9. 查看并创建页面上,查看知识库的配置和详细信息。在任何需要修改的部分中选择 “编辑”。如果您感到满意,请选择创建知识库

  10. 创建知识库所用的时间取决于您提供的数据量。知识库创建完成后,知识库的状态将更改为 “就”。

API

要创建知识库,请使用 Amazon Bedrock 代理构建时终端节点发送CreateKnowledgeBase请求,并提供名称、描述、应执行的操作说明以及编排的基础模型。

注意

如果您更喜欢让 Amazon Bedrock 在亚马逊 OpenSearch 服务中为您创建和管理矢量存储,请使用控制台。有关更多信息,请参阅 创建知识库。

  • roleArn 字段中向 ARN 提供创建知识库的权限。

  • knowledgeBaseConfiguration 对象的 embeddingModelArn 字段中提供要使用的嵌入模型。

  • storageConfiguration 对象中提供向量存储的配置。有关更多信息,请参阅 在支持的矢量存储中为您的知识库设置矢量索引

    • 对于亚马逊 OpenSearch 服务数据库,请使用opensearchServerlessConfiguration对象。

    • 对于Pinecone数据库,请使用pineconeConfiguration对象。

    • 对于Redis Enterprise Cloud数据库,请使用redisEnterpriseCloudConfiguration对象。

    • 对于 Amazon Aurora 数据库,请使用rdsConfiguration对象。

    • 对于 MongoDB Atlas 数据库,请使用对象。mongodbConfiguration

创建知识库后,从包含知识库文件的 S3 存储桶中创建数据源。要创建数据源,CreateDataSource请发送请求。

  • dataSourceConfiguration字段中提供包含数据源文件的 S3 存储桶的信息。

  • 指定如何对vectorIngestionConfiguration字段中的数据源进行分块。有关更多信息,请参阅 为您的知识库设置数据源

    注意

    创建数据源后,您无法更改分块配置。

  • dataDeletionPolicy为您的数据源提供。删除知识库或数据源资源后,您可以从矢量存储中删除属于该数据源DELETE的所有基础数据。请注意,矢量存储本身不会被删除,只会删除基础数据。如果删除了 AWS 帐户,则会忽略此标志。删除知识库或数据源资源后,您可以将RETAIN所有基础数据存储在矢量存储中。

  • (可选)在将您的数据转换为嵌入式数据时,Amazon Bedrock 默认使用 AWS 拥有和管理的密钥对您的数据进行加密。要使用自己的 KMS 密钥,请将其包含在serverSideEncryptionConfiguration对象中。有关更多信息,请参阅 知识库资源的加密

为您的知识库设置安全配置

创建知识库后,可能需要设置以下安全配置:

为您的知识库设置数据访问策略

如果您使用的是自定义角色,请为新创建的知识库设置安全配置。如果您让 Amazon Bedrock 为您创建服务角色,则可以跳过此步骤。按照与您设置的数据库相对应的选项卡中的步骤进行操作。

Amazon OpenSearch Serverless

要将对 Amazon OpenSearch Serverless 集合的访问权限限制为知识库服务角色,请创建数据访问策略。您可以通过以下方式执行此操作:

使用以下数据访问策略,指定 Amazon OpenSearch Serverless 集合和您的服务角色:

[ { "Description": "${data access policy description}", "Rules": [ { "Resource": [ "index/${collection_name}/*" ], "Permission": [ "aoss:DescribeIndex", "aoss:ReadDocument", "aoss:WriteDocument" ], "ResourceType": "index" } ], "Principal": [ "arn:aws:iam::${account-id}:role/${kb-service-role}" ] } ]
Pinecone, Redis Enterprise Cloud or MongoDB Atlas

要集成Pinecone、Redis Enterprise Cloud、MongoDB Atlas 向量索引,请将以下基于身份的策略附加到您的知识库服务角色,以允许其访问向量索引 AWS Secrets Manager 的密钥。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "bedrock:AssociateThirdPartyKnowledgeBase" ], "Resource": "*", "Condition": { "StringEquals": { "bedrock:ThirdPartyKnowledgeBaseCredentialsSecretArn": "arn:aws:iam::${region}:${account-id}:secret:${secret-id}" } } }] }

为您的 Amazon OpenSearch 无服务器知识库设置网络访问策略

如果您使用私有 Amazon OpenSearch Serverless 集合作为知识库,则只能通过 AWS PrivateLink VPC 终端节点对其进行访问。您可以在设置亚马逊 OpenSearch 无服务器矢量集合时创建私有的 Amazon OpenSearch Serverless 集合,也可以在配置其网络访问策略时将现有的亚马逊 OpenSearch 无服务器集合(包括亚马逊 Bedrock 控制台为您创建的集合)设为私有。

《亚马逊 OpenSearch 服务开发者指南》中的以下资源将帮助您了解私有 Amazon OpenSearch Serverless 集合所需的设置:

要允许 Amazon Bedrock 知识库访问亚马逊 OpenSearch 无服务器的私有馆藏,您必须编辑亚马逊 OpenSearch 无服务器集合的网络访问策略,以允许 Amazon Bedrock 作为源服务。选择与您选择的方法相对应的选项卡,然后按照步骤操作。

Console
  1. 打开亚马逊 OpenSearch 服务控制台,网址为 https://console.aws.amazon.com/aos/

  2. 在左侧导航窗格中,选择 “收藏夹”。然后选择您的收藏。

  3. 在 “网络” 部分,选择 “关联策略”。

  4. 选择编辑

  5. 对于 “选择策略定义方法”,请执行以下任一操作:

    • 保留 “选择策略定义方法” 作为可视化编辑器,然后在 “规则 1” 部分中配置以下设置:

      1. (可选)在规则名称字段中,输入网络访问规则的名称。

      2. 在 “访问来自的集合” 下,选择 “私人(推荐)”。

      3. 选择AWS 服务私有访问权限。在文本框中输入bedrock.amazonaws.com

      4. 取消选择 “启用对 OpenSearch 仪表板的访问权限”。

    • 选择 JSON 并将以下策略粘贴到 JSON 编辑器中。

      [ { "AllowFromPublic": false, "Description":"${network access policy description}", "Rules":[ { "ResourceType": "collection", "Resource":[ "collection/${collection-id}" ] }, ], "SourceServices":[ "bedrock.amazonaws.com" ] } ]
  6. 选择更新

API

要编辑您的 Amazon OpenSearch Serverless 馆藏的网络访问策略,请执行以下操作:

  1. 使用OpenSearch 无服务器端点发送GetSecurityPolicy请求。指定策略name的,然后指定typenetwork。记下响应中的 policyVersion

  2. 使用OpenSearch 无服务器端点发送UpdateSecurityPolicy请求。至少要指定以下字段:

    字段 描述
    name 策略的名称
    策略版本 policyVersion回复中返回给你。GetSecurityPolicy
    type 安全策略的类型。指定 network
    策略 要使用的策略。指定以下 JSON 对象
    [ { "AllowFromPublic": false, "Description":"${network access policy description}", "Rules":[ { "ResourceType": "collection", "Resource":[ "collection/${collection-id}" ] }, ], "SourceServices":[ "bedrock.amazonaws.com" ] } ]

有关 AWS CLI 示例,请参阅创建数据访问策略(AWS CLI)