Link Search Menu Expand Document Documentation Menu

工作流模板

OpenSearch 为一些常见的机器学习 (ML) 用例提供了多种工作流模板。使用模板可以简化复杂的设置,并为语义或会话搜索等用例提供许多默认值。

调用 Create Workflow API 时,可以指定工作流模板。

  • 要使用 OpenSearch 提供的工作流模板,请将模板用例指定为 use_case 查询参数(参见示例)。有关 OpenSearch 提供的模板列表,请参见支持的工作流模板

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

要预置工作流,请将 provision=true 指定为查询参数。

示例

在此示例中,您将配置 semantic_search_with_cohere_embedding_query_enricher 工作流模板。使用此模板创建的工作流执行以下配置步骤:

  • 部署外部托管的 Cohere 模型
  • 使用该模型创建摄入管道
  • 创建一个示例向量索引并配置搜索管道以定义该索引的默认模型 ID

步骤 1:创建并预置工作流

发送以下请求以使用 semantic_search_with_cohere_embedding_query_enricher 工作流模板创建并预置工作流。此模板唯一必需的请求正文字段是 Cohere Embed 模型的 API 密钥:

POST /_plugins/_flow_framework/workflow?use_case=semantic_search_with_cohere_embedding_query_enricher&provision=true
{
    "create_connector.credential.key" : "<YOUR API KEY>"
}

OpenSearch 会为创建的工作流返回一个工作流 ID:

{
  "workflow_id" : "8xL8bowB8y25Tqfenm50"
}

上一步中的工作流创建了一个默认向量索引。默认索引名称为 my-nlp-index

{
  "create_index.name": "my-nlp-index"
}

有关此工作流模板的所有默认参数值,请参见Cohere Embed 语义搜索默认值

步骤 2:将文档摄取到索引中

要将文档摄取到上一步创建的索引中,请发送以下请求

PUT /my-nlp-index/_doc/1
{
  "passage_text": "Hello world",
  "id": "s1"
}

要对您的索引执行向量搜索,请使用 neural 查询子句。

GET /my-nlp-index/_search
{
  "_source": {
    "excludes": [
      "passage_embedding"
    ]
  },
  "query": {
    "neural": {
      "passage_embedding": {
        "query_text": "Hi world",
        "k": 100
      }
    }
  }
}

参数

每个工作流模板都有定义的模式和一组 API,其中包含每个步骤的预定义默认值。有关模板参数默认值的更多信息,请参见支持的工作流模板

覆盖默认值

要覆盖模板的默认值,请在发送创建工作流请求时在请求正文中提供新值。例如,以下请求更改了 Cohere 模型、text_embedding 处理器输出字段的名称以及 semantic_search_with_cohere_embedding 模板的稀疏索引名称:

POST /_plugins/_flow_framework/workflow?use_case=semantic_search_with_cohere_embedding
{
    "create_connector.model" : "embed-multilingual-v3.0",
    "text_embedding.field_map.output": "book_embedding",
    "create_index.name": "sparse-book-index"
}

查看工作流资源

您创建的工作流已预置了语义搜索所需的所有资源。要查看预置的资源,请调用 Get Workflow Status API 并提供您的工作流的 workflowID

GET /_plugins/_flow_framework/workflow/8xL8bowB8y25Tqfenm50/_status

支持的工作流模板

要使用工作流模板,请在创建工作流时将其指定为 use_case 查询参数。支持以下模板:

支持以下模板:

模型部署模板

以下工作流模板配置模型部署。

Amazon Bedrock Titan 嵌入

此工作流创建并部署 Amazon Bedrock 嵌入模型(默认为 titan-embed-text-v1)。

  • 用例bedrock_titan_embedding_model_deploy
  • 创建的组件:Amazon Bedrock Titan 嵌入模型的连接器和模型
  • 必需参数:
    • create_connector.credential.access_key
    • create_connector.credential.secret_key
    • create_connector.credential.session_token
  • 默认值

