Embedding-based Retrieval in Facebook Search
Posted 我家大宝最可爱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Embedding-based Retrieval in Facebook Search相关的知识,希望对你有一定的参考价值。
facebook的社交网络检索与传统的搜索检索的差异是,除了考虑文本,还要考虑搜索者的背景。通用搜索主要考虑的是文本匹配,并没有涉及到个性化。像淘宝,youtube这些其实都是涉及到了用户自身行为的,除了搜索还有推荐,搜推一体
。为了个性化搜索,facebook构建了一套统一框架以及基于倒排索引
1. 介绍
搜索引擎帮助用户在海量的信息中进行检索,google和bing开发了各种技术来提高搜索质量。由于语义和意图非常难以表征,因此当前的搜索大多依赖于term匹配方法,也就是关键字匹配。
语义匹配:解决关键词不能完全匹配但是可以满足用户搜索意图所需要的结果
深度学习在语音,机器视觉和自然语言理解中取得了重大的进展。embedding即表征被证明是一种有效的方法。本质上来说embedding是一种将ids的稀疏向量表征为密集向量的方法,也被称为语义嵌入。一旦embedding建立好,就可以作为query和doc的表示,从而可以应用到搜索引擎的各个阶段。
一般来说,搜索引擎分为召回和排序。embedding在这两部分都可以使用,但是通常应用在召回层,因为位于系统的底部,而且也是瓶颈所在。基于embedding的检索通常称为EMR,基于embedding来表征query和doc,然后将检索问题转换为嵌入空间最邻的搜索问题。
召回:以低延时和低计算成本来检索一组相关的文档,称为recall
排序:以更复杂的算法和模型在顶部对最想要的文档进行排名,称为rank
EBR在搜索引擎中的最大挑战就是数据量巨大的问题,召回层需要处理数十亿或者万亿的文档。而且搜索引擎通常需要将基于embedding和term匹配的检索结合在一起,在检索层对文档进行评分。
为了解决这个问题,facebook提出了统一嵌入,这是一个双塔模型,其中一边是搜索请求
,包括query,encoder和context,另一边则是doc。训练数据是从搜索日志中挖掘的,并从encode,query和context提取特征。
将embedding和term匹配的方法合并在一起非常简单,但是发现是次优的,
2. 模型
给定一个query,它的目标结果是
T
=
t
1
,
t
2
,
.
.
.
t
N
T=\\t_1,t_2,...t_N\\
T=t1,t2,...tN,模型返回的TopK个结果是
D
=
d
1
,
d
2
,
.
.
.
d
K
D=\\d_1,d_2,...d_K\\
D=d1,d2,...dK,模型想要最大化
r
e
c
a
l
l
@
K
=
∑
i
=
1
K
d
i
∈
T
N
recall@K=\\frac\\sum_i=1^Kd_i \\in TN
recall@K=N∑i=1Kdi∈T
目标结果
T
T
T是基于某些条件与query相关的doc,例如用户点击的结果,或者是基于人类评级的文档。将召回优化的问题定义为基于query和doc之间计算距离的排名问题。query和doc都通过编码器转换为向量,使用余弦值作为距离度量,损失函数使用triple loss。
对于facebook来说,检索不仅需要考虑文本的内容,而且还需要考虑搜索者的信息以及搜索的上下文,以此来满足用户的个性化。以搜人为例,虽然Facebook有数千个名为小王的用户,但是用户的搜索目标通常是他们的熟人。
2.1 评价指标
线上AB测试,离线是平均recall@K
query | 目标文档个数 | 召回结果中有几个在目标文档中 |
---|---|---|
q 1 q_1 q1 | n 1 n_1 n1 | m 1 m_1 m1 |
q 2 q_2 q2 | n 2 n_2 n2 | m 2 m_2 m2 |
… | ||
q k q_k qk | n k n_k nk | m k m_k mk |
r e c a l l @ K = m 1 + m 2 + . . . + m k n 1 + n 2 + . . . + n k recall@K=\\fracm_1+m_2+...+m_kn_1+n_2+...+n_k recall@K=n1+n2+...+nkm1+m2+...+mk
2.2 损失函数
给定一个三元组
(
q
i
,
d
+
i
,
d
−
i
)
(q^i,d^i_+,d^i_-)
(qi,d+i,d−i),其中
q
i
q^i
qi是query,
d
+
i
d^i_+
d+i和
d
−
i
d^i_-
d−i分别是正样本和负样本。loss定义为
L
=
∑
i
=
1
N
max
(
0
,
D
(
q
i
,
d
+
i
)
−
D
(
q
i
,
d
−
i
)
+
m
)
L=\\sum_i=1^N\\textmax(0,D(q^i,d^i_+)-D(q^i,d^i_-)+m)
L=i=1∑Nmax(0,D(qi,d+i)−D(qi,d−i)+m)
其中 D ( u , v ) D(u,v) D(u,v)两个向量的距离度量,距离越近说明向量越接近也就是越匹配。我们的期望是 q i q^i qi与正样本 d + i d^i_+ d+i距离越小越好,与负样本 d − i d^i_- d−i的距离越大越好,也就是说两个距离之间的差值越大越好。用下面这个表来说明,假设m是5
query | 正样本 | 负样本 | 距离 | loss |
---|---|---|---|---|
q q q | d + 1 = 100 d^1_+=100 d+1=100 | d − 1 = 90 d^1_-=90 d−1=90 | 10 | m a x ( 0 , 10 + 5 ) = 15 max(0,10+5)=15 max(0,10+5)=15 |
q q q | d + 1 = 8 d^1_+=8 d+1=8 | d − 1 = 1 d^1_-=1 d−1=1 | 2 | m a x ( 0 , 2 + 5 ) = 7 max(0,2+5)=7 max(0,2+5)=7 |
q q q | d + 1 = 9.9 d^1_+=9.9 d+1=9.9 | d − 1 = 9.9 d^1_-=9.9 d−1=9.9 | 0 | m a x ( 0 , 0 + 5 ) = 5 max(0,0+5)=5 max(0,0+5)=5 |
q q q |
d
+
1
=
80
d^1_+=80
d以上是关于Embedding-based Retrieval in Facebook Search的主要内容,如果未能解决你的问题,请参考以下文章
ICLR 2021 | Autoregressive Entity Retrieval Information Retrieval 倒排索引 学习笔记 Image Retrieval Using Customized Bag of Features Deep Learning for Information Retrieval UT-Austin大学在Image search and large-scale retrieval方面的一系列papers |