非精准 Top K 检索如何实现?

简介: 非精准Top K检索通过离线计算静态质量得分(如PageRank)并预先排序,实现在线快速截断。倒排索引的posting list按质量分降序排列,多关键词查询时通过归并排序高效获取Top K结果,大幅降低在线计算开销,适用于对相关性要求不高的场景。

在非精准 Top K 检索中,一个降低打分计算复杂度的重要思路是:尽可能地将计算放到离线环节,而不是在线环节。这样,在线环节我们就只需要进行简单的计算,然后快速截断就可以了。一个极端的方案就是根据检索结果的静态质量得分进行打分和截断。具体该怎么做呢?我们一起来看。

  1. 根据静态质量得分排序截断

所谓静态质量得分,指的是不考虑检索结果和实时检索词的相关性,打分计算仅和结果自身的质量有关。这样,所有的打分计算就都可以在离线环节完成了。也就是说,我们只需要根据离线算好的静态质量得分直接截断,就可以加速检索的过程了。这么说可能比较抽象,我们通过一个例子来解释一下。

以搜索引擎为例,我们可以不考虑搜索词和网页之间复杂的相关性计算,只根据网站自身的质量打分排序。比如说,使用 Page Rank 算法(Google 的核心算法,通过分析网页链接的引用关系来判断网页的质量)离线计算好每个网站的质量分,当一个搜索词要返回多个网站时,我们只需要根据网站质量分排序,将质量最好的 Top K 个网站返回即可。

不过,为了能快速返回 Top K 个结果,我们需要改造一下倒排索引中的 posting list 的组织方式。我们讲过,倒排索引的 posting list 都是按文档 ID 进行排序的。如果希望根据静态质量得分快速截断的话,那我们就应该将 posting list 按照静态质量得分,由高到低排序。对于分数相同的文档,再以文档 ID 二次排序。

这样一来,在检索的时候,如果只有一个关键词,那我们只需要查出该关键词对应的 posting list,截取前 k 个结果即可。但是如果我们要同时查询两个关键词,截断的过程就会复杂一些。尽管比较复杂,我们可以总结为两步:
● 第一步,我们取出这两个关键词的 posting list,但不直接截断;
● 第二步,我们对这两个 posting list 归并排序。留下分数和文档 ID 都相同的条目作为结果集合,当结果集合中的条目达到 k 个时,我们就直接结束归并。

如果是查询多个关键词,步骤也一样。那在这个过程中,我们为什么可以对这两个 posting list 进行归并排序呢?这是因为文档是严格按照静态质量得分排列的。如果文档 1 的分数大于文档 2,那在这两个 posting list 中文档 1 都会排在文档 2 前面。而且,对于分数相同的文档,它们也会按照 ID 进行二次排序。所以,任意的两个文档在不同的 posting list 中,是会具有相同的排序次序的。也因此,我们可以使用归并的方式来处理这两个 posting list。

总结来说,在使用静态质量得分选取非精准 Top K 个结果的过程中,因为没有实时的复杂运算,仅有简单的截断操作,所以它和复杂的精准检索打分相比,开销几乎可以忽略不计。因此,在对相关性要求不高的场景下,如果使用静态质量得分可以满足系统需求,这会是一个非常合适的方案。但如果应用场景对相关性的要求比较高,那我们还得采用其他考虑相关性的非精准检索方案。

相关文章
|
4月前
|
jenkins Java 持续交付
Jenkins前置配置
本文介绍Jenkins与GitLab集成的完整配置流程:包括GitLab账号创建、SSH密钥配置、API Token生成,Jenkins中GitLab连接、凭据管理、全局Git信息设置,以及节点服务器环境搭建(JDK、Maven、Node、Docker等),并详细说明Jenkins节点通过SSH方式接入的步骤,实现自动化拉取代码、构建打包与持续集成。
|
4月前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队如何通过自动化部署平台实现多环境(dev/test/pre/prod)高效发布与运维。涵盖各环境职责、基于Jenkins+K8S的CI/CD流程、分支管理、一键发布及Skywalking日志链路追踪,提升发布效率与问题排查速度。
|
4月前
|
Java 开发工具 Maven
服务端(DevBox)-项目创建
使用Sealos在DevBox中创建SpringBoot项目zxyf-management,配置Java环境与Docker容器,通过Cursor智能开发工具一键启动云端应用。无需手动输入命令,自动下载依赖并部署,结合云端域名快速访问服务,实现高效开发与运行。
|
4月前
|
编解码 算法 前端开发
java后端开发学习路线+避坑指南
java后端开发学习路线+避坑指南
|
4月前
|
存储
链表在检索和动态调整上的优缺点
链表因无法随机访问,检索效率低,尤其在无序或有序情况下均难以实现快速查找。但其优势在于动态调整:插入和删除节点仅需O(1)时间,远优于数组的O(n)移动开销,适合频繁修改的场景。
|
4月前
|
数据采集 存储 机器学习/深度学习
搜索引擎的整体架构和工作过程
搜索引擎由爬虫、索引和检索三大系统构成:爬虫负责抓取网页并存储;索引系统对网页去重、分析并构建倒排索引;检索系统通过查询分析、相关性排序等技术,返回精准结果。全过程融合文本分析、机器学习与大规模计算,确保高效准确搜索。
|
4月前
|
算法 搜索推荐
经典的 TF-IDF 算法是什么?
TF-IDF是衡量词与文档相关性的经典算法,由词频(TF)和逆文档频率(IDF)相乘得出。TF反映词在文档中的重要性,IDF体现词的区分度。词频越高、文档频率越低的词,权重越大。通过累加各词项的TF-IDF值,可计算查询与文档的整体相关性,广泛应用于搜索引擎排序。
|
4月前
|
算法 搜索推荐
如何使用概率模型中的 BM25 算法进行打分?
BM25是一种基于概率模型的文本相关性打分算法,可视为TF-IDF的升级版。它综合考虑词频(TF)、逆文档频率(IDF)、文档长度及查询词频,并引入非线性增长与饱和机制。通过参数k1、k2和b调节词频权重、文档长度影响和查询词权重,使评分更精准。广泛应用于Elasticsearch、Lucene等搜索引擎中。
|
4月前
|
数据安全/隐私保护
服务端(Cursor)-接口开发(登录认证)
根据接口文档,完成员工登录功能开发,实现POST /login接口。员工通过用户名密码登录,验证成功后返回包含JWT令牌的响应,后续请求需在header中携带token,否则返回401。已完成接口测试与权限校验集成。
|
4月前
|
开发者
业务架构图
业务架构图是梳理业务层级与关系的工具,通过分层、分模块、分功能,将复杂业务抽象化,明确模块边界与信息流,提升客户理解与开发效率,是系统设计的核心基础。(238字)