关于搜索引擎链路

一、搜索引擎的的链路

简单流程如下,一般都包括query理解,召回,粗排,精排,重排。

二、query理解,查询词处理

对于进来的query需要有很多道工序做处理。才能让搜索引擎的效果更好、更智能。

2.1 分词

 分词是query理解中必不可少的环节。

 TODO : 这里待分享一些方法。

2.2 词权重

词权重,做的事情是,找到query中最关键的点,和非关键的点。从而能够在召回过程中,影响排序。

例如query为“冬季卫衣推荐”,其中重要的是“冬季” 和“卫衣”,其中不重要的是“推荐”。如果不做词权重这个事情,那么“推荐”这个词,和“冬季”“卫衣”,同等重要,很可能干扰排序的结果,召回不相关的内容。

词权重,特别对于长尾的query,特别是在根据关键词的召回过程中(例如:BM25),会特别有用。能够帮助我们找到更相关的结果。

做法:这里分享一个做法。也是利用NLP中的词性标注,然后根据词性来判别权重。

2.3  类目识别,分类

对内容有一个分类,这是非常重要的事情。就像平常生活中,我们把袜子,体恤,短裤都分开方,这样在用的时候可以很好的找。否则在一堆杂乱的的东西中,想要找到想要的,是南辕北辙的事情,费时费力。

做法:这里实际上是对应NLP中的分类任务

2.4 意图识别

时效性意图:例如,query中带有“今天”,“近一周”等等。在召回的过程中,需要考虑文档的年龄。

地域性意图。

我觉得意图识别是query理解中,很重要的一个步骤,做不好会让搜索引擎感觉很笨。做好了会让用户觉得它很聪明,很智能。

2.5 查询词改写 

这里其实包括了同义词。

2.6 query改写

关于把一个query改变成另外一个query的做法,这里有一些研究。

用十篇论文聊聊关于使用LLM做query Rewrite的问题_hyde+prf-CSDN博客

2.7 纠错

纠正query中的错误,可以给用户更好的体验。帮助用户找到想要的内容。

三、召回 

目前分为两种。在机器学习火热之前,基本上是用关键词做召回的(Bm25)。机器学习能力越来越强,可以做语义召回,例如DSSM双塔模型,做语义检索。

3.1 BM25召回

这里,对物料数据做预处理(入库),例如建立倒排索引。然后把query的关键词和倒排索引做匹配好计算,找到最匹配的文档。这里可以使用elasticsearch来做。

3.2  语义召回(向量召回)

双塔模型,一个模型把文档转为向量,一个模型把query转为向量。其中文档的向量是离线计算的(因为这是已知的)。而query是实时计算的(因为这是未知的)。

有很多现成的embedding模型,可以做这件事情。基本上不用自己训练或者微调。例如有BGE,m3e等等

 3.3 KV召回

对于一些特殊的场景。我们可以做一些缓存。例如微博中的热搜,又或者是抖音上的爆火视频。这些并不需要都去做计算,可以提前用query和内容做缓存。更快的做响应。

四、排序

在召回阶段,可能会有一个排序。但是它为了计算速度,通常会较弱。一般都要把召回的内容,重新做一个排序。通常的做法是,使用模型来计算查询词和文档的相关性。  

排序可能也有多层,分为粗排和精排(粗排和精排的区别是使用的特征量不同,粗排追求速度,特征维度更少。精排更关注效果,特征更多,耗时可能更长)。先计算各个维度的分数。然后把这些各个维度的分数做融合计算。针对不同的场景,侧重点不同。以后的关注相关性,有的关注个性化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/651271.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OrangePi AIpro 开箱初体验及语音识别样例

OrangePi AIpro 开箱初体验及语音识别样例 一、 前言 首先非常感谢官方大大给予这次机会,让我有幸参加此次活动。 OrangePi AIpro联合华为精心打造,采用昇腾AI技术路线,具体为4核64位处理器AI处理器,集成图形处理器,…

Lin网络一:DHCP与FTP

目录 1、了解DHCP服务 2、使用DHCP服务有哪些好处 3、DHCP的分配方式 4、DHCP的租约过程 客户机请求IP地址 服务器确定租约 重新登陆 上述总结 配置: 5、传输文件到Linux服务器的常用工具: 1、FTP 文件传输协议 2、FTP传输模式: 3、FTP控制…

maven的下载以及配置的详细教程(附网盘下载地址)

文章目录 下载配置IDEA内部使用配置 下载 1.百度网盘下载 链接: https://pan.baidu.com/s/1LD9wOMFalLL49XUscU4qnQ?pwd1234 提取码: 1234 2.解压即可 配置 1.打开安装文件下conf下的settings.xml文件,我的如下 2.修改配置信息(目的是为了修改本地…

Linux 磁盘管理命令tune2fs mkisofs cfdisk sfdisk parted

文章目录 3.Linux 磁盘管理命令3.26 tune2fs:文件系统调整案例练习 3.27 mkisofs:建立ISO9660 映象文件案例练习 3.28 cfdisk:磁盘分区案例练习 3.29 sfdisk:硬盘分区工具程序案例练习 3.30 parted:磁盘分区工具案例练习 3.Linux 磁盘管理命令 3.26 tune2fs:文件系统调整 作用…

汇编:比较跳转

