浅谈互联网搜索之召回

news2024/11/25 11:04:12

一、背景

在搜索系统中,一般会把整个搜索系统划分为召回和排序两大子系统。本文会从宏观上介绍召回系统,并着重介绍语义召回。谨以此文,希望对从事和将要从事搜索行业的工作者带来一些启发与思考。
二、搜索系统召回方法
不同于推荐系统,检索系统是在输入query的前提下,快速召回与query相关的文本,特点为要求是快,注重召回轻准确。注意,在工业界考虑到用户体验,往往要求百毫秒以内完成召回,甚至在地图、电商类的sug 场景(边输入边推荐提示)召回要求十毫秒内完成。由此可见,召回在工业界的技术和工程要求比较高。
在召回系统中往往采用多路召回构建召回体系,当前召回体系可以抽象为三大方向:
(1)倒排索引召回:
倒排索引可以理解为 k,v 对,对doc(文档)分词,每个词可以看做 k,包含该词的文档可以看做 v,这样就构建了以词为key的拉链,如下图所示。当用户输入query时,根据用户输入query切词粒度term进行倒排拉链召回(如query 清华大学,切分为清华和大学两个term,会召回清华和大学相关文本),这是非常经典和基础的传统召回方法。当用户输入规范且输入信息量较足的情况下,能够准确召回用户所需要文档。然而,在现实场景中,当用户存在输入错误以及输入同义的情况下,就会存在召回率不足的问题,影响检索体验。

在这里插入图片描述

(2)个性化召回:

基于倒排索引召回是严格基于文本词粒度term结构完成query和doc的匹配,而个性化的召回则是基于用户行为的召回方法,最简单的方法是统计用户历史query对文档的点击,根据点击doc构建个性化召回集合。个性化召回相对于文本召回的优势在于不需要精准的term命中即可召回相关文档,缺点在于如果相关性把握不好,会引入一些影响用户体验的badcase。
(3)语义召回:
语义召回是搜索引擎发展的新趋势,能够更加精准地满足用户需求,因此受到了广泛关注。语义召回是利用神经网络计算用户输入query和目标doc之间的语义匹配度,并召回 top-k最相关的文档。具体做法为,离线经过模型对 doc 向量化,并通过最近邻建库算法(fassi、hnsw等)构建向量索引库,在线通过模型对query进行向量化,召回向量库中相似度最高的N个文档,这种方法虽然能够一定程度上解决query泛化的问题,但是会因为召回的准确率等问题引入杂质,召回后需要通过语义质量控制杂质问题。下面重点介绍一下语义召回。
三、语义召回
不同用户甚至不同终端输入千差万别,query 往往包含汉字、拼音、阿拉伯数字,甚至五笔笔画偏旁输入。这些复杂的输入组成千差万别的query组合,对刻画用户搜索需求造成巨大挑战,当前基于倒排索引的规则召回难以满足这种复杂query的输入。而语义召回是搜索引擎发展的新趋势,泛化能力甚至精准召回能力近年来都变得越来越强,因此受到了广泛关注。下面介绍几种搜索领域常见的召回方法,简单归纳一下主要有传统语义召回(DSSM双塔为代表)、带有场景信息的多源语义召回(图语义召回、多模语义召回等),大模型预训练语义召回。具体如下:
(1)传统语义召回
DSSM是一种典型的朴素双塔召回,出自微软,是当前推广搜算法最通用的向量召回算法之一。
在这里插入图片描述

