重新排序

edit

许多搜索系统是基于多阶段检索管道构建的。

早期阶段使用廉价、快速的算法来找到一组广泛的潜在匹配项。

后期阶段使用更强大的模型,通常是基于机器学习的,来重新排序文档。 这一步骤称为重新排序。 由于资源密集型模型仅应用于预过滤结果的较小集合,这种方法在优化搜索性能和计算成本的同时,返回了更相关的结果。

Elasticsearch 支持各种排名和重新排名技术,以优化搜索相关性和性能。

两阶段检索管道

edit

初始检索

edit

全文搜索:BM25评分

edit

Elasticsearch 根据词频和逆文档频率对文档进行排序,并根据文档长度进行调整。 BM25 是 Elasticsearch 中的默认统计评分算法。

向量搜索:相似度评分

edit

向量搜索涉及将数据转换为密集或稀疏向量嵌入以捕捉语义含义,并计算查询向量的相似度分数。 使用 semantic_text 字段进行自动推理和向量化,或在使用需要更多控制底层嵌入模型时使用 dense_vectorsparse_vector 字段。 使用 semanticknnsparse_vector 查询来查询向量字段以计算相似度分数。 更多信息请参考 语义搜索

混合技术

edit

混合搜索技术结合了全文搜索和向量搜索管道的结果。 Elasticsearch 使用 倒数排名融合(RRF)算法来结合词汇匹配(BM25)和向量搜索分数。

重新排序

edit

在使用以下高级重排序管道时,第一阶段的检索机制有效地生成一组候选对象。这些候选对象被传递到重排序器中,以执行更计算密集型的重排序任务。

语义重排序

edit

语义重排序使用机器学习模型根据搜索结果与查询的语义相似性对其进行重新排序。 模型可以直接托管在您的 Elasticsearch 集群中,或者您可以使用 推理端点 调用由第三方服务提供的模型。 语义重排序使现有全文搜索索引能够开箱即用地实现语义搜索功能。

学习排序 (LTR)

edit

Learning To Rank 适用于高级用户。 Learning To Rank 涉及训练一个机器学习模型,以构建一个随时间更新的搜索体验排序函数。 LTR 最适合在您拥有大量训练数据并需要高度定制的相关性调整时使用。