注意:需要 AWS 凭证和对 Amazon Bedrock 的访问权限。

Amazon Bedrock Titan 多模态

此工作流创建并部署 Amazon Bedrock 多模态嵌入模型(默认为 titan-embed-image-v1)。

  • 用例bedrock_titan_multimodal_model_deploy
  • 创建的组件:Amazon Bedrock Titan 多模态嵌入的连接器和模型
  • 必需参数:
    • create_connector.credential.access_key
    • create_connector.credential.secret_key
    • create_connector.credential.session_token
  • 默认值

注意:需要 AWS 凭证和对 Amazon Bedrock 的访问权限。

Cohere 嵌入

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

  • 用例cohere_embedding_model_deploy
  • 创建的组件:Cohere 嵌入的连接器和模型
  • 必需参数:
    • create_connector.credential.key
  • 默认值

注意:需要 Cohere API 密钥。

Cohere 聊天

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

  • 用例cohere_chat_model_deploy
  • 创建的组件:Cohere 聊天的连接器和模型
  • 必需参数:
    • create_connector.credential.key
  • 默认值

注意:需要 Cohere API 密钥。

OpenAI 嵌入

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

  • 用例open_ai_embedding_model_deploy
  • 创建的组件:OpenAI 嵌入的连接器和模型
  • 必需参数:
    • create_connector.credential.key
  • 默认值

注意:需要 OpenAI API 密钥。

OpenAI 聊天

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

  • 用例openai_chat_model_deploy
  • 创建的组件:OpenAI 聊天的连接器和模型
  • 必需参数:
    • create_connector.credential.key
  • 默认值

注意:需要 OpenAI API 密钥。

语义搜索模板

以下工作流模板配置语义搜索。

此工作流配置语义搜索

  • 用例semantic_search
  • 创建的组件:
    • text_embedding 处理器的摄入管道
    • 配置了管道的向量索引
  • 必需参数:
    • create_ingest_pipeline.model_id:要使用的文本嵌入模型的模型 ID
  • 默认值

带查询增强器的语义搜索

此工作流为神经查询配置了带默认模型的语义搜索

  • 用例semantic_search_with_query_enricher
  • 创建的组件:
    • text_embedding 处理器的摄入管道
    • 配置了管道的向量索引
    • 一个 query_enricher 搜索处理器,用于为神经查询设置默认模型 ID。
  • 必需参数:
    • create_ingest_pipeline.model_id:要使用的文本嵌入模型的模型 ID
  • 默认值

使用本地模型的语义搜索

