如何使用具有私有网络策略的 Amazon OpenSearch 无服务器集合在 Amazon Bedrock 中创建知识库?
我想使用具有私有网络策略的 Amazon OpenSearch 无服务器集合来创建知识库。
解决方法
您可以将 Amazon OpenSearch 无服务器用作知识库中的向量存储。该嵌入方式允许知识库访问那些具有私有网络策略的 OpenSearch 无服务器集合。
先决条件
以下部分中的示例具有这些权限:
**注意:**对于特定用例,可能需要额外的限制措施。
用户或控制台权限
- AWS Identity and Access Management (IAM) 用户角色的 AmazonBedrockFullAccessBedrockFullAccess 策略。
- IAM 用户角色的 AmazonS3FullAccess 策略。
- 集合的内联策略。有关更多信息,请参阅创建、列出和删除 Amazon OpenSearch 无服务器集合。
- 关于 OpenSearch API 和 Dashboard 访问的内联策略。有关更多信息,请参阅使用 OpenSearch API 操作。
- PassRole 为您的自定义服务角色提供权限。有关更多信息,请参阅向用户授予向 AWS 服务传递角色的权限。
角色
- 服务角色。
创建具有私有网络策略的集合
完成以下步骤:
-
在左侧导航窗格中,展开 Serverless(无服务器)。然后,选择 Collections(集合)。
-
选择 Create collection(创建集合)。输入集合详细信息。
-
选择 Standard create(标准创建)。
-
在 Network access settings(网络访问设置)下,配置集合的网络访问权限:
对于 Access type(访问类型),选择“private”(私有)。然后,选择可以访问该集合的 Amazon 虚拟私有云 (VPC) 端点和 Amazon Bedrock 服务。
对于 VPC endpoints for access(用于访问的 VPC 端点),请指定一个或多个 VPC 端点。或者,选择 Create VPC Endpoint(创建 VPC 端点)选项,在创建私有集合时生成 VPC 端点。
对于 AWS service private access(AWS 服务私有访问权限),请选择 Amazon Bedrock 作为服务 (bedrock.amazonaws.com)。
对于 Resource type(资源类型),请选择 Enable access to OpenSearch endpoint(启用对 OpenSearch 端点的访问权限)。
注意:****AWS 服务私有访问权限仅适用于 OpenSearch 端点,不适用于 OpenSearch Dashboard 端点。 -
选择 Next(下一步)。
-
为集合配置数据访问规则。这些规则定义了谁可以访问集合中的数据。对于您创建的每条规则,请执行以下步骤:
选择 Add principals(添加主体),然后选择一个或多个 AWS Identity and Access Management (IAM) 角色。
选择 SAML(Security Assertion Markup Language,安全断言标记语言)用户和群组以提供数据访问权限。请确保包括创建知识库所需的 Amazon Bedrock 自定义服务角色。
在 Grant permissions(授予权限)下,选择要授予关联主体的所有别名、模板和索引权限。 -
选择 Next(下一步)。
-
在 Data access policy settings(数据访问策略设置)下,选择 Create as a new data access policy(创建为新的数据访问策略)。或者,向现有策略添加主体和权限。
-
查看您的集合配置。然后,选择 Submit(提交)。
从 OpenSearch Dashboard 创建索引
您不能直接为私有集合创建索引。以下示例向您展示如何使用 OpenSearch Dashboard 创建索引和向量元数据字段。修改现有网络策略或创建新策略,以提供对 OpenSearch Dashboard 的访问权限。
按照以下步骤修改现有的网络策略:
- 登录 Amazon OpenSearch Service 控制台。
- 在左侧导航窗格中,展开 Serverless(无服务器)。然后,选择 Collections(集合)。
- 前往私有集合的网络策略部分。
- 在 Associated Policy(关联的策略)中选择您的策略。
- 选择 Edit(编辑)。
- 选择 Add rule(添加规则)。
- 为 Access type(访问类型)选择“Public”(公开)。
- 选择 Enable access to OpenSearch Dashboards(启用对 OpenSearch Dashboard 的访问权限)。
- 搜索并关联私有集合名称。
**注意:**使用 Update(更新)按钮来更新现有策略。
创建向量索引
完成以下步骤:
- 登录 Amazon OpenSearch Service 控制台。
- 在左侧导航窗格中,展开 Serverless(无服务器)。然后,选择 Collections(集合)。
- 选择私有集合。
- 选择 Create vector index(创建向量索引)。
- 输入 Vector index(向量索引)、Vector fields(向量字段)和 Metadata management(元数据管理)的详细信息。
- 复制带有设置的 JSON 代码块。
- 在左侧导航窗格中,展开 Serverless(无服务器)。返回 Collections(集合)。
- 打开 Dashboard(控制面板)链接以访问 OpenSearch Dashboard。
- 在左侧的 Home(主页)中,选择 Developer tools(开发者工具)。
- 输入您之前复制的 JSON 代码及其设置。使用 PUT 命令,如下所示。然后,运行代码:
PUT <index name> { "settings": { "index": { "knn": true, "knn.algo_param.ef_search": 512 } }, "mappings": { "properties": { "<vector field name>": { "type": "knn_vector", "dimension": 1536, "method": { "name": "hnsw", "engine": "faiss", "parameters": {}, "space_type": "l2" } }, "<Mapping field-1>": { "type": "text", "index": "true" }, "<Mapping field-2>": { "type": "text", "index": "true" } } } }
要自定义代码,请替换以下变量:
<index name>, <vector field name>, <Mapping field-1>, <Mapping field-2>
有关更多信息,请参阅 OpenSearch 网站上的 Create index(创建索引)。
**注意:**您也可以选择创建自己的向量索引。有关如何使用您的代码创建向量索引的信息,请参阅将数据引入 Amazon OpenSearch。有关 Amazon Bedrock 对向量存储的期望的信息,请参阅](
创建知识库
- 在创建知识库之前,请确保私有集合已准备就绪且可用。验证用户角色和 Amazon Bedrock 服务角色是否具有数据和网络访问权限。确认向量索引包含以下字段:
集合 ARN
向量索引名称
向量字段名称
元数据管理(第一个映射字段)
元数据管理(第二个映射字段) - 创建知识库。
对提示进行故障排除
错误消息: “The knowledge base storage configuration provided is invalid...Request failed: [http_exception] server returned 401”(提供的知识库存储配置无效...请求失败:[http_exception] 服务器返回 401)
当未将 Amazon Bedrock 添加到网络策略中以授予其访问私有集合和 VPC 端点的权限时,就会出现此错误。
要解决此错误,请转到前面部分中使用私有网络策略创建集合的第 5 步。然后,将 bedrock.amazonaws.com 添加到网络策略中,以允许 Amazon Bedrock 访问私有集合。
相关信息
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 个月前
- AWS 官方已更新 2 年前