工作流模板
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"
}
步骤 3:执行向量搜索
要对您的索引执行向量搜索,请使用 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
处理器的摄入管道 - 配置了管道的向量索引
- 一个 Cohere 嵌入模型(默认为
- 必需参数:
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密钥。