论文阅读_基于嵌入的Facebook搜索

英文名称:Embedding-based Retrieval in Facebook Search
中文名称:基于嵌入式检索的Facebook搜索
时间:Wed, 29 Jul 2020 (v2)
地址:https://arxiv.org/abs/2006.11632
作者:Jui-Ting Huang, Ashish Sharma, Shuying Sun, Li Xia, David Zhang, Philip Pronin, Janani Padmanabhan, Giuseppe Ottaviano, Linjun Yang
机构:Facebook & Microsoft
出处:会议论文,第26届 ACM SIGKDD 知识发现和数据挖掘会议论文集
正文:8 页

读后感

Facebook 社交中的搜索与其它搜索不同,它可以基于上下文得到更多信息。

这里研究的是如何将传统搜索与基于向量的搜索结合在一起的具体方法。比较有启发的是提出的“统一嵌入模型”,在编码时加入了用户、上下文、位置等文本以外的信息,以便更好地定位和匹配。

另外,还考虑到每月活跃用户、最近发生的事件、热门页面和群组。并不一定要对所有内容做嵌入索引,多数时候人们更关注高频数据,这样确实可以提升效果。使用新方法和旧方法结合,解决不同用户需求,同时平衡资源占用,是实用的方法。

摘要

目标: 将嵌入式检索(EBR)应用于 Facebook 搜索系统的技术,以改进搜索结果的相关性。

方法: 介绍了用于个性化搜索的统一嵌入框架和基于倒排索引的嵌入式检索系统,并分享了端到端优化整个系统的各种技巧和经验,包括 ANN 参数调整和全栈优化。

结果: 在 Facebook 搜索的垂直领域上评估 EBR,在在线 A/B 实验中观察到显著的指标提升。

1 引言

解决与查询文本不完全匹配但能满足用户搜索意图的预期结果是一个具有挑战性的问题。而嵌入是一种将稀疏的 ID 向量表示为密集特征向量的方法,也称为语义嵌入,因为它通常能够学习语义。一旦学习了嵌入,它就可以用作查询和文档的表示,并应用于搜索引擎的各个阶段。

一般搜索引擎包括一个召回层,以低延迟和计算成本检索一组相关文档,也称为检索;以及一个精确层,以更复杂的算法或模型将最需要的文档排在顶部,也称为排序。嵌入在检索中的应用称为基于嵌入的检索,或简称 EBR。检索层需要处理数十亿或数万亿个文档。搜索引擎通常需要将基于嵌入的检索和基于术语匹配的检索结合起来,才能在检索层对文档进行评分。

在 Facebook 社交网络中的搜索,需要完全理解文本、用户和上下文。文章提出了统一嵌入,这是一个双侧模型,也称为又塔结构。其中一侧是包含查询文本、搜索者和上下文的搜索请求,另一侧是文档。从搜索者、查询、上下文和文档中提取特征。例如,网络上有很多 John Smith,但用户搜索时,更可能是他认识的 John Smith。

图片

2 模型

本文主要讨论对于检索的优化,可将召回率优化表述为一个基于查询和文档之间距离计算的排名问题。查询和文档通过神经网络模型编码为密集向量,并使用余弦相似度作为距离度量。

2.1 评价指标

作者设计了离线测试,对 10000 个搜索会话进行了采样,以收集用于评估的查询和目标结果集对。并报告了超过 10000 个会话的平均 recall@K。

2.2 损失函数

对于给定的三元组 ( ( ), +( ), −( )),其中 ( ) 是查询, +( ) 是关联的正文档, −( ) 是关联的负文档,三元组损失定义为:

图片

2.3 统一嵌入模型

作者提出了统一嵌入,在生成嵌入时不仅考虑了文本,还考虑了用户和上下文信息。

模型包括三个主要组件:查询编码器用于产生查询嵌入,文档编码器用于产生文档嵌入,以及相似性函数用于计算查询和文档之间的分数。默认情况下,这两个编码器和是独立的网络,但也可以选择共享部分参数。并选择余弦相似性作为相似性函数。

统一嵌入对文本、社交和其他有意义的上下文特征进行编码,以分别表示查询和文档。例如,对于查询端,可以包括搜索者的位置和用户的社交关系。而对于文档,以群组搜索为例,可以包括关于 Facebook 群组的聚合位置和社交集群。不同类型特征与文本结合的嵌入方法,详见特征工程章节。

