Link Search Menu Expand Document Documentation Menu

神经稀疏查询

2.11 版引入

神经稀疏搜索中使用neural_sparse查询进行向量字段搜索。

您可以通过以下方式运行查询:

  • 提供稀疏向量嵌入以进行匹配。有关更多信息,请参阅使用原始向量的神经稀疏搜索
    "neural_sparse": {
      "<vector_field>": {
        "query_tokens": {
          "<token>": <weight>,
          ...
        }
      }
    }
    
  • 提供要分词的文本并用于匹配。要对文本进行分词,您可以使用以下组件:
    • 内置 DL 模型分析器
      "neural_sparse": {
        "<vector_field>": {
          "query_text": "<input text>",
          "analyzer": "bert-uncased"
        }
      }
      
    • 分词器模型
      "neural_sparse": {
        "<vector_field>": {
          "query_text": "<input text>",
          "model_id": "<model ID>"
        }
      }
      

    有关更多信息,请参阅自动生成稀疏向量嵌入

请求正文字段

顶级vector_field指定了要运行搜索查询的向量字段。您必须指定query_textquery_tokens来定义输入。以下字段可用于配置查询:

字段 数据类型 必需/可选 描述
query_text 字符串 可选 要转换为稀疏向量嵌入的查询文本。必须指定query_textquery_tokens之一。
分析器 字符串 可选 query_text一起使用。指定用于对查询文本进行分词的内置 DL 模型分析器。有效值为bert-uncasedmbert-uncased。默认为bert-uncased。如果未指定model_idanalyzer,则使用默认分析器(bert-uncased)对文本进行分词。不能与model_id同时指定。有关更多信息,请参阅DL 模型分析器
model_id 字符串 可选 query_text一起使用。用于从查询文本生成向量嵌入的稀疏编码模型(用于双编码器模式)或分词器(用于仅文档模式)的 ID。模型/分词器必须先部署在 OpenSearch 中才能在神经稀疏搜索中使用。有关更多信息,请参阅在 OpenSearch 中使用自定义模型自动生成稀疏向量嵌入。有关在神经稀疏查询中设置默认模型 ID 的信息,请参阅neural_query_enricher。不能与analyzer同时指定。
query_tokens 词元(字符串)到权重(浮点数)的映射 可选 一种以词元及其权重形式表示的原始稀疏向量。用作query_text的替代方案,用于直接向量输入。必须指定query_textquery_tokens之一。
max_token_score 浮点型 可选 (已废弃)此参数自 OpenSearch 2.12 起已废弃。它仅为向后兼容而保留,不再影响功能。该参数仍可在请求中提供,但其值无效。此前,它用于表示词汇表中所有词元分数的理论上限。

示例

要使用分析器分词的文本运行搜索,请在请求中指定一个analyzer。该分析器必须与您在摄入时用于文本分析的模型兼容。

GET my-nlp-index/_search
{
  "query": {
    "neural_sparse": {
      "passage_embedding": {
        "query_text": "Hi world",
        "analyzer": "bert-uncased"
      }
    }
  }
}

有关更多信息,请参阅DL 模型分析器

如果您未指定分析器,则使用默认的bert-uncased分析器。

GET my-nlp-index/_search
{
  "query": {
    "neural_sparse": {
      "passage_embedding": {
        "query_text": "Hi world"
      }
    }
  }
}

要使用分词器模型分词的文本进行搜索,请在请求中提供模型 ID。

GET my-nlp-index/_search
{
  "query": {
    "neural_sparse": {
      "passage_embedding": {
        "query_text": "Hi world",
        "model_id": "aP2Q8ooBpBj3wT4HVS8a"
      }
    }
  }
}

要使用稀疏向量进行搜索,请在query_tokens参数中提供稀疏向量。

GET my-nlp-index/_search
{
  "query": {
    "neural_sparse": {
      "passage_embedding": {
        "query_tokens": {
          "hi" : 4.338913,
          "planets" : 2.7755864,
          "planet" : 5.0969057,
          "mars" : 1.7405145,
          "earth" : 2.6087382,
          "hello" : 3.3210192
        }
      }
    }
  }
}

后续步骤

剩余 350 字符

有问题?

想要贡献?