本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建知识库
注意
您无法使用 root 用户创建知识库。在开始这些步骤之前,请使用 IAM 用户登录。
在 Amazon S3 中设置数据源和您选择的矢量存储后,您可以创建知识库。选择与您选择的方法相对应的选项卡,然后按照步骤操作。
- Console
-
创建知识库
-
登录并打开 Amazon Bedrock 控制台,网址为 https://console.aws.amazon.com/bedrock/
。 AWS Management Console -
从左侧导航窗格中选择知识库。
-
在知识库部分,选择创建知识库。
-
在提供知识库详细信息页面上,设置以下配置:
-
在设置数据源页面上,提供用于知识库的数据源的信息:
-
(可选)更改默认的数据源名称。
-
为数据源位置选择 “当前账户” 或 “其他账户”
-
提供包含您为数据源准备的文件的对象的 S3 URI。如果您选择其他账户,则可能需要更新其他账户的 Amazon S3 存储桶策略、AWS KMS 密钥策略和当前账户的知识库角色。
注意
选择与您正在创建的知识库位于同一区域的 Amazon S3 存储桶。否则,您的数据源将无法同步。
-
如果您使用客户托管密钥加密了 Amazon S3 数据,请选择为亚马逊 S3 数据添加客户管理的 AWS KMS 密钥,然后选择 KMS 密钥以允许 Amazon Bedrock 对其进行解密。有关更多信息,请参阅 对传递给 Amazon OpenSearch 服务的信息进行加密。
-
(可选)要配置以下高级设置,请展开高级设置-可选部分。
-
在将您的数据转换为嵌入式数据时,Amazon Bedrock 会使用默认 AWS 拥有和管理的密钥对您的数据进行加密。要使用您自己的 KMS 密钥,请展开高级设置,选择自定义加密设置(高级),然后选择一个密钥。有关更多信息,请参阅 加密数据提取期间的临时数据存储。
-
从以下选项中选择数据源的分块策略:
-
默认分块 – 默认情况下,Amazon Bedrock 会自动将您的源数据拆分为多个数据块,因此每个数据块最多包含 300 个词元。如果文档包含的词元少于 300 个,则不会再对其进行拆分。
-
固定大小分块 – Amazon Bedrock 会将源数据拆分为与您设置的大小相近的数据块。配置以下选项。
-
最大词元数量 – Amazon Bedrock 创建的数据块不会超过您选择的词元数量。
-
数据块之间的重叠百分比 – 每个数据块将按照您选择的百分比与连续的数据块重叠。
-
-
不分块 – Amazon Bedrock 将把每个文件都视为一个数据块。如果选择这个选项,则可能需要将文档拆分为单独的文件以进行预处理。
注意
创建完数据来源后,就无法更改分块策略。
-
-
从以下选项中选择数据源的数据删除策略:
-
删除:删除知识库或数据源资源后,从矢量存储中删除属于该数据源的所有基础数据。请注意,矢量存储本身不会被删除,只会删除基础数据。如果删除了 AWS 帐户,则会忽略此标志。
-
保留:删除知识库或数据源资源后,将所有基础数据保留在矢量存储中。
-
-
-
选择下一步。
-
-
在嵌入模型部分,选择支持的嵌入模型,将您的数据转换为知识库的矢量嵌入。
-
在矢量数据库部分,选择以下选项之一来存储知识库的矢量嵌入:
-
快速创建新的矢量图库 — Amazon Bedrock 为您创建亚马逊 OpenSearch 无服务器矢量搜索集合。使用此选项,将使用必填字段和必要配置为您设置公共矢量搜索集合和矢量索引。创建集合后,您可以在 Amazon OpenSearch Serverless 控制台中或通过 AWS API 对其进行管理。有关更多信息,请参阅《Amazon OpenSearch 服务开发者指南》中的使用矢量搜索集合。如果选择此选项,则可以选择启用以下设置:
-
要启用冗余活动副本,以便在基础设施出现故障时不会影响矢量存储的可用性,请选择启用冗余(活动副本)。
注意
我们建议您在测试知识库时禁用此选项。当您准备好部署到生产环境时,我们建议您启用冗余活动副本。有关定价的信息,请参阅 OpenSearch 无服务器定价
-
要使用客户管理的密钥加密自动矢量存储,请选择为 Amazon S OpenSearch erverless 矢量添加客户管理的 KMS 密钥(可选),然后选择密钥。有关更多信息,请参阅 对传递给 Amazon OpenSearch 服务的信息进行加密。
-
-
选择已创建的矢量存储-选择包含已创建的矢量数据库的服务。填写字段,允许 Amazon Bedrock 将知识库中的信息映射到您的数据库,以便它可以存储、更新和管理嵌入内容。有关这些字段如何映射到您创建的字段的更多信息,请参阅在支持的矢量存储中为您的知识库设置矢量索引。
注意
如果您在 Amazon OpenSearch Serverless、Amazon Aurora 或 MongoDB Atlas 中使用数据库,则需要事先配置字段映射下的字段。如果您在Pinecone或中使用数据库Redis Enterprise Cloud,则可以在此处提供这些字段的名称,Amazon Bedrock 将在矢量存储中为您动态创建它们。
-
-
选择下一步。
-
在查看并创建页面上,查看知识库的配置和详细信息。在任何需要修改的部分中选择 “编辑”。如果您感到满意,请选择创建知识库。
-
创建知识库所用的时间取决于您提供的数据量。知识库创建完成后,知识库的状态将更改为 “就绪”。
-
- 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 集合的访问权限限制为知识库服务角色,请创建数据访问策略。您可以通过以下方式执行此操作:
-
按照亚马逊 OpenSearch 服务开发者指南中的创建数据访问策略(控制台)中的步骤使用亚马逊 OpenSearch 服务控制台。
-
通过发送带有OpenSearch 无服务器端点的CreateAccessPolicy请求来使用 AWS API。有关 AWS CLI 示例,请参阅创建数据访问策略(AWS CLI)。
使用以下数据访问策略,指定 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 OpenSearch Serverless 集合设置 VPC 终端节点的更多信息,请参阅使用接口终端节点访问 Amazon OpenSearch Serverless()AWS PrivateLink。
-
有关 Amazon Serverless 中网络访问策略的更多信息,请参阅 Amazon OpenSearch Serv OpenSearch erless 的网络访问权限。
要允许 Amazon Bedrock 知识库访问亚马逊 OpenSearch 无服务器的私有馆藏,您必须编辑亚马逊 OpenSearch 无服务器集合的网络访问策略,以允许 Amazon Bedrock 作为源服务。选择与您选择的方法相对应的选项卡,然后按照步骤操作。
- Console
-
-
打开亚马逊 OpenSearch 服务控制台,网址为 https://console.aws.amazon.com/aos/
。 -
在左侧导航窗格中,选择 “收藏夹”。然后选择您的收藏。
-
在 “网络” 部分,选择 “关联策略”。
-
选择编辑。
-
对于 “选择策略定义方法”,请执行以下任一操作:
-
保留 “选择策略定义方法” 作为可视化编辑器,然后在 “规则 1” 部分中配置以下设置:
-
(可选)在规则名称字段中,输入网络访问规则的名称。
-
在 “访问来自的集合” 下,选择 “私人(推荐)”。
-
选择AWS 服务私有访问权限。在文本框中输入
bedrock.amazonaws.com
。 -
取消选择 “启用对 OpenSearch 仪表板的访问权限”。
-
-
选择 JSON 并将以下策略粘贴到 JSON 编辑器中。
[ { "AllowFromPublic": false, "Description":"
${network access policy description}
", "Rules":[ { "ResourceType": "collection", "Resource":[ "collection/${collection-id}
" ] }, ], "SourceServices":[ "bedrock.amazonaws.com" ] } ]
-
-
选择更新。
-
- API
-
要编辑您的 Amazon OpenSearch Serverless 馆藏的网络访问策略,请执行以下操作:
-
使用OpenSearch 无服务器端点发送GetSecurityPolicy请求。指定策略
name
的,然后指定type
为network
。记下响应中的policyVersion
。 -
使用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)。
-
-
按照创建网络策略(控制 OpenSearch 台)中的步骤使用 Amazon Service 控制台。与其创建网络策略,不如记下集合详细信息的 “网络” 小节中的关联策略。