Embedding-based Retrieval in Facebook Search 论文阅读笔记


本文主要介绍了Facebook在search领域的模型和实践经验

abstract

Facebook将EBR(embedding-based retrieval)与传统的Boolean matching结合。也讨论了不同的优化tricks,ANN调参等等。总体来看,信息量很大,非常值得学习的一篇论文。

1. Introduction

以往search大多基于term matching,semantic matching是一个挑战(从语义的角度理解用户的搜索意图)。过去几年,深度学习取得了很大的成功,特征学习( embedding is a way to represent a sparse vector of ids as a dense feature vector)在很多领域十分有效。学习的embeddings可以用于query和documents的特征应用到搜索引擎的多阶段。
搜索引擎包含recall(a recall layer targeting to retrieve a set of relevant documents in low latency and computational cost, usually called retrieval)和precision(a precision layer targeting to rank the most desired documents on the top with more complex algorithms or models, usually called ranking),两层中都可以应用embeddings。
简言之,EBR使用embeddings代表query和document,将搜索的问题转化为向量空间内的NN(nearest neighbor)搜索问题。
EBR同时面临的两个问题,一是搜索的documents量级很大,二是将EBR融入到term matching together score。
Facebook的搜索比传统的搜索面临了不同的挑战,搜索时不仅要考虑query text,还包含了searcher的上下文信息,searcher的社交网络是上下文中比较重要的一部分,具体考虑有text,user,context。
双边模型:1.query text searcher context 2.document 3.离线验证评估
如果有效的构建训练任务呢?We investigated two different directions, hard mining to address the challenge of representing and learning retrieval tasks effectively, as well as ensemble embedding to divide the model in multiple stages where each stage has different recall and precision tradeoff.
有了model和embeddings后,直观上是做embeddings KNN,但是作者发现这并不是最优的选择:

  • 运行成本很高
  • 维护成本很高
  • 两个不同的候选集可能有交叉

Thereafter, we developed a hybrid retrieval framework to integrate embedding KNN and Boolean
matching together to score documents for retrieval.应用Faiss library 做向量quantization,然后与倒排索引结合构建搜索系统,这样做主要有两点好处:

  • 支持embedding和term matching的联合优化
  • 支持term matching约束下的embedding KNN

在这里插入图片描述
搜索是一个整体,这段就不翻译了。Search is a multi-stage ranking system where retrieval is the first stage, followed by various stages of ranking and filtering models. To wholly optimize the system to return those new good results and suppress those new bad results in the end, we performed later-stage optimization. In particular, we incorporated embeddings into ranking layers and built a training data feedback loop to actively learn to identify those good and bad results from embedding-based retrieval.

2. Model

以query对应的topk个结果 d 1 , d 2 , . . . , d k {d_1,d_2,...,d_k} d1,d2,...,dk模型的目标是最大化topk结果的召回率
在这里插入图片描述
结果数据可以是用户的点击或者用户的打分。
将上述的召回问题看做query和documents的余弦距离问题。
We propose to use triplet loss to approximate the recall objective to learn the neural network encoder, which is also called embedding model.
上述仅仅是将text embedding,还需要考虑用户的个性化需求,例如,用户搜索"John Smith",可能是想搜索他的朋友或者熟人。To model this problem, we propose unified embedding which considers not only text but also user and context information in deriving embeddings.

2.1 Evaluation metrics

我们建议在整个索引中运行KNN搜索,使用recall@K方程式定义的模型评估指标。对10000个搜索sessions进行抽样,收集评估集的query和目标结果集对,计算10000个sessions的 averagedrecall@K

2.2 Loss function

在这里插入图片描述
在这里插入图片描述

D ( q ( i ) , d ( i ) ) = 1 − S ( Q , D ) D(q^{(i)},d^{(i)}) = 1- S(Q,D) D(q(i),d(i))=1S(Q,D)

We found that tuning margin value is important – the optimal margin value varies a lot across different training tasks, and different margin values result in 5-10% KNN recall variance.
关于负样本的选择是关键,这里我把原文贴过来
We believe that using random samples to form negative pairs for the triplet loss can approximate the recall optimization task. The reason is as follows. If we sample n negatives for each one positive in the training data, the model will be optimizing for recall at top one position when the candidate pool size is n. Assuming the actual serving candidate pool size is N, we are approximately optimizing recall at top K ≈ N/n. In Section 2.4, we will verify this hypothesis and provide comparisons of different positive and negative label definitions.

2.3 Unified embedding model

主要就是这个图,两个encoder是独立的网络,但部分参数可能共享
在这里插入图片描述

2.4 Train data mining

正向和负向的数据定义是十分重要的。
在选择点击数据作为positive,negative的数据选择:

  • random samples 随机负样本
  • non-click impressions 未点击的曝光数据

从实验结果来看随机样本明显优于非点击的曝光数据。我们认为这是因为这些负面因素偏向于hard cases,可能在一个或多个因素中匹配了query,但是索引中的大多数文档都是根本不匹配查询的 easy cases。如果所有的训练数据都是hard negative,会改变训练数据对实际检索任务的代表性,这可能会给学习的嵌入带来不小的偏差。
作者也尝试了不同的positive mining

  • 点击数据
  • 曝光数据
    clicks vs impresssions 效果类似。作者还尝试了用曝光数据给点击数据做数据增强(扩充,这里作者并没有说清楚),效果并不理想。

结论:使用点击作为积极和随机作为消极可以提供一个合理的模型性能。

3. Feature engineering