图片

|400

2.4 训练数据挖掘

对于正负样本的选择,文中比较了几种基于模型召回率的策略。

负样本方面,测试了随机采样和未点击的展示结果。使用未点击的展示结果作为负样本时,模型召回率显著下降。这是因为这些负样本偏向于与查询匹配的难案例,而大多数文档是不匹配的简单案例。

正样本方面,点击结果和展示结果都被测试。发现两者效果相似,添加展示数据并未带来额外提升。

因此,使用点击作为正样本、随机作为负样本。

3 特征工程

统一嵌入模型的优点之一是它可以合并文本以外的各种功能来提高性能。实验证明,当事件搜索从文本切换到统一嵌入时,召回率提高了 18%,组搜索的召回率提高了 16%。

文本特征:使用字符 n-gram 表示文本有两个主要优点。首先,它使词汇量更小,从而嵌入查找表更小且更易于学习。其次,它对查询和文档中的词汇外问题(例如拼写变化或错误)更具鲁棒性。实验表明,字符 n-gram 比词 n-gram 能产生更好的性能,但结合两者能进一步提高表现(召回率提升 1.5%)。Facebook 实体的主要文本特征来源于人名或标题,相比布尔术语匹配技术,嵌入模型在处理模糊匹配和可选词匹配方面表现更佳。

位置特征:位置匹配在许多搜索方案中都是有利的,例如搜索本地商家、群组或活动。在查询和文档端都添加了位置功能。对于查询端,我们提取了搜索者的城市、地区、国家和语言信息。对于文档端,实验中添加了公开可用的信息,例如管理员标记的显式组位置。结合文本特征,该模型能够成功学习查询和结果之间的隐式位置匹配。

社会关系特征:训练了一个单独的嵌入模型来嵌入基于社交图谱的用户和实体。这有助于将全面的社交图谱合并到统一的嵌入模型中。

4 服务

4.1 ANN

在系统中部署了基于倒排表的 ANN(近似近邻)搜索算法。首先,对嵌入向量的量化,使存储成本较低。其次,更容易集成到现有的基于倒排索引的检索系统中。使用 Faiss 库来量化向量,然后在现有的倒排表扫描系统中实现高效的神经网络搜索。

嵌入量化有两个主要组成部分:一种是粗量化,通常通过 K-means 算法将嵌入向量量化为粗簇;另一种是乘积量化,用于细粒度地进行嵌入距离的有效计算。

4.2 系统实施

在 Unicorn(高性能的 HTTP 服务器)中,实现了对 NN(最近邻)搜索的优质支持。Unicorn 使用术语包表示每个文档,这些术语是文档二进制属性的任意字符串,通常会被转换为命名空间。例如,居住在西雅图的用户 John 将具有术语 text:john 和 location:seattle。查询可以是基于这些术语的任何布尔表达式。

为了支持 NN 搜索,作者扩展了文档表示形式,使其支持嵌入。每个嵌入都有一个特定的字符串键,并增加了一个 (nn <key>:radius <radius>) 查询运算符。该运算符匹配指定半径内查询嵌入的所有文档。

在索引阶段,每个文档嵌入被量化为一个术语(代表其粗集群)和一个有效负载(代表量化后的残差)。在查询阶段,通过最接近的术语匹配文档,并检索有效负载以验证约束。

(小编说:这是四年前的文章,现在有更多针对向量查询的优化技术,此方法就不再展开了)

4.2.1 混合检索

通过将 (nn) 运算符作为布尔查询语言的一部分,可以支持混合检索表达式,任意组合嵌入和术语,以实现模糊匹配等功能。

(小编说:非稠密向量也有很多模糊匹配的方法,这里主要说明 NN 的使用场景)

4.2.2 模型服务

在双侧嵌入模型训练完成后,将其分解为查询嵌入模型和文档嵌入模型,并分别提供服务。对于查询嵌入,将模型部署在在线推理服务中,以实现实时推理。对于文档嵌入,使用 Spark 进行离线批量推理,然后将生成的嵌入与其它元数据一起发布到正向索引中。此外,还进行了额外的嵌入量化,包括粗量化和 PQ,以将其发布到倒排索引中。

4.3 查询和索引选择

