Link Search Menu Expand Document Documentation Menu

神经稀疏搜索

2.11 版引入

语义搜索依赖于基于文本嵌入模型的密集检索。然而,密集方法使用 k-NN 搜索,这会消耗大量内存和 CPU 资源。作为语义搜索的替代方案,神经稀疏搜索使用倒排索引实现,因此与 BM25 一样高效。神经稀疏搜索由稀疏嵌入模型提供支持。当你执行神经稀疏搜索时,它会创建一个稀疏向量(表示条目及其权重的 token: weight 键值对列表),并将数据摄入到排名特征索引中。

为了进一步提升搜索相关性,您可以将神经稀疏搜索与密集语义搜索结合使用混合查询

您可以通过以下方式配置神经稀疏搜索:

  • 自动生成向量嵌入:配置摄入管道,以便在摄入时从文档文本生成并存储稀疏向量嵌入。在查询时,输入纯文本,它将自动转换为向量嵌入进行搜索。有关完整的设置步骤,请参阅自动生成稀疏向量嵌入
  • 直接摄入原始稀疏向量并使用稀疏向量进行搜索。有关完整的设置步骤,请参阅使用原始向量进行神经稀疏搜索

要了解有关将长文本拆分为段落以进行神经稀疏搜索的更多信息,请参阅文本分块

从 OpenSearch 2.15 版本开始,您可以通过创建带有 neural_sparse_two_phase_processor 的搜索管道来显著加速搜索过程。

要创建用于神经稀疏搜索的两阶段处理器搜索管道,请使用以下请求:

PUT /_search/pipeline/two_phase_search_pipeline
{
  "request_processors": [
    {
      "neural_sparse_two_phase_processor": {
        "tag": "neural-sparse",
        "description": "Creates a two-phase processor for neural sparse search."
      }
    }
  ]
}

然后选择要使用搜索管道配置的索引,并将 index.search.default_pipeline 设置为管道名称,如以下示例所示:

PUT /my-nlp-index/_settings 
{
  "index.search.default_pipeline" : "two_phase_search_pipeline"
}

有关 two_phase_search_pipeline 的信息,请参阅神经稀疏查询两阶段处理器

文本分块

有关在生成嵌入之前将大型文档拆分为较小段落的信息,请参阅文本分块

延伸阅读


相关文章

剩余 350 字符

有问题?

想做贡献?