作为最典型的语义召回算法,将用户侧和文档侧特征组成的稀疏向量通过多层深度网络压缩到同一个低维向量空间,并通过余弦相似度来计算两个语义向量的距离,最终训练出代表用户和文档在高维空间语义相似度模型。在线预测时利用训练好的用户向量最近邻检索文档向量返回top-k近似文档。该方法的特点为用户侧和文档侧向量分离,工程落地容易,同时能够利用深度学习的丰富表达能力,达到比较好的效果。
(2)多源语义召回
这里所谓的多源语义召回,是指融合多个场景信息,比如引入图像的多模语义召回,引入只是图谱的图语义召回等。这些场景信息相当于为模型提供辅助信息,在一些query输入比较短语义不明确的场景中(比如搜索领域的sug)辅助信息尤为重要,因为能够提供更丰富的输入表达。比如,在电商领域,对图片进行映射表达为向量;在地图领域,对用户的地理位置进行表达作用用户的输入;在美食领域,对用户的搜索历史构建只是图谱,作为用户的输入,能够达到千人千面的召回效果。
(3)大模型预训练语义召回
为了提升在检索领域召回的效果,最近提出了使用预训练阶段细粒度交互向粗粒度交互蒸馏的策略,训练出面向检索场景的基础大模型。同时,进一步以大模型为热启,基于海量点击数据post-train的双塔匹配、召回模型,在多项QT双塔语义匹配、召回任务中取得效果提升。具有以下优点:充分利用海量数据,尤其利用人工精标的相关性数据进行fine-tune,在偏文本的召回,排序等任务上取得了比较不错的效果。
在这里插入图片描述

四、总结与展望
本文介绍了搜索中的三大召回方法:倒排索引召回、个性化召回和语义召回,以及重点介绍了搜索领域召回新趋势语义召回。倒排索引作为搜索领域的召回基石长久不衰,该方法简单高效,能够解决大多数召回场景case,但长尾Query的搜索会导致输入意图一致的相似词无法解决。随着语义召回的发展,不仅能够解决长尾case,甚至具有代替倒排索引的能力,在一些大厂中,正不断迭代语义召回,逐步下掉倒排索引,我相信在不就得将来,强大的语义召回会成成为搜索领域的主流。还是那句话,随着新技术和新想法的不断涌现,搜索引擎还有很多可以完善的地方,需要你我共同建设。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6月6号软件资讯更新合集......

Yao 0.10.3 正式发布,拥抱 AIGC 时代! ChatGPT 解锁了新的人机交互方式,人类可以与电脑直接交流了!AIGC 时代已经到来,万千应用正在升级或重构,Yao 提供了一个开箱即用的解决方案,可以快速开发…

迷茫了3年:做完这个测试项目,我终于决定辞职!

2023年早已过半,来个迟到的年中总结,说实话,2023,很迷茫,然后过的非常不如意,倒不是上一年的职业目标没达到,而是接下来的路根本不知道如何走。在没解决这个问题之前,或者说没搞清楚…

Web3.0概念

学习web3您需要先掌握 JavaScript node React 后续 我们将学习一门新的语言 叫 Solidity 他是一种只能合约语言开发 我们利用web3将不再依赖后端 而是连接只能合约开发 首先 我们先不用急着写代码 还是要概念为先 首先 我们来对比 WEB1.0到3.0的概念 首先 web1.0 更多处于信…

AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测

题目:基于RTMPose的耳朵穴位关键点检测 背景 根据中医的“倒置胎儿”学说,耳朵的穴位反映了人体全身脏器的健康,耳穴按摩可以缓解失眠多梦、内分泌失调等疾病。耳朵面积较小,但穴位密集,涉及耳舟、耳轮、三角窝、耳甲…

Unity - 从RG中解压法线贴图

文章目录 环境目的问题解决References 环境 Unity : 2020.3.37f1 Pipeline : BRP 目的 备忘便于索引 问题 之前使用 GPA 还原一些效果的时候,发现 法线贴图的 Y 通道数值不对,感觉被 翻转了 比方说,下面是 GPA 中的法线 这个法线是 DX …

Ubuntu20.04安装EVO工具教程

EVO工具全名为“Python package for the evaluation of odometry and SLAM”,使用Python写的轨迹评估工具,目前在SLAM领域论文中的“使用率”逐渐上升,可以说已经成为了作为SLAMer一定要会用的工具。最近需要使用evo工具评测SLAM算法性能并可…

Dell服务器安装Ubuntu系统

1、下载镜像,做启动盘 镜像链接 http://old-releases.ubuntu.com/releases/20.04.2/ubuntu-20.04.2-live-server-amd64.iso 版本可以根据自己要求选择。 做启动盘 我用的是ultraiso 记得先格式化,再写入。 2、 设置BIOS启动 按F11,进入BIOS…

光线追踪是怎么影响渲染速度的,什么显卡可以支持?

在 3D 世界中,慢慢地人们倾向于让它尽可能逼真。他们可以应用许多技术和技巧,但有一种技术可以为您提供很多帮助,称为光线追踪。然而,众所周知,它是非常计算密集型的。在本文中,让我们进一步探讨它&#xf…

