在 OpenSearch Service 中创建 ML 连接器 - Amazon OpenSearch Service

在 OpenSearch Service 中创建 ML 连接器

借助 Amazon OpenSearch Service 流框架模板,您可以使用 ml-commons 中提供的 create connector API 来配置和安装 ML 连接器。您可以使用 ML 连接器将 OpenSearch Service 连接到其他 AWS 服务或第三方平台。有关这方面的更多信息,请参阅 Creating connectors for third-party ML platforms。借助 Amazon OpenSearch Service 流框架 API,您可以自动完成 OpenSearch Service 设置和预处理任务,并且可用于创建 ML 连接器。

您必须首先完成以下操作,然后才能在 OpenSearch Service 中创建连接器:

  • 创建一个 Amazon SageMaker AI 域。

  • 创建一个 IAM 角色。

  • 配置传递角色权限

  • 在 OpenSearch 控制面板中映射 flow-framework 和 ml-commons 角色。

有关如何为 AWS 服务设置 ML 连接器的更多信息,请参阅适用于 AWS 服务的 Amazon OpenSearch Service ML 连接器。要了解有关将 OpenSearch Service ML 连接器与第三方平台结合使用的更多信息,请参阅适用于第三方平台的 Amazon OpenSearch Service ML 连接器

通过 flow-framework 服务创建连接器

要使用连接器创建 flow-framework 模板,您需要向 OpenSearch Service 域端点发送 POST 请求。您可以使用 cURL、示例 Python 客户端、Postman 或其他方法来发送已签名的请求。POST 请求的格式如下:

POST /_plugins/_flow_framework/workflow { "name": "Deploy Claude Model", "description": "Deploy a model using a connector to Claude", "use_case": "PROVISION", "version": { "template": "1.0.0", "compatibility": [ "2.12.0", "3.0.0" ] }, "workflows": { "provision": { "nodes": [ { "id": "create_claude_connector", "type": "create_connector", "user_inputs": { "name": "Claude Instant Runtime Connector", "version": "1", "protocol": "aws_sigv4", "description": "The connector to Bedrock service for Claude model", "actions": [ { "headers": { "x-amz-content-sha256": "required", "content-type": "application/json" }, "method": "POST", "request_body": "{ \"prompt\":\"${parameters.prompt}\", \"max_tokens_to_sample\":${parameters.max_tokens_to_sample}, \"temperature\":${parameters.temperature}, \"anthropic_version\":\"${parameters.anthropic_version}\" }", "action_type": "predict", "url": "https://bedrock-runtime.us-west-2.amazonaws.com/model/anthropic.claude-instant-v1/invoke" } ], "credential": { "roleArn": "arn:aws:iam::account-id:role/opensearch-secretmanager-role" }, "parameters": { "endpoint": "bedrock-runtime.us-west-2.amazonaws.com", "content_type": "application/json", "auth": "Sig_V4", "max_tokens_to_sample": "8000", "service_name": "bedrock", "temperature": "0.0001", "response_filter": "$.completion", "region": "us-west-2", "anthropic_version": "bedrock-2023-05-31" } } } ] } } }

如果域位于某个虚拟私有云(Amazon VPC)中,则必须连接到该 Amazon VPC,才能确保请求能够成功创建 AI 连接器。访问 Amazon VPC 的方法因网络配置而异,但通常会涉及连接到某个 VPN 或企业网络。要检查您是否可以访问 OpenSearch Service 域,请在 Web 浏览器中导航到 https://your-vpc-domain.region.es.amazonaws.com 并验证您是否收到默认的 JSON 响应。(将占位符文本替换为您自己的值。

示例 Python 客户端

Python 客户端比 HTTP 请求更容易自动化,且具有更好的可重用性。要使用 Python 客户端创建 AI 连接器,请将以下示例代码保存到 Python 文件中。客户端需要适用于 Python 的 AWS SDK(Boto3)Requests:HTTP for Humansrequests-aws4auth 1.2.3 软件包。

