OpenSearch 服务流框架模板 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

OpenSearch 服务流框架模板

Amazon S OpenSearch ervice 流程框架模板允许您通过为常见用例提供模板来自动执行复杂的 OpenSearch 服务设置和预处理任务。例如,您可以使用流程框架模板来自动执行机器学习设置任务。Amazon OpenSearch 服务流程框架模板在 JSON 或 YAML 文档中简要描述了设置过程。这些模板描述了用于对话聊天或查询生成的自动工作流程配置、AI 连接器、工具、代理和其他组件,这些组件可为生成模型的后端 OpenSearch 服务做好准备。

Amazon OpenSearch 服务流程框架模板可以根据您的特定需求进行自定义。要查看自定义流程框架模板的示例,请参阅 fl ow-f ramework。有关 OpenSearch 服务提供的模板,请参阅工作流程模板。有关全面的文档,包括详细步骤、API 参考和所有可用设置的参考,请参阅开源 OpenSearch 文档中的自动配置

在 OpenSearch 服务中创建 ML 连接器

亚马逊 OpenSearch 服务流程框架模板允许您使用 ml-commons 中提供的创建连接器 API 来配置和安装机器学习连接器。您可以使用机器学习连接器将 OpenSearch 服务连接到其他 Amazon 服务或第三方平台。有关这方面的更多信息,请参阅为第三方 ML 平台创建连接器。Amazon S OpenSearch ervice Flow framework API 允许您自动执行 OpenSearch 服务设置和预处理任务,并可用于创建机器学习连接器。

在 S OpenSearch ervice 中创建连接器之前,必须执行以下操作:

  • 创建一个 Amazon SageMaker 域名。

  • 创建一个 IAM 角色。

  • 配置通行证角色权限。

  • 在仪表板中映射流程框架和 ml-commons 角色。 OpenSearch

有关如何为服务设置机器学习连接器的更多信息,请参阅 Amazon 服务的 Amazon OpenSearch 服务 ML 连接器。 Amazon 要了解有关在第三方平台上使用 OpenSearch 服务 ML 连接器的更多信息,请参阅适用于第三方平台的 Amazon OpenSearch 服务 ML 连接器

通过流程框架服务创建连接器

要使用连接器创建流程框架模板,您需要向您的 OpenSearch 服务域终端节点发送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 服务域,请在 Web 浏览器https://your-vpc-domain.region.es.amazonaws.com中导航到并确认收到默认 JSON 响应。

示例 Python 客户端

Python 客户端比HTTP请求更易于自动化,并且具有更好的可重用性。要使用 Python 客户端创建 AI 连接器,请将以下示例代码保存到 Python 文件中。客户端需要适用于 Python 的Amazon SDK (Boto3)、适用于人类的 reque sts: HTTP 和 request s-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 S OpenSearch ervice 为一些常见的机器学习 (ML) 用例提供了多个工作流程模板。使用模板可以简化复杂的设置,并为语义搜索或对话搜索等用例提供许多默认值。您可以在调用 “创建工作流 API” 时指定工作流模板。

  • 要使用 OpenSearch 服务提供的工作流模板,请将模板用例指定为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-v 3.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 索引配置采集管道。您必须提供您的 Amazon 凭证。

create_connector.credential.roleArn

注意

对于所有需要秘密 ARN 的模板,默认设置是将密钥名称为 “key” 的密钥存储在 Secr Amazon ets mangager 中。

带有预训练模型的默认模板

Amazon Ser OpenSearch vice 另外提供了两个开 OpenSearch 源服务中没有的默认工作流程模板。

模板用例 描述

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 索引。

配置 权限

如果您使用版本 2.13 或更高版本创建新域,则权限已经到位。如果您在先前存在的 2.11 或更早版本的 OpenSearch 服务域上启用流程框架,然后升级到 2.13 或更高版本,则必须定义角色。flow_framework_manager必须将非管理员用户映射到此角色,才能使用精细访问控制管理域上的温索引。手动创建 flow_framework_manager 角色,请执行下列步骤:

  1. 在 “ OpenSearch 控制面板” 中,转至 “安全”,然后选择 “权限”。

  2. 选择创建操作组并配置以下组:

    组名 权限
    flow_framework_full_access
    • cluster:admin/opensearch/flow_framework/*

    • cluster_monitor

    flow_framework_read_accesss
    • cluster:admin/opensearch/flow_framework/workflow/get

    • cluster:admin/opensearch/flow_framework/workflow/search

    • cluster:admin/opensearch/flow_framework/workflow_state/get

    • cluster:admin/opensearch/flow_framework/workflow_state/search

  3. 选择角色创建角色

  4. 为角色命名 flow_framework_manager

  5. 对于群集权限,选择 flow_framework_full_accessflow_framework_read_access

  6. 对于索引,键入 *

  7. 对于索引权限,选择 indices:admin/aliases/getindices:admin/mappings/getindices_monitor

  8. 选择创建

  9. 创建角色后,将其映射到任何将管理流程框架索引的用户或后端角色。