重新排序
编辑重新排序
编辑许多搜索系统都是基于多阶段检索管道构建的。
早期阶段使用廉价、快速的算法来查找一组广泛的可能匹配项。
后期阶段使用更强大的模型(通常是基于机器学习的模型)来重新排序文档。此步骤称为重新排序。由于仅对较小的预过滤结果集应用资源密集型模型,因此这种方法可以在优化搜索性能和计算成本的同时返回更相关的结果。
Elasticsearch 支持各种排序和重新排序技术,以优化搜索相关性和性能。
两阶段检索管道
编辑初始检索
编辑全文搜索:BM25 评分
编辑Elasticsearch 根据词频和逆文档频率对文档进行排序,并根据文档长度进行调整。BM25 是 Elasticsearch 中默认的统计评分算法。
向量搜索:相似度评分
编辑向量搜索涉及将数据转换为密集或稀疏向量嵌入以捕捉语义含义,并计算查询向量的相似度分数。使用 semantic_text
字段存储向量以进行自动推理和向量化,或者在需要更多控制底层嵌入模型时使用 dense_vector
和 sparse_vector
字段。使用 semantic
、knn
或 sparse_vector
查询查询向量字段以计算相似度分数。有关更多信息,请参阅语义搜索。
混合技术
编辑混合搜索技术结合了全文搜索和向量搜索管道的结果。Elasticsearch 允许使用倒排秩融合 (RRF) 算法组合词法匹配 (BM25) 和向量搜索分数。
重新排序
编辑使用以下高级重新排序管道时,第一阶段检索机制有效地生成了一组候选者。这些候选者被送入重新排序器以执行更耗费计算的重新排序任务。
语义重新排序
编辑语义重新排序 使用机器学习模型根据搜索结果与查询的语义相似性重新排序搜索结果。模型可以直接托管在 Elasticsearch 集群中,或者您可以使用推理端点 来调用第三方服务提供的模型。语义重新排序可在现有的全文搜索索引上启用开箱即用的语义搜索功能。
学习排序 (LTR)
编辑学习排序 适用于高级用户。学习排序涉及训练机器学习模型以构建搜索体验的排序函数,该函数会随着时间的推移而更新。当您拥有充足的训练数据并需要高度定制的相关性调整时,LTR 最适合。