神经稀疏搜索
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
的信息,请参阅神经稀疏查询两阶段处理器。
文本分块
有关在生成嵌入之前将大型文档拆分为较小段落的信息,请参阅文本分块。
延伸阅读
- 了解稀疏编码模型如何工作,并在使用稀疏语义编码器改进文档检索中探索 OpenSearch 神经稀疏搜索基准。
- 深入了解神经稀疏搜索及其在OpenSearch 2.12 中更快的语义稀疏检索中的效率。
- 浏览我们的教程,了解如何构建 AI 搜索应用程序。