Elasticsearch 拥有众多新功能,可帮助您为您的用例构建最佳的搜索解决方案。在我们关于构建现代 Search AI 体验的实践网络研讨会上,您将学习如何将其付诸实践。您也可以开始免费云服务试用,或立即在您的本地计算机上试用 Elastic。
在上一篇博文中,我们介绍了重新设计的 "从零开始 "检索器框架,它可以创建复杂的排名管道。我们还探讨了互易排名融合(RRF)检索器如何通过合并不同查询的结果来实现混合搜索。虽然 RRF 很容易实现,但它有一个明显的局限性:它只关注相对排名,而忽略了实际得分。这就给微调和优化带来了挑战。
直线型寻回犬
在本篇文章中,我们将介绍linear retriever,它是我们支持混合搜索的最新成员!与rrf 不同,linear retriever 计算的是与文档匹配的所有查询的加权总和。这种方法既能保留结果集中每个文档的相对重要性,又能精确控制每个查询对最终得分的影响。因此,它为微调混合搜索提供了一种更直观、更灵活的方式。
定义一个线性检索器,其最终得分的计算公式为
就这么简单:
注意到它有多简单直观了吗?(与rrf 非常相似!)这种配置允许您精确控制每种查询类型对最终排名的贡献程度,这与rrf 不同,后者仅依赖于相对排名。
需要注意的是:knn 分数可能有严格的界限,这取决于所使用的相似性指标。例如,使用余弦相似度或单位归一化向量的点积,得分总是在[0, 1] 范围内。相比之下,bm25 分数的可预测性较差,而且没有明确的界限。
评分缩放:KNN vs BM25
混合搜索面临的一个挑战是,不同的检索器会产生不同的分数。例如,请考虑以下情况:
查询 A 得分:
| doc1 | doc2 | doc3 | 文档4 | |
|---|---|---|---|---|
| knn | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 100 | 1.5 | 1 | 0.5 |
查询 B 得分:
| doc1 | doc2 | doc3 | 文档4 | |
|---|---|---|---|---|
| knn | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 0.63 | 0.01 | 0.3 | 0.4 |
您可以从上面看到这种差异:kNN 分数介于 0 和 1 之间,而bm25 分数可能相差悬殊。这种差异使得设置静态最佳权重以合并结果变得非常棘手。
归一化拯救:MinMax 归一化器
为了解决这个问题,我们引入了一个可选的minmax 归一化器,该归一化器使用以下公式将每个查询的分数独立缩放至[0, 1] 范围:
这就保留了每个文档在查询结果集中的相对重要性,从而更容易合并来自不同检索器的得分。正常化后,分数变为
查询 A 得分:
| doc1 | doc2 | doc3 | 文档4 | |
|---|---|---|---|---|
| knn | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 1.00 | 0.01 | 0.005 | 0.000 |
查询 B 得分:
| doc1 | doc2 | doc3 | 文档4 | |
|---|---|---|---|---|
| knn | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 1.00 | 0.000 | 0.465 | 0.645 |
现在,所有得分都在[0, 1] 范围内,加权总和的优化也更加简单明了,因为我们现在捕捉的是结果的重要性(相对于查询而言),而不是绝对得分,并能在不同查询中保持一致。
线性寻回器示例
现在,让我们通过一个例子来展示上述内容,以及linear Retriever 如何解决rrf 的一些不足之处。RRF 仅依靠相对排名,不考虑实际分数差异。例如,给出这些分数:
| doc1 | doc2 | doc3 | 文档4 | |
|---|---|---|---|---|
| knn | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 100 | 1.5 | 1 | 0.5 |
| rrf 分数 | 0.03226 | 0.03252 | 0.03200 | 0.03125 |
rrf 会将文件排序为
但是,doc1 的bm25 得分明显高于其他文件,而rrf 只查看相对排名,因此未能捕捉到这一点。linear Retriever 结合归一化处理,可以正确地考虑分数及其差异,从而得出更有意义的排名:
| doc1 | doc2 | doc3 | 文档4 | |
|---|---|---|---|---|
| knn | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 1 | 0.01 | 0.005 | 0 |
如上图所示,doc1 的优秀排名和score 的bm25 都得到了适当的考虑,并反映在最终得分上。此外,所有分数现在都在[0, 1] 范围内,这样我们就能以更直观的方式对它们进行比较和组合(甚至建立离线优化流程)。
将所有内容整合在一起
要充分利用linear 检索器的正常化功能,搜索请求应如下所示:
这种方法结合了两方面的优点:既保留了linear Retriever 的灵活性和直观评分,又通过 MinMax 归一化确保了一致的评分缩放。
与我们所有的检索工具一样,linear 检索工具可以集成到分层检索树的任何层级中,并支持可解释性、匹配高亮、字段折叠等功能。
何时选择线性寻回犬,为什么会有区别
linear 猎犬:
- 通过利用实际得分,而不仅仅是排名,来保留相对重要性。
- 允许利用不同查询的加权贡献进行微调。
- 利用规范化增强一致性,使混合搜索更稳健、更可预测。
结论
linear retriever 已经在 Elasticsearch Serverless 以及 8.18 和 9.0 版本中可用!更多示例和配置参数可参阅我们的文档。试用一下,看看它如何改善您的混合搜索体验--我们期待您的反馈。搜索愉快
常见问题
与之前的互易等级融合(RRF)方法相比,线性检索器如何改进混合搜索?
在混合搜索中,线性寻回器比 RRF 具有若干优势。RRF 只关注相对排名,忽略实际得分,而线性检索器则计算查询的加权总和,保留每个文档的相对重要性。这种方法可以更精确地控制不同查询类型对最终排名的影响。此外,线性检索器还支持 MinMax 等归一化技术,从而可以更轻松地组合不同检索器的得分,优化最终搜索结果。这种灵活性和控制性提供了更加直观和微调的混合搜索体验。




