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