3.1 Text features

unified embedding比单纯的text embedding更有效
文本特征:通常采用基于character n-gram,相比于word n-gram有两点好处:

  • 有限的vocabulary size,训练更有效
  • 子词表征是鲁棒的,当我们遇到的query和document是词汇表外的(可能有拼写变化或错误)

实验结果也表明character n-gram优于word n-gram,在字符三元组的基础上,补充了单词n-gram表示,这提供了较小但稳定的模型改进。但是,由于单词n-gram的基数通常非常高(例如,对于查询三元组为352M),因此需要使用哈希来减小嵌入查找表的大小。但即使存在hash冲突的缺点,添加单词n-ngrams仍然可以提供额外的收益。

对于一个Facebook实体,主要是人名或者非人的title,单纯使用文本特征训练的embeddings相比于term matching,更擅长以下两点:

  • 模糊文本匹配。例如,模型能够学习匹配query=“kacis creations”到Kasie的creations页面,而基于术语的匹配则不能。
  • 选项化。在query=“mini-cooper-nw”的情况下,模型可以学习检索预期的mini-cooper-owner/drivers-club,方法是删除“nw”作为可选的术语匹配。
3.2 Location features

位置特征。位置匹配在许多搜索场景中都是有利的,例如搜索本地业务/组/事件。为了使嵌入模型在生成输出嵌入时考虑位置,我们在查询和文档端特征中都添加了位置特征。对于查询端,我们提取了搜索者的城市、地区、国家和语言。对于文档端,我们添加了公开可用的信息,例如管理员标记的显式组位置。结合文本特征,该模型能够成功地学习查询和结果之间的隐式位置匹配。

3.3 Social embedding features

为了利用丰富的Facebook社交图来改进统一的嵌入模型,我们训练了一个独立的嵌入模型来嵌入基于社交图的用户和实体。这有助于将综合社会图整合到一个统一的嵌入模型中。

4 Serving

4.1 ANN

我们在系统中部署了一种基于反向索引的近似近邻(ANN)搜索算法。有以下几点优势:

  • 由于embeddings quantization,它的存储成本更小
  • 它更容易集成到现有的基于倒排索引的检索系统中。

我们利用Faiss library对向量进行vector quantization,然后在现有的倒表扫描系统中实现了高效的神经网络搜索。
嵌入量化有两个主要部分,一个是粗量化,通常通过K-means算法将嵌入向量量化到粗簇中,另一个是乘积量化[8],它进行细粒度量化以有效计算嵌入距离。
我们需要调整几个重要参数:

  • 粗略量化,粗量化有不同的算法IMI和IVF。而调整cluster数对性能和召回率都有影响
  • 产品量化,产品量化算法有多种变体,包括PQ、OPQ、带PCA变换的PQ。而PQ_bytes是一个重要的参数
  • nprobe,用于决定将有多少个簇分配给查询嵌入,它将进一步决定扫描多少个粗簇。此参数将影响性能和召回

我们建立了一个离线管道来有效地调整这些参数。此外,我们还需要进行在线实验,在离线调整的基础上从所选的候选对象中确定最终设置。
下面我们将分享我们从ANN tuning中学到的技巧和经验。

  • 根据扫描的文档数量调整召回。初步比较了在相同的num_cluster和nprobe设置下不同的粗量化算法的召回率。我们发现聚类是不平衡的,特别是对于IMI算法,大约有一半的聚类只得到几个样本。对于相同的num_cluster和nprobe设置,这将导致扫描的文档数不同。因此,我们使用扫描文档的数量作为一个更好的度量来近似ANN调整的影响
  • 模型改变时,调整ANN参数
  • 多尝试OPQ
  • pq_bytes = d/4
  • 线上调整nprobe,num_clusters,pq_bytes,来确定真正的影响

4.2 System Implementation

未完待续…

7.conclusion

百度翻译还可以,贴在下面
利用深度学习研究的进展,在搜索检索中引入语义嵌入来解决语义匹配问题具有长远的意义。然而,由于建模困难、系统实现和跨栈优化的复杂性,这也是一个极具挑战性的问题,特别是对于大规模的个性化社交搜索引擎。本文提出了一种统一嵌入的社交搜索语义建模方法,并在一个经典的基于倒排索引的搜索系统中实现了基于嵌入的检索。这只是实现统一的嵌入模型和基于嵌入的检索系统的第一步。要使系统端到端的优化,使其在结果质量和系统性能方面表现良好,还有很长的路要走。我们介绍了我们在模型改进、服务算法调整和后期优化方面的经验。我们相信这将是一个宝贵的经验,帮助人们在真实的搜索引擎中更快地进行基于嵌入的检索。基于嵌入的检索技术在生产中的成功应用,为利用最新的语义嵌入学习技术提高检索质量打开了一扇大门。我们介绍了我们在这个方向上的第一步所取得的进展和收获,特别是在硬挖掘和嵌入集成方面。未来将有巨大的机会不断改进这一制度。未来,主要有两个方向要追求。一是深入。在建模方面,我们可以应用最新的高级模型,比如BERT[4],或者构建特定于任务的模型来解决特定的问题。我们可以在不同的阶段进行更深入的研究,包括服务算法优化和排名模型改进,以全栈失效分析为指导,找出不同栈中改进的机会。另一个是走向世界。我们可以利用预先训练好的文本嵌入模型来开发一个通用的文本嵌入子模型来应用于不同的任务。此外,我们可以开发一个跨所有用例的通用查询嵌入模型。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值