Java JUC并发编程

前言 1、JUC是指有关 java.util.concurrent包以及其子包,这些包都是有关线程操作的包 2、HTTPS服务请求中,WEB服务只负责创建主线程来接收外部的HTTPS请求,如果不做任何处理,默认业务逻辑是通过主线程来做的,如果业务…

Linux文件基础IO

目录 C文件IO相关操作 介绍函数 文件相关系统调用接口 接口介绍 fd文件描述符 重定向 缓冲区 inode 软硬链接 动静态库 库的制作 制作静态库 制作动态库 使用库 使用静态库 使用动态库 C文件IO相关操作 介绍函数 打开文件 参数介绍: const char*…

MySQL的explain字段解释

MySQL的explain字段解释 ,type类型含义:1.id 2.select_type 3.table 4.type(重要) 5.possible_keys 6.possible_keys 7. key 8.key_len 9. ref 10. rows(重要) 11. filtered 12. Extra(重要) 如下: Explain命令是查看查询优化器是如何决定执行查询的主要方法。这个功…

Firewalld防火墙详解

文章目录 Firewalld防火墙什么是防火墙Firewalld防火墙的概念Firewalld防火墙运行模式Firewalld防火墙的命令Firewalld防火墙的高级规则 Firewalld防火墙 什么是防火墙 防火墙:防范一些网络攻击。有软件防火墙、硬件防火墙之分。 硬件防火墙和软件防火墙的主要区…

【软件开发】MyBatis 理论篇

MyBatis 理论篇 1.MyBatis 是什么? MyBatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。…

初识网络之协议定制

目录 一、数据在网络传输中遇到的部分问题 1. 序列化与反序列化 2. 如何保证接收端读取一个完整的报文 二、实现一个简单的网络计算器 1. 客户端处理 1.1 请求结构体和返回结构体 1.2 解析输入的字符串 1.3 序列化 1.4 添加标识符和字符串长度 1.5 接收服务端返回的数…

浏览器的回流与重绘与事件循环

浏览器的回流与重绘和事件循环 浏览器回流浏览器重绘事件循环 浏览器回流 什么是浏览器回流? 回流是通过JS代码让布局或者几何属性改变,使部分页面或者整个页面更新的过程 浏览器重绘 剩下的是浏览器重绘:比如改变div的visibility, color、…

如何使用Foxmail 7.2.25版本登录Microsoft 365 国内版(即世纪互联版)邮箱

近期微软在全球取消了在Exchange Online 的基本身份验证,取消了之后只有适配微软新式验证的客户端才支持登录,以往的直接配置IMAP/POP服务器地址和邮箱账号密码来登录的方式已经行不通了。 详情可以点击此链接了解:弃用 Exchange Online 中的…

APP性能测试中的几个重要概念,你都知道吗?

目录 前言 一. 内存  二. CPU 三. 流量 四. 电量 五. 启动时间 六. 总结 前言 我们在使用各种 App 的时候基本会关注到:这款软件挺耗流量的?运行起来设备掉电有点快嘛?切换页面的时候还会有卡顿等现象?如果遇到有这些问题…

程序员必看的书籍推荐

程序员必看的书籍推荐: 推荐1:Python 网络数据采集 作者:Ryan Mitchell 译者:陶俊杰,陈小莉 原书4.6星好评,一本书搞定数据采集 涵盖数据抓取、数据挖掘和数据分析 提供详细代码示例,快速解决实…

九、RGBA数据转YUV422存储

1、介绍 将RGBA转换为YUV数据,首先我们是知道有公式是可以将RGBA转换为YUV的,但是图像的每个像素都有一个R、G、B,A值的,但是YUV422(就是两个像素两个Y一个U一个V的),因此我们还需要将一个像素的RGBA四个值转换为YUV三…

VLAN内容

一、VLAN VLAN是拥有一组共同要求且与物理位置无关的终端设备的逻辑组。 终端设备包括终端用户工作站、服务器、路由器等诸如此类设备。 物理子网由想同物理电缆分段中的设备组成;逻辑子网由相互通信且物理位置无关的设备所组成。VLAN是一种逻辑子网,并…