为了提高 EBR 的效率和质量,文中对查询和索引进行了优化。但并不是对所有用户数据和所有查询都应用上述技术,以减少资源占用。例如,只对每月活跃用户、最近发生的事件、热门页面和群组进行索引;过滤掉之前查询过的、简单的查询,或者不需要向量查询的内容。

5 优化

Facebook 的搜索排名是一个复杂的多阶段系统,包含检索和排序两个独立步骤。如果只针对检索进行优化,可能会与后续的排序阶段不匹配,从而无法生成最优结果。为改善这一问题,可以使用以下两种方法:

  • 将嵌入作为排序特征:利用查询和结果嵌入之间的余弦相似度作为排序特征,从而提高排序器的表现。

  • 训练数据反馈循环:记录基于嵌入检索得到的结果,并结合人工评分数据重新训练模型,以提升检索的精确度。

6 高级主题

这里主要讨论了难样本对模型效果的影响,相对小众,略……

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

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

相关文章

Postman设置请求间自动保存返回参数,方便后续请求调用,减少复制粘贴

postman中常常出现&#xff1a;有两个请求&#xff0c;一个请求首先获取验证码或者token&#xff0c;再由得到的验证码或token编写body发送另一个请求。如何设置两个请求间自动关联相关数据呢&#xff1f; 通过环境存储全局变量 现在有两个请求如下图&#xff0c;生成验证码是…

如何将Hive表的分区字段插入PG表对应的时间戳字段?

文章目录 1、背景描述2、场景分析 1、背景描述 数据仓库的建设通常是为业务和决策服务的。在数仓开发的应用层阶段&#xff0c;BI可以直接从主题层/业务层取数&#xff0c;而前端需要根据具体的作图需求通过后端查询数据库 作图的指标需要根据主题层/业务层做查询计算&#xf…

保姆教程教你如何使用数据集运行ORB-SLAM3

链接: 自学SLAM&#xff08;2&#xff09;—保姆教程教你如何使用自己的视频运行ORB-SLAM2 这篇文章是详细教怎么运行ORB-SLAM2的&#xff0c;那么下来我们就看看怎么运行ORB-SLAM3 理论上ORB-SLAM2的环境也是可以跑ORB-SLAM3的&#xff0c;因为我之前试过&#xff0c;编译成功…

最佳学习率和Batch Size缩放中的激增现象

前言 《Surge Phenomenon in Optimal Learning Rate and Batch Size Scaling》原文地址GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文&#xff0c;并对其进行了中文翻译。还有部分最佳示例教程。如果有帮助到大家&a…

24/06/29(21.1205)程序的编译和链接

源文件 ---> 可执行文件,这一过程要执行的流程: 预处理 编译 汇编 链接 组成每一个程序的每个源文件通过编译过程分别转换成目标代码;每个目标代码由链接器捆绑在一起,形成一个单一而完整的可执行程序;链接器同时也会引入标准函数库中任何被该程序所用到的函数,而且它可以…

Linux源码-进程描述符

Linux操作系统引入了PCB(Process Control Block,进程控制块)结构。PCB是Linux操作系统识别进程的通道。 创建进程时&#xff0c;首先会创建PCB&#xff0c;根据PCB中的信息对进程实施有效管理。当进程终止后&#xff0c;Linux操作系统会释放对应的PCB资源。 PCB的数据结构是s…

Spring Boot中的OAuth2认证与授权

Spring Boot中的OAuth2认证与授权 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何在Spring Boot应用中实现OAuth2认证与授权&#xff0c;以保…

Kafka入门-消息丢失问题

Kafka到底在什么情况下才能保证消息不丢失 一句话概括&#xff0c;Kafka只对“已提交”的消息&#xff08;committedmessage&#xff09;做有限度的持久化保证。 已提交的消息&#xff1a;当Kafka的若干个Broker成功地接收到一条消息并写入到日志文件后&#xff0c;它们会告诉…

2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第二部分】

上一篇文章&#xff1a;2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第一部分】_尘封的CPU的博客-CSDN博客最近回顾了Java B组的试题&#xff0c;深有感触&#xff1a;脑子长时间不用会锈住&#xff0c;很可怕。兄弟们&#xff0c;都给我从被窝里爬起来&#xff0c;赶…

解决error Error: certificate has expired问题

安装环境遇到下面问题&#xff1a; 产生原因&#xff1a;可能是开了服务器代理访问导致ssl安全证书失效 解决办法&#xff1a; 在终端输入以下命令&#xff1a; yarn config set "strict-ssl" false -g