此工作流配置语义搜索并部署预训练模型。

  • 用例semantic_search_with_local_model
  • 创建的组件:
    • 一个预训练模型(默认为 huggingface/sentence-transformers/paraphrase-MiniLM-L3-v2
    • text_embedding 处理器的摄入管道
    • 配置了管道的向量索引
    • 一个 query_enricher 搜索处理器,用于为神经查询设置默认模型 ID。
  • 必需参数:无
  • 默认值

注意:使用带有默认配置的本地预训练模型。

使用 Cohere 嵌入模型的语义搜索

此工作流配置语义搜索并部署 Cohere 嵌入模型。

  • 用例semantic_search_with_cohere_embedding
  • 创建的组件:
    • 一个 Cohere 嵌入模型(默认为 embed-english-v3.0)连接器和部署
    • text_embedding 处理器的摄入管道
    • 配置了管道的向量索引
  • 必需参数:
    • create_connector.credential.key:Cohere 模型的 API 密钥
  • 默认值

注意:需要 Cohere API 密钥。

使用带查询增强器的 Cohere 嵌入模型的语义搜索

此工作流配置语义搜索,部署 Cohere 嵌入模型,并添加查询增强器搜索处理器。

  • 用例semantic_search_with_cohere_embedding_query_enricher
  • 创建的组件:
    • 一个 Cohere 嵌入模型连接器和部署
    • text_embedding 处理器的摄入管道
    • 配置了管道的向量索引
    • 一个 query_enricher 搜索处理器,用于为神经查询设置默认模型 ID。
  • 必需参数:
    • create_connector.credential.key:Cohere 模型的 API 密钥
  • 默认值

注意:需要 Cohere API 密钥。

使用带重新索引的 Cohere 嵌入模型的语义搜索

此工作流使用 Cohere 嵌入模型配置语义搜索并重新索引现有索引。

  • 用例semantic_search_with_reindex
  • 创建的组件:
    • 一个 Cohere 嵌入模型连接器和部署
    • 配置了管道的向量索引
    • 重新索引过程
  • 必需参数:
    • create_connector.credential.key:Cohere 模型的 API 密钥
    • reindex.source_index:要重新索引的源索引
  • 默认值

注意:使用 Cohere 嵌入模型将源索引重新索引到新配置的 k-NN 索引中。

神经稀疏搜索模板

以下工作流模板配置神经稀疏搜索

此工作流配置神经稀疏搜索

  • 用例local_neural_sparse_search_bi_encoder
  • 创建的组件:
    • 一个本地托管的预训练稀疏编码模型(默认为 amazon/neural-sparse/opensearch-neural-sparse-encoding-v1
    • sparse_encoding 处理器的摄入管道
    • 配置了管道的向量索引
  • 必需参数:无
  • 默认值

多模态搜索模板

以下工作流模板配置多模态搜索

此工作流配置多模态搜索

  • 用例: multimodal_search
  • 创建的组件:
    • 一个带text_image_embedding处理器的摄取管道
    • 配置了管道的向量索引
  • 必需参数:
    • create_ingest_pipeline.model_id: 要使用的多模态嵌入模型的模型ID
  • 默认值

使用 Amazon Bedrock Titan 进行多模态搜索

此工作流部署一个Amazon Bedrock多模态模型并配置一个多模态搜索管道。

  • 用例: multimodal_search_with_bedrock_titan
  • 创建的组件:
    • 一个Amazon Bedrock Titan多模态嵌入模型连接器和部署
    • 一个带text_image_embedding处理器的摄取管道
    • 一个与管道一起配置的用于多模态搜索的向量索引
  • 必需参数:
    • create_connector.credential.access_key
    • create_connector.credential.secret_key
    • create_connector.credential.session_token
  • 默认值

注意:需要 AWS 凭证和对 Amazon Bedrock 的访问权限。

混合搜索模板

以下工作流模板配置混合搜索

此工作流配置混合搜索

  • 用例: hybrid_search
  • 创建的组件:
    • 一个摄取管道
    • 配置了管道的向量索引
    • 一个带normalization_processor的搜索管道
  • 必需参数:
    • create_ingest_pipeline.model_id:要使用的文本嵌入模型的模型 ID
  • 默认值

使用本地模型的混合搜索

此工作流配置混合搜索并部署一个预训练模型。

  • 用例: hybrid_search_with_local_model
  • 创建的组件:
    • 一个预训练模型(默认为 huggingface/sentence-transformers/paraphrase-MiniLM-L3-v2
    • 一个摄取管道
    • 配置了管道的向量索引
    • 一个带normalization_processor的搜索管道
  • 必需参数:无
  • 默认值

注意: 使用本地预训练模型进行混合搜索配置。

会话搜索模板

以下工作流模板配置带RAG的对话式搜索

使用 LLM 进行会话搜索

此工作流部署一个大型语言模型并配置一个对话式搜索管道。

  • 用例: conversational_search_with_llm_deploy
  • 创建的组件:
    • 一个聊天模型(默认为Cohere Command)连接器和部署
    • 一个带retrieval_augmented_generation处理器的搜索管道
  • 必需参数:
    • create_connector.credential.key: LLM的API密钥
  • 默认值

注意: 所选语言模型需要API密钥。