混合搜索重温:在 Elasticsearch 中引入线性检索器!

了解线性检索器如何利用加权分数和 MinMax 归一化来增强混合搜索,从而获得更精确、更一致的排名,并学习如何使用它。

Elasticsearch 拥有众多新功能,可帮助您为您的用例构建最佳的搜索解决方案。在我们关于构建现代 Search AI 体验的实践网络研讨会上,您将学习如何将其付诸实践。您也可以开始免费云服务试用,或立即在您的本地计算机上试用 Elastic。

上一篇博文中,我们介绍了重新设计的 "从零开始 "检索器框架,它可以创建复杂的排名管道。我们还探讨了互易排名融合(RRF)检索器如何通过合并不同查询的结果来实现混合搜索。虽然 RRF 很容易实现,但它有一个明显的局限性:它只关注相对排名,而忽略了实际得分。这就给微调和优化带来了挑战。

直线型寻回犬

在本篇文章中,我们将介绍linear retriever,它是我们支持混合搜索的最新成员!与rrf 不同,linear retriever 计算的是与文档匹配的所有查询的加权总和。这种方法既能保留结果集中每个文档的相对重要性,又能精确控制每个查询对最终得分的影响。因此,它为微调混合搜索提供了一种更直观、更灵活的方式。

定义一个线性检索器,其最终得分的计算公式为

score=5knn+1.5bm25score = 5 * knn + 1.5 * bm25

就这么简单:

注意到它有多简单直观了吗?(与rrf 非常相似!)这种配置允许您精确控制每种查询类型对最终排名的贡献程度,这与rrf 不同,后者仅依赖于相对排名。

需要注意的是:knn 分数可能有严格的界限,这取决于所使用的相似性指标。例如,使用余弦相似度或单位归一化向量的点积,得分总是在[0, 1] 范围内。相比之下,bm25 分数的可预测性较差,而且没有明确的界限。

评分缩放:KNN vs BM25

混合搜索面临的一个挑战是,不同的检索器会产生不同的分数。例如,请考虑以下情况:

查询 A 得分:

doc1doc2doc3文档4
knn0.3470.350.3480.346
bm251001.510.5

查询 B 得分:

doc1doc2doc3文档4
knn0.3470.350.3480.346
bm250.630.010.30.4

您可以从上面看到这种差异:kNN 分数介于 0 和 1 之间,而bm25 分数可能相差悬殊。这种差异使得设置静态最佳权重以合并结果变得非常棘手。

归一化拯救:MinMax 归一化器

为了解决这个问题,我们引入了一个可选的minmax 归一化器,该归一化器使用以下公式将每个查询的分数独立缩放至[0, 1] 范围:

normalizedscore=(scoremin)/(maxmin)normalized_score = (score - min) / (max - min)

这就保留了每个文档在查询结果集中的相对重要性,从而更容易合并来自不同检索器的得分。正常化后,分数变为

查询 A 得分:

doc1doc2doc3文档4
knn0.3470.350.3480.346
bm251.000.010.0050.000

查询 B 得分:

doc1doc2doc3文档4
knn0.3470.350.3480.346
bm251.000.0000.4650.645

现在,所有得分都在[0, 1] 范围内,加权总和的优化也更加简单明了,因为我们现在捕捉的是结果的重要性(相对于查询而言),而不是绝对得分,并能在不同查询中保持一致。

线性寻回器示例

现在,让我们通过一个例子来展示上述内容,以及linear Retriever 如何解决rrf 的一些不足之处。RRF 仅依靠相对排名,不考虑实际分数差异。例如,给出这些分数:

doc1doc2doc3文档4
knn0.3470.350.3480.346
bm251001.510.5
rrf 分数0.032260.032520.032000.03125

rrf 会将文件排序为

doc2>doc1>doc3>doc4doc2 > doc1 > doc3 > doc4

但是,doc1 的bm25 得分明显高于其他文件,而rrf 只查看相对排名,因此未能捕捉到这一点。linear Retriever 结合归一化处理,可以正确地考虑分数及其差异,从而得出更有意义的排名:

doc1doc2doc3文档4
knn0.3470.350.3480.346
bm2510.010.0050

如上图所示,doc1 的优秀排名和scorebm25 都得到了适当的考虑,并反映在最终得分上。此外,所有分数现在都在[0, 1] 范围内,这样我们就能以更直观的方式对它们进行比较和组合(甚至建立离线优化流程)。

将所有内容整合在一起

要充分利用linear 检索器的正常化功能,搜索请求应如下所示:

这种方法结合了两方面的优点:既保留了linear Retriever 的灵活性和直观评分,又通过 MinMax 归一化确保了一致的评分缩放。

与我们所有的检索工具一样,linear 检索工具可以集成到分层检索树的任何层级中,并支持可解释性、匹配高亮、字段折叠等功能。

何时选择线性寻回犬,为什么会有区别

linear 猎犬:

  • 通过利用实际得分,而不仅仅是排名,来保留相对重要性。
  • 允许利用不同查询的加权贡献进行微调。
  • 利用规范化增强一致性,使混合搜索更稳健、更可预测。

结论

linear retriever 已经在 Elasticsearch Serverless 以及 8.18 和 9.0 版本中可用!更多示例和配置参数可参阅我们的文档。试用一下,看看它如何改善您的混合搜索体验--我们期待您的反馈。搜索愉快

常见问题

与之前的互易等级融合(RRF)方法相比,线性检索器如何改进混合搜索?

在混合搜索中,线性寻回器比 RRF 具有若干优势。RRF 只关注相对排名,忽略实际得分,而线性检索器则计算查询的加权总和,保留每个文档的相对重要性。这种方法可以更精确地控制不同查询类型对最终排名的影响。此外,线性检索器还支持 MinMax 等归一化技术,从而可以更轻松地组合不同检索器的得分,优化最终搜索结果。这种灵活性和控制性提供了更加直观和微调的混合搜索体验。

相关内容

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。

亲自试用