在16位汇编语言(如x86汇编)中,比较指令用于比较两个操作数的大小,通常用于条件跳转、循环控制等逻辑操作,比较指令(如CMP)会根据操作数的比较结果设置标志寄存器中的相关标志位 比较指令影响的…

深入理解布瑞克(break)逻辑与嵌套循环的奥秘

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:布瑞克逻辑是什么? 二、布瑞克逻辑在嵌套循环中的应用 1.…

倩女幽魂手游攻略:赚银搬砖干货分享,轻松从0开始!

在倩女幽魂手游中,搬砖是许多玩家用来赚取银两和其他资源的主要方式之一。通过完成各种任务、参与活动以及合理利用市场交易,玩家可以积累大量的财富。以下是详细的搬砖攻略,帮助你在游戏中获得更多收益。 一、日常搬砖任务 日常任务 每天的…

找不到vcruntime140.dll等140dll的解决方法,怎么才能快速的修复?

找不到vcruntime140.dll等140dll要怎么办?以上这两个其实都是属于dll文件来的,它们的缺失会导致某些程序直接运行不了,你需要重新的进行修复,然后程序才可以运行下去,下面一起来了解一下找不到vcruntime140.dll等140dl…

深度神经网络——什么是自动编码器?

自动编码器 自动编码器(Autoencoders)是无监督学习领域中一种重要的神经网络架构,它们主要用于数据压缩和特征学习。 自动编码器的定义: 自动编码器是一种无监督机器学习算法,它通过反向传播进行训练,目标…

二叉树尾部分

1.二叉树的销毁 2.二叉树的层序遍历 3.判断二叉树是否为完全二叉树 4.二叉树的性质 1.二叉树的销毁 以后序的方式遍历销毁左右子数,因为前序和中序销毁的话根会被销毁而找不到左右子树的位置,后序的根访问在最后,可以找到左右的子树位置。…

基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善

前言 紧接上篇->基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客 已经完成了登录界面和主界面,本篇将完善主界面的管理员录入和编辑功能,事实上管理员录入和编辑的设计套路适用于所有静态表的录入和编辑 首先还是介绍一下…

声学特征在膝关节健康诊断中的应用分析

关键词:膝关节声发射、膝关节生物标志物、因果关系、机器学习 声学膝关节健康评估长期以来一直被看作是一种替代临床可用医学成像工具的替代方法,如声发射技术是通过检测膝关节在运动过程中产生的微小裂纹或损伤引起的声波信号,从而评估关节的…

学习Uni-app开发小程序Day17

今天开始,就把uni-app前期使用的全部学完了,现在就把以前学习的,做成一案例,中间有未讲的,在进行补充,这里是根据老师视频进行项目案例编写的。 先弄出效果图,然后在根据效果图进行代码的编辑 …

linux 中 fd 申请和释放管理(两级 bitmap)

linux 中 fd 的几点理解_linux fd-CSDN博客 通过上边的文章,我们可以知道,在 linux 中,fd 有以下几点需要了解: (1)fd 表示进程打开的文件,是进程级别的资源,不是系统级别的资源 …

【鱼眼镜头11】Kannala-Brandt模型和Scaramuzza多项式模型区别,哪个更好?

Kannala-Brandt模型和Scaramuzza多项式模型在描述鱼眼相机畸变时都有其特定的数学表示和应用,但它们之间存在一些区别。以下是对两者区别的分点表示和归纳: 数学表示: Kannala-Brandt模型:它假设图像光心到投影点的距离和角度的多…

字符串和字符串函数(1)

前言: 字符串在C语言中比较特别,没有单另的字符串类型,想要初始化字符串必须用字符变量的数组初始化,但是在C语言标准库函数中提供了大量能对字符串进行修改的函数,比如说可以实现字符串的的拷贝,字符串的追…

直播预告:TinyVue 组件库实战解析,提升组件库构建技能!

在复杂的编码世界里,大家总希望能够寻找更高效、更简洁的解决方案来优化工作流程,提升开发效率。在5月28日晚7点 OpenTiny B站直播间,OpenTiny 非常荣幸地为大家带来一场关于 TinyVue 组件库实战分享的直播。届时,TinyVue 组件库成…

【java程序设计期末复习】chapter4 类和对象

类和对象 编程语言的几个发展阶段 (1)面向机器语言 计算机处理信息的早期语言是所谓的机器语言,使用机器语言进行程序设计需要面向机器来编写代码,即需要针对不同的机器编写诸如0101 1100这样的指令序列。 (2&#x…

优优嗨聚集团:快速摆脱个人债务束缚的秘诀

在快节奏的现代生活中,个人债务问题时常困扰着许多人。面对日益增长的债务压力,如何快速有效地处理成为众多人的迫切需求。本文将为你提供一套实用的债务清零攻略,帮助你摆脱债务的束缚,重获财务自由。 一、认清债务现状&#xff…

[NISACTF 2022]easyssrf、[NISACTF 2022]level-up

[NISACTF 2022]easyssrf 使用dirsearch扫描后没发现什么路径 尝试访问127.0.0.1,成功了 访问127.0.0.1/flag.php提示有文件/fl4g 使用file://协议读取文件/fl4g,提示除此页面外还有一个ha1x1ux1u.php页面。 file:///fl4g 直接访问,发现GET…