使用 AWS CloudFormation 设置用于语义搜索的远程推理 - 亚马逊 OpenSearch 服务

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

使用 AWS CloudFormation 设置用于语义搜索的远程推理

从 OpenSearch 版本 2.9 开始,您可以使用带有语义搜索的远程推理来托管自己的机器学习 (ML) 模型。远程推理使用 ML Commons 插件允许您在机器学习服务(例如Amazon SageMaker和 Amazon Bedrock)上远程托管模型推理,并使用机器学习连接器将它们连接到 Amazon OpenSearch Service。

为了简化远程推理的设置,Amazon OpenSearch Service 在控制台中提供了一个 AWS CloudFormation 模板。CloudFormation 是一个 AWS 服务,允许您通过将基础设施视为代码来建模、预调配和管理 AWS 以及第三方资源。

OpenSearch CloudFormation 模板可自动完成模型预置过程,让您可以轻松地在 OpenSearch Service 域中创建模型,然后使用模型 ID 来摄取数据和运行神经搜索查询。

在 OpenSearch Service 2.12 及更高版本中使用神经稀疏编码器时,我们建议在本地使用分词器模型,而不是在远程部署该模型。有关更多信息,请参阅 OpenSearch 文档中的 Sparse encoding models

先决条件

要在 OpenSearch Service 中使用 CloudFormation 模板,请完成以下先决条件。

设置 OpenSearch Service 域

在使用 CloudFormation 模板之前,您必须设置一个版本 2.9 或更高版本并启用精细访问控制的 Amazon OpenSearch Service 域创建 OpenSearch Service 后端角色以授予 ML Commons 插件为您创建连接器的权限。

CloudFormation 模板使用默认名称 LambdaInvokeOpenSearchMLCommonsRole 为您创建一个 Lambda IAM 角色,如果您想选择其他名称,则可以覆盖该角色。在模板创建此 IAM 角色后,您需要授予 Lambda 函数调用您的 OpenSearch Service 域的权限。为此,请按照以下步骤将名为 ml_full_access角色映射到您的 OpenSearch Service 后端角色:

  1. 导航到 OpenSearch Service 域的 OpenSearch 控制面板插件。您可以在 OpenSearch Service 控制台的域控制面板中找到控制面板端点。

  2. 从主菜单中选择安全角色,然后选择 ml_full_access 角色。

  3. 选择映射的用户管理映射

  4. 后端角色下,添加需要权限才能调用您的域名的 Lambda 角色的 ARN。

    arn:aws:iam::account-id:role/role-name
  5. 选择映射并确认在映射的用户下显示的用户或角色。

映射角色后,导航到您的域的安全配置,然后将 Lambda IAM 角色添加到您的 OpenSearch Service 访问策略中。

启用您的 AWS 账户 权限

您的AWS 账户必须有权访问 CloudFormation 和 Lambda,以及您为模板选择的任何 AWS 服务,无论是 SageMaker Runtime 还是 Amazon BedRock。

如果您使用的是 Amazon Bedrock,则还必须注册您的模型。要注册您的模型,请参阅 Amazon BedRock 用户指南中的模型访问权限

如果您使用自己的 Amazon S3 存储桶来提供模型构件,则必须将 CloudFormation IAM 角色添加到您的 S3 访问策略中。有关更多信息,请参阅《 IAM 用户指南》中的添加和删​​除 IAM 身份权限

Amazon SageMaker 模板

Amazon SageMaker CloudFormation 模板定义了多种 AWS 资源,以便为您设置神经插件和语义搜索。

首先,使用通过 Amazon SageMaker 与文本嵌入模型集成模板,在 SageMaker 运行时中将一个文本嵌入模型部署为服务器。如果未提供模型端点,CloudFormation 会创建一个 IAM 角色,以允许 SageMaker 运行时从 Amazon S3 下载模型构件并将其部署到该服务器。如果提供了端点,CloudFormation 也会创建一个 IAM 角色,以允许该 Lambda 函数访问 OpenSearch Service 域;如果该角色已经存在,则会更新并再利用该角色。该端点通过 ML Commons 插件为用于 ML 连接器的远程模型提供服务。

然后使用通过 Amazon Sagemaker 与稀疏编码器集成模板,来创建一个让您的域设置远程推理连接器的 Lambda 函数。在 OpenSearch Service 中创建连接器后,远程推理可以在 SageMaker 运行时中使用该远程模型运行语义搜索。该模板会将域中的模型 ID 返回给您,以便您可以开始搜索。

使用 Amazon SageMaker CloudFormation 模板
  1. https://console.aws.amazon.com/aos/home 打开 Amazon OpenSearch Service 控制台。

  2. 在左侧导航窗格中,选择集成

  3. 在每个 Amazon SageMaker 模板下,选择配置域配置公有域

  4. 按照 CloudFormation 控制台中的提示配置堆栈并设置模型。

注意

OpenSearch Service 还提供了一个单独的模板来配置 VPC 域。如果您使用此模板,则需要提供 Lambda 函数的 VPC ID。

Amazon Bedrock 模板

与 Amazon SageMaker CloudFormation 模板类似,Amazon Bedrock CloudFormation 模板预置了在 OpenSearch Service 和 Amazon Bedrock 之间创建连接器所需的 AWS 资源。

首先,该模板会创建一个 IAM 角色,以允许未来的 Lambda 函数访问您的 OpenSearch Service 域。然后,该模板会创建一个让该域使用 ML Commons 插件创建连接器的 Lambda 函数。OpenSearch Service 创建连接器后,远程推理设置就完成了,您可以使用 Amazon Bedrock API 操作运行语义搜索。

请注意,由于 Amazon Bedrock 托管自己的机器学习模型,因此您无需将模型部署到 SageMaker Runtime。相反,该模板使用了一个为 Amazon BedroCk 预先确定的端点,并跳过了端点预置步骤。

使用 Amazon Bedrock CloudFormation 模板
  1. https://console.aws.amazon.com/aos/home 打开 Amazon OpenSearch Service 控制台。

  2. 在左侧导航窗格中,选择集成

  3. 通过 Amazon Bedrock 与 Amazon Titan 文本嵌入模型集成下,选择配置域配置公有域

  4. 按照提示设置模型。

注意

OpenSearch Service 还提供了一个单独的模板来配置 VPC 域。如果您使用此模板,则需要提供 Lambda 函数的 VPC ID。

此外,OpenSearch Service 还提供了以下 Amazon Bedrock 模板,用来连接 Cohere 模型和 Amazon Titan 多模态嵌入模型:

  • Integration with Cohere Embed through Amazon Bedrock

  • Integrate with Amazon Bedrock Titan Multi-modal