3ds Max导出fbx贴图问题简单记录

1.前言 工作中发现3ds Max导出的fbx在其它软件&#xff08;Autodesk viewer&#xff0c;blender&#xff0c;navisworks&#xff0c;FBXReview等&#xff09;中丢失了部分贴图&#xff0c;但导出的fbx用3ds Max打开却正常显示。 fbx格式使用范围较广&#xff0c;很多常见的三…

Oracle中的序列(Sequence)是一种数据库对象

Oracle中的序列&#xff08;Sequence&#xff09;是一种数据库对象&#xff0c;用于生成数字序列&#xff0c;通常用于为主键列生成唯一、连续的数值。以下是一些使用序列的案例&#xff1a; 1. **为主键生成唯一值**&#xff1a; 在Oracle中&#xff0c;序列最常用的场景是…

Spring Boot 启动流程源码分析(2)

前言&#xff1a; 前文我们宏观的分析了 Spring Boot 的启动流程&#xff0c;本篇将分析一下 SpringApplication#run 的重点步骤。 Spring Boot 系列文章传送门 Spring Boot 启动流程源码分析&#xff08;2&#xff09; SpringApplication#run 方法源码解析 解析 SpringAp…

Milvus【部署 01】向量数据库Milvus在Linux环境下的在线+离线安装

向量数据库Milvus在Linux环境下的在线离线安装 1.千问简介2.在线安装2.离线安装 1.千问简介 Milvus 是一款专为处理高维向量数据设计的开源云原生数据库&#xff0c;旨在满足海量向量数据的实时召回需求。它由 Zilliz 公司开发并维护&#xff0c;基于Apache许可证2.0版本发布。…

uboot Device tree error at node ‘__symbols__‘

宏定义相关 是设备树有问题&#xff0c;比如没包含宏定义所在的头文件&#xff1a; &i2c2 {status "okay";pinctrl-0 <&i2c2_pb0_pins>;pinctrl-names "default";touchscreen48 {reg <0x48>;compatible "ti,tsc2007"…

【JavaScript脚本宇宙】精通前端开发:六大热门CSS框架详解

前端开发的利器&#xff1a;深入了解六大CSS框架 前言 在现代Web开发中&#xff0c;选择适合的前端框架和工具包是构建高效、响应式和美观的网站或应用程序的关键。本文将详细介绍六个广受欢迎的CSS框架&#xff1a;Bootstrap、Bulma、Tailwind CSS、Foundation、Materialize…

ASUS华硕A豆14笔记本电脑I421EAYB,I421EQYB_ADOL14EA工厂模式原厂Win11系统安装包下载

适用型号&#xff1a;ADOL14EA笔记本I421EAYB、I421EQYB 链接&#xff1a;https://pan.baidu.com/s/1krU8m_lbApyUfZQo5E4cCQ?pwd0ewl 提取码&#xff1a;0ewl 华硕原装WIN11系统工厂安装包&#xff0c;带有MyASUS WinRE RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系…

Linux上安装JDK,Java起飞,开启编程之旅

在Linux环境下搭建Java开发平台&#xff0c;是许多开发者入门Java世界的第一步。Java的跨平台特性使得在Linux上安装JDK尤为重要&#xff0c;它不仅能为Linux开发者提供更广阔的应用场景&#xff0c;也是探索Java强大功能的起点。 接下来&#xff0c;让我们一起在Linux中完成J…

【SpringMVC】_SpringMVC实现留言墙

目录 1. 需求分析 2. 接口定义 2.1 提交留言 2.2 获取全部留言 3. 响应数据 4. 服务器代码 4.1 MessageInfo 文件 4.2 MessageController 文件 5. 前端页面代码 5. 运行测试 1. 需求分析 实现如下页面&#xff1a; 1、输入留言信息&#xff0c;点击提交后&#xff0…

使用腾讯云服务器从0搭建个人网站,超简单图文教程

使用腾讯云服务器搭建网站全流程&#xff0c;包括轻量应用服务器和云服务器CVM建站教程&#xff0c;轻量可以使用应用镜像一键建站&#xff0c;云服务器CVM可以通过安装宝塔面板的方式来搭建网站&#xff0c;腾讯云服务器网txyfwq.com整理使用腾讯云服务器建站教程&#xff0c;…