论文阅读_基于嵌入的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 高级主题

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

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

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

相关文章

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验12 默认路由和特定主机路由

一、实验目的 1.验证默认路由和特定主机路由的作用&#xff1b; 二、实验要求 1.使用Cisco Packet Tracer仿真平台&#xff1b; 2.观看B站湖科大教书匠仿真实验视频&#xff0c;完成对应实验。 三、实验内容 1.构建网络拓扑&#xff1b; 2.验证验证默认路由和特定主机路由…

MySQL高级-索引-使用规则-SQL提示(use、ignore、force)

文章目录 1、查看表 tb_user2、展示索引3、为profession、age、status创建 联合索引4、查询 profession软件工程5、执行计划 profession软件工程6、创建profession单列索引7、再次执行计划 profession软件工程8、SQL提示8.1、use index(idx_user_pro)8.2、ignore index(idx_use…

九浅一深Jemalloc5.3.0 -- ①浅*编译调试

目前市面上有不少分析Jemalloc老版本的博文&#xff0c;但5.3.0却少之又少。而且5.3.0的架构与之前的版本也有较大不同&#xff0c;本着“与时俱进”、“由浅入深”的宗旨&#xff0c;我将逐步分析Jemalloc5.3.0的实现。5.3.0的特性请见Releases jemalloc/jemalloc GitHub 另…

dB分贝入门

主要参考资料&#xff1a; dB&#xff08;分贝&#xff09;定义及其应用: https://blog.csdn.net/u014162133/article/details/110388145 目录 dB的应用一、声音的大小二、信号强度三、增益 dB的应用 一、声音的大小 在日常生活中&#xff0c;住宅小区告知牌上面标示噪音要低…

实战精选 | 在NPU上运行BGE embedding模型,提升RAG整体性能

点击蓝字 关注我们,让开发变得更有趣 作者 | 杨亦诚 排版 | 李擎 介绍 BGE全称是BAAI General Embedding&#xff0c;即北京智源人工智能研究院通用Embedding模型&#xff0c;它可以将任意文本映射到低维的稠密向量&#xff0c;在文本向量化任务中得到了广泛的应用。可以看到在…

180Kg大载重多旋翼无人机技术详解

一、机体结构与材料 180Kg大载重多旋翼无人机在机体结构上采用了高强度轻量化设计。其主体框架采用航空铝合金材料&#xff0c;既保证了机体的结构强度&#xff0c;又减轻了整体重量。同时&#xff0c;关键部位如连接件、旋翼支撑臂等则采用碳纤维复合材料&#xff0c;以进一步…

独一无二的设计模式——单例模式(Java实现)

1. 引言 亲爱的读者们&#xff0c;欢迎来到我们的设计模式专题&#xff0c;今天的讲解的设计模式&#xff0c;还是单例模式哦&#xff01;上次讲解的单例模式是基于Python实现&#xff08;独一无二的设计模式——单例模式&#xff08;python实现&#xff09;&#xff09;的&am…

Django 对模型创建的两表插入数据

1&#xff0c;添加模型 Test/app8/models.py from django.db import modelsclass User(models.Model):username models.CharField(max_length50, uniqueTrue)email models.EmailField(uniqueTrue)password models.CharField(max_length128) # 使用哈希存储密码first_name …

无人机挂载抛弹吊舱技术详解

随着无人机技术的飞速发展&#xff0c;无人机在军事、安全、农业、环保等领域的应用越来越广泛。其中&#xff0c;挂载抛弹吊舱的无人机在精确打击、应急处置等场合发挥着重要作用。抛弹吊舱技术通过将弹药、物资等有效载荷挂载在无人机下方&#xff0c;实现了无人机的远程投放…

Linux源码阅读笔记07-进程管理4大常用API函数

find_get_pid find_get_pid(...)函数功能&#xff1a;根据进程编号获取对应的进程描述符&#xff0c;具体Linux内核源码对应函数设计如下&#xff1a; 获取进程描述符&#xff0c;且描述符的count1&#xff0c;表示进程多一个用户 pid_task pid_task(...)函数功能&#xff1…

《昇思25天学习打卡营第6天 | 函数式自动微分》

《昇思25天学习打卡营第6天 | 函数式自动微分》 目录 《昇思25天学习打卡营第6天 | 函数式自动微分》函数式自动微分简单的单层线性变换模型函数与计算图微分函数与梯度计算Stop Gradient 函数式自动微分 神经网络的训练主要使用反向传播算法&#xff0c;模型预测值&#xff0…

基于ssm口红商城管理的设计与实现

一、&#x1f468;‍&#x1f393;网站题目 口红商城项目可以提供更加便捷和高效的购物方式。消费者可以在家中使用电脑或手机随时随地购物&#xff0c;避免了传统购物方式中需要花费时间和精力去实体店铺购物的麻烦。此外&#xff0c;口红商城项目还提供了更多的选择和更低的…

JavaSE (Java基础):面向对象(上)

8 面向对象 面向对象编程的本质就是&#xff1a;以类的方法组织代码&#xff0c;以对象的组织&#xff08;封装&#xff09;数据。 8.1 方法的回顾 package com.oop.demo01;// Demo01 类 public class Demo01 {// main方法public static void main(String[] args) {int c 10…

2023年的Facebook营销:超级完整指南

Facebook营销不是可选的&#xff0c;是必须的。Facebook是世界上使用最多的社交平台&#xff0c;每天吸引22.9亿活跃用户。 它也不全是度假照片和虚张声势。对于53.2% 的 16-24 岁互联网用户&#xff0c;社交媒体是他们进行品牌研究的主要来源。而且&#xff0c;66% 的 Facebo…

GoSync+华为智能穿戴使用指导

GoSync官方简介&#xff1a; GoSync 是一款免费应用程序&#xff0c;主要用于将您的可穿戴设备中的步行、跑步、骑自行车和游泳等活动数据同步到您的 Google Fit 和其他健身平台。在开始同步数据之前&#xff0c;您需要将您的可穿戴设备账户与您的健身平台账户连接起来。在创建…

WEB攻防【5】——JS项目/Node.js框架安全/识别审计/验证绕过

1、test.php和test.html对比 #知识点&#xff1a; 1、原生JS&开发框架-安全条件 2、常见安全问题-前端验证&未授权 #详细点: 1、什么是Js渗透测试? 在Javascript中也存在变量和函数&#xff0c;当存在可控变量及函数调用即可参数漏洞 JS开发的WEB应用和PHP、java.NET…

WebRtc实现1V1音视频通话

简介 WebRTC&#xff0c;名称源自网页实时通信&#xff08;Web Real-Time Communication&#xff09;的缩写&#xff0c;是一个支持网页浏览器进行实时语音通话或视频聊天的技术&#xff0c;是谷歌 2010 年以 6820 万美元收购 Global IP Solutions 公司而获得的一项技术。 WebR…

STM32之四:TIM定时器(1-基本定时器)

目录 1. STM32有哪些定时器 2. 基本定时器 2.1 基本定时器主要功能 2.2 基本定时器的框图 2.2.1 时钟输入 2.2.2 至DAC 2.2.3 至时基单元&#xff08;重点&#xff09; 2.2.4 影子寄存器 2.2.5 基本定时器寄存器说明 2.2.5.1 控制寄存器1&#xff08;TIMx_CR1&#x…

压缩包怎么解压,解压压缩包不损坏文件

常见格式&#xff1a; ZIP&#xff1a;最常见的压缩文件格式之一&#xff0c;支持跨平台。RAR&#xff1a;另一种常见的压缩文件格式&#xff0c;通常压缩率比ZIP高&#xff0c;但不如ZIP普及。7Z&#xff1a;来自7-Zip的压缩格式&#xff0c;支持更高的压缩率和一些高级特性。…

设计NOR Flash(FMSC接口)的Flashloader(MCU: stm32f4)

目录 概述 1 硬件 1.1 MCU和S29GL128P10TFI01控制电路 1.1.1 S29GL128P10TFI01 1.1.2 MCU与NOR Flash接口 1.2 STM32F4的FSMC接口 1.2.1 时序信号 1.2.2 外部存储器接口信号 2 Flash leader功能实现 2.1 框架结构介绍 2.2 S29GL128P10TFI01的Flash leader框架 2.3 N…