语义查询增强处理器

语义查询增强处理器(Semantic Query Enricher Processor) #

需要 AI 插件

semantic_query_enricher 查询重写处理器用于拦截搜索请求,自动为其中的语义查询(semantic / hybrid 等基于 Embedding 模型的查询)注入模型连接信息(URL、API Key、vendor、model ID),使用户在编写查询时无需手动指定这些参数。

工作原理 #

当搜索请求到达管道时,处理器会遍历查询树,找到所有继承自 ModelBaseQueryBuilder 的查询节点(如 semantic 查询、hybrid 查询中的语义子查询),并为它们绑定 Embedding 请求参数:

  1. 从处理器配置中读取 urlvendorapi_key
  2. 根据 default_model_idvector_field_model_id 为每个语义查询字段分配模型 ID
  3. 用户只需在查询中写 semantic 查询和查询文本,无需关心模型连接细节

请求体字段 #

字段类型是否必填说明
urlStringEmbedding 模型服务的 URL
vendorString模型提供商标识(如 openaidashscopeollama 等)
api_keyString模型服务的 API Key。存储时会自动加密
default_model_idString条件必填默认模型 ID,应用于所有未指定模型的语义查询字段。与 vector_field_model_id 至少提供一个
vector_field_model_idObject条件必填按向量字段指定模型 ID 的映射。格式:{"field_name": "model_id"}。与 default_model_id 至少提供一个
tagString处理器标识标签
descriptionString处理器描述
ignore_failureBoolean处理器失败时是否继续执行。默认 false

示例 #

使用全局默认模型 #

PUT /_search/pipeline/my_semantic_pipeline
{
  "rewrite_processors": [
    {
      "semantic_query_enricher": {
        "tag": "enricher",
        "description": "为语义查询注入 Embedding 模型信息",
        "url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
        "vendor": "openai",
        "api_key": "sk-xxxxxxxx",
        "default_model_id": "text-embedding-v3"
      }
    }
  ]
}

配置管道后,用户查询只需写:

GET /my_index/_search?search_pipeline=my_semantic_pipeline
{
  "query": {
    "semantic": {
      "embedding": {
        "query_text": "如何配置集群安全"
      }
    }
  }
}

处理器会自动为 semantic 查询注入 Embedding 服务连接信息。

按字段指定不同模型 #

当索引中不同向量字段使用不同 Embedding 模型时:

PUT /_search/pipeline/multi_model_pipeline
{
  "rewrite_processors": [
    {
      "semantic_query_enricher": {
        "url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
        "vendor": "openai",
        "api_key": "sk-xxxxxxxx",
        "vector_field_model_id": {
          "title_embedding": "text-embedding-v3",
          "content_embedding": "text-embedding-v2"
        }
      }
    }
  ]
}

相关文档 #