文章信息
Facebook发表在KDD2020的一篇关于社交网络搜索中的embedding检索问题的工作。
论文题目:
Embedding-based Retrieval in Facebook Search
论文链接:
https://arxiv.org/abs/2006.11632
摘要信息
与传统的网络搜索相比,Facebook的社交网络中的搜索面临着不同的挑战:除了查询文本本身,更重要的是要考虑搜索用户的上下文,从而提供相关更高的结果。
用户的社交图谱是信息这种情况的组成部分之一,同时也是Facebook搜索的独特方面。尽管基于嵌入的检索(embedding-based retrieval, EBR)已在eb搜索引擎中应用了很多年,但Facebook搜索仍主要基于布尔匹配模型。在这篇文章中,作者讨论了将EBR应用到 Facebook 搜索系统的技术。作者介绍了如下经验:
- 提出一套统一的 embedding 框架用于建模个性化搜索中的语义
- 提出基于经典的倒排索引进行在线 embedding 检索的系统。
- 讨论了整个个性化搜索系统中很多端对端的优化技巧,例如最近邻搜索调参经验、全链路优化等。
最后,作者在 Facebook 搜索的 Verticals1 上评估了 EBR模型,在线 A/B test 中观察到了不错的指标增长。
简介
一般而言,搜索引擎包括:
- 召回层,旨在以低延迟和低计算量来检索一组相关文档(通常称为 retrieval);
- 排序层,其目标是通过更复杂的算法或模型将最需要的文档排在最前面(通常称为 ranking)。
Embedding 在检索中的应用称为基于嵌入的检索或简称 EBR。简而言之,EBR 是一种使用嵌入来表示 query 和 doc,然后将检索问题转换为嵌入空间中的最近邻(NN)搜索问题的技术。尽管 embedding 技术可以同时被应用在两个阶段,但相对来说应用在召回阶段可以发挥出更大的作用。
与传统搜索引擎相比,作为社交搜索引擎的 Facebook 搜索面临独特的挑战。在Facebook搜索中,搜索意图不仅取决于 query 文本,而且还受到发起 query 的用户及其所在上下文的严重影响。因此,在Facebook搜索中基于嵌入的检索不是文本嵌入问题,而是一个更复杂的问题——需要完全理解文本,用户和上下文。
在我们蚂上查的搜索优化中,也面临相关的问题,考虑通过上下文进行优化。
在建模过程中,作者提出了统一嵌入的方法。该模型是一种双塔模型,其中一侧是包含 query 文本、搜索用户(searcher)和上下文(context)的搜索请求;另一侧则是文档特征。为了有效地训练模型,作者开发了从搜索日志中挖掘训练数据,并从搜索用户、query、上下文和文档中提取特征的方法。为了快速进行模型迭代,作者在离线评估集中采用了召回指标来比较模型。
系统建模
本文将搜索引擎中的检索任务建模为一个召回优化问题。从离线指标的角度,我们希望最大化 top 返回结果的 recall 指标。
具体来说,给定一个搜索查询,其目标结果集 ,以及模型返回的前
个结果
,有:
继而我们把召回优化问题建模成 query 和 doc 之间基于距离的排序问题,把 query 和 doc 同时表示成低维稠密的向量,通过计算向量空间中的距离(余弦相似度)衡量它们之间的相似度或相关度。
但是在 Facebook 个性化检索场景下,仅仅计算 query 本身与候选文档的相似性是远远不够的,我们同时要考虑用户的上下文信息,比如他关注的人,他身边的朋友和熟人,他的关注话题等等,才能帮用户找到他真实的最想要的结果。为了实现这个目标,本文提出了统一嵌入模型,即Unified Embedding Model,该统一嵌入在推导嵌入时不仅要考虑文本,还要考虑用户和上下文信息。
评价指标
我们建议在整个索引中运行KNN搜索,然后使用等式(1)中定义的 作为模型评估指标。 我们对10000个搜索会话进行了采样,来收集测试集的query 和 target 结果集对,并报告了10000个会话的平均
。
损失函数
在模型训练的损失函数上,本文定义了一个三元组损失函数,使得负例比正例相对 query 的距离尽可能的远。在使用三元组损失函数的情况下,使用随机采样的负样本可以近似求解召回优化问题。
其中,
是
和
向量的距离
是正负对之间的 margin enforced
-
统一嵌入模型
为了学习优化三元组损失的嵌入,统一嵌入模型包括三个主要部分:
一个 query encoder
,它产生一个 query embedding
- 文档编码器
,它产生一个doc embedding
- 以及相似性函数
,它产生一个 query Q 和 doc D 之间的得分。
在这个模型中,默认情况下,这两个编码器 和
是两个独立的网络,但可以选择共享部分参数。
至于相似度函数,作者选择余弦相似度,因为它是嵌入式学习中常用的方法:
训练数据挖掘
对于训练 embedding 语义召回模型来说,如何定义正负样本对于模型的效果至关重要。点击样本作为正样本这个没有疑问,针对负样本作者采用了如下的两种的策略进行试验:
- 随机负样本:随机从文档库中采样 document 作为负样本;
- 曝光但未点击样本:随机采样在同一个 session 中曝光但未点击的样本作为负样本;
本文发现前者作为负样本的效果要明显好于后者,原因是前者可以有效消除负样本偏差。
另外,本文还进行了一组把曝光但是未点击的样本(impressions)作为正样本的实验,实验结果表明并没有带来额外的收益(两者差不多)。
特征工程
统一嵌入模型(unified embedding model)的优点之一是它可以合并文本以外的各种特征,以提高模型性能。
作者在不同的垂直领域一致观察到,统一嵌入比文本嵌入更有效。例如,从文本转换为统一嵌入进行事件搜索(events search)时,召回率提高了 18%,对于组搜索(groups search),召回率提高了 16%。统一嵌入的有效性在很大程度上取决于成功地识别和制作信息特征。
表1显示了通过将每个新要素类别添加到group embedding model (with text features as baseline)来实现的增量改进。
Table 1: Group Embedding Improvement with Feature Engineering
| Unified Embedding | Abs. Recall Gain |
|---|---|
| +location features | +2.20% |
| +social embedding features | +1.77% |
文本特征
Text Embedding 采用 char n-gram,相对于 word n-gram 有两方面的优势,一是有限的词典,char embedding table 会比较小,训练更高效;二是不会有 OOV 问题,subword 可以有效解决拼写错误以及单词的多种变体引入的 OOV 问题。
注意,中文可能需要使用字级别的tokenizer。
与之前的 Boolean 术语匹配技术相比,我们发现使用纯文本特征训练的嵌入特别擅长解决以下两种情况:
•模糊文本匹配。 例如,该模型能够学习在 query “ kacis creations” 和 Kasie’s creations 页面之间进行匹配,而基于术语的匹配则不行。
•可选。 在 query 为 “mini cooper nw” 的情况下,模型可以通过删除“ nw”以获得可选的术语匹配,从而学习检索到 Mini cooper owner/drivers club 组。
地址特征
位置特征对于搜索引擎的很多场景是非常重要的,因此本文在 query 和 document 侧的都加入了 location 的特征。
对于 query 方面,我们提取了搜索者的城市、地区、国家和语言。
对于 doc 方面,我们添加了公开的可用信息,例如由管理员标记的相关标签。 结合文本功能,该模型能够成功学习查询和结果之间的隐式位置匹配。
表2 列出了 文本嵌入模型 与 文本+位置嵌入模型 返回的用于组搜索的最相似文档的比较。 我们可以看到具有位置特征的模型可以学习将位置信息融合到嵌入中,来自 Louisville, Kentucky 的搜索者的相同位置的文档有更高的排名。(说白了就是本地优先)
社交嵌入特征
为了有效利用 Facebook 社交网络中的丰富信息,本文额外地训练了一个社交网络的 Graph Embedding,然后将这个预训练的 Embedding 作为特征输入到模型当中。
SERVING
ANN
近似最近邻搜索(approximate nearest neighbor search, ANN)