import boto3 import requests from requests_aws4auth import AWS4Auth host = 'domain-endpoint/' region = 'region' service = 'es' credentials = boto3.Session().get_credentials() awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token) path = '_plugins/_flow_framework/workflow' url = host + path payload = { "name": "Deploy Claude Model", "description": "Deploy a model using a connector to Claude", "use_case": "PROVISION", "version": { "template": "1.0.0", "compatibility": [ "2.12.0", "3.0.0" ] }, "workflows": { "provision": { "nodes": [ { "id": "create_claude_connector", "type": "create_connector", "user_inputs": { "name": "Claude Instant Runtime Connector", "version": "1", "protocol": "aws_sigv4", "description": "The connector to Bedrock service for Claude model", "actions": [ { "headers": { "x-amz-content-sha256": "required", "content-type": "application/json" }, "method": "POST", "request_body": "{ \"prompt\":\"${parameters.prompt}\", \"max_tokens_to_sample\":${parameters.max_tokens_to_sample}, \"temperature\":${parameters.temperature}, \"anthropic_version\":\"${parameters.anthropic_version}\" }", "action_type": "predict", "url": "https://bedrock-runtime.us-west-2.amazonaws.com/model/anthropic.claude-instant-v1/invoke" } ], "credential": { "roleArn": "arn:aws:iam::account-id:role/opensearch-secretmanager-role" }, "parameters": { "endpoint": "bedrock-runtime.us-west-2.amazonaws.com", "content_type": "application/json", "auth": "Sig_V4", "max_tokens_to_sample": "8000", "service_name": "bedrock", "temperature": "0.0001", "response_filter": "$.completion", "region": "us-west-2", "anthropic_version": "bedrock-2023-05-31" } } } ] } } } headers = {"Content-Type": "application/json"} r = requests.post(url, auth=awsauth, json=payload, headers=headers) print(r.status_code) print(r.text)

预定义的工作流模板

Amazon OpenSearch Service 针对一些常见的机器学习(ML)用例提供了若干工作流模板。使用模板可以简化复杂的设置,并为语义搜索或对话搜索等用例提供多种默认值。您可以在调用 Create Workflow API 时指定工作流模板。

  • 要使用 OpenSearch Service 提供的工作流模板,请将模板用例指定为 use_case 查询参数。

  • 要使用自定义工作流模板,请在请求正文中提供完整的模板。有关自定义模板的示例,请参阅示例 JSON 模板或示例 YAML 模板。

模板用例

下表概述了各种可用的模板、模板的描述以及所需的参数。

模板用例 描述 必需参数

bedrock_titan_embedding_model_deploy

创建并部署 Amazon Bedrock 嵌入模型(默认为 titan-embed-text-v1

create_connector.credential.roleArn

bedrock_titan_embedding_model_deploy

创建并部署 Amazon Bedrock 多模态嵌入模型(默认为 titan-embed-text-v1

create_connector.credential.roleArn

cohere_embedding_model_deploy

创建并部署 Cohere 嵌入模型(默认为 embed-english v3.0)。

create_connector.credential.roleArn, create_connector.credential.secretArn

cohere_chat_model_deploy

创建并部署 Cohere 聊天模型(默认为 Cohere Command)。

create_connector.credential.roleArn, create_connector.credential.secretArn

open_ai_embedding_model_deploy

创建并部署 OpenAI 嵌入模型(默认为 text-embedding-ada-002)。

create_connector.credential.roleArn, create_connector.credential.secretArn

openai_chat_model_deploy

创建并部署 OpenAI 聊天模型(默认为 gpt-3.5-turbo)。

create_connector.credential.roleArn, create_connector.credential.secretArn

semantic_search_with_cohere_embedding

配置语义搜索并部署 Cohere 嵌入模型。您必须提供 Cohere 模型的 API 密钥。

create_connector.credential.roleArn, create_connector.credential.secretArn

semantic_search_with_cohere_embedding_query_enricher

配置语义搜索并部署 Cohere 嵌入模型。添加一个 query_enricher 搜索处理器,用于设置神经查询的默认模型 ID。您必须提供 Cohere 模型的 API 密钥。

create_connector.credential.roleArn, create_connector.credential.secretArn

multimodal_search_with_bedrock_titan

部署 Amazon Bedrock 多模态模型,并配置一个具有 text_image_embedding 处理器和用于多模态搜索的 k-nn 索引的摄取管道。您必须提供 AWS 凭证

create_connector.credential.roleArn

注意

对于所有需要密钥 ARN 的模板,系统会默认使用密钥名称“key”将该密钥存储在 AWS Secrets Mangager 中。

包含预训练模型的默认模板

Amazon OpenSearch Service 另外提供了两个在开源 OpenSearch Service 中没有的默认工作流模板。

模板用例 描述

semantic_search_with_local_model

配置语义搜索并部署预训练模型 (msmarco-distilbert-base-tas-b)。添加 neural_query_enricher 搜索处理器,该处理器将设置一个用于神经查询的默认模型 ID,并创建一个名为“my-nlp-index”的关联 k-NN 索引。

hybrid_search_with_local_model

配置混合搜索并部署预训练模型 (msmarco-distilbert-base-tas-b)。添加 neural_query_enricher 搜索处理器,该处理器将设置一个用于神经查询的默认模型 ID,并创建一个名为“my-nlp-index”的关联 k-NN 索引。