闲鱼搜索是闲鱼APP交易场景的最大入口,搜索占交易归属的一半以上,因此提高交易效率是工程和算法迭代优化的主要目标。而只以效率为最终衡量标准,不仅会影响搜索质量,阻碍交易,还会恶化整个平台的长期生态建设,所以搜索相关性和平台生态对搜索平台至关重要,平台生态治理(如恶意引流、欺诈、黑产等治理)涉及运营、算法、架构等诸多因素。本文主要讨论搜索相关性,它是整个产品的基石,是搜索技术的核心。下面将介绍闲鱼搜索相关性遇到的问题现状、优化升级方案以及后续进一步优化方向。
问题目前闲鱼搜索的扩展和召回策略有很多,如查询重写、i2i、产品图片的文本提取、同一产品的文本信息扩展等。扩展召回策略是必要的,但不可避免地会引入下游相关性差的案例。同时,下游的关联控制非常有限,精行阶段的关联主要存在以下问题:
经过多轮top和中长尾相关案例分析,整理出top的问题类型(同一个案例可以归为多个类型),并给出典型例子:
图1 .坏案例分析
综上所述,目前系统的问题主要在于关联策略覆盖不足、语义表达不准确、基础数据更新迭代慢等等。
技术方案针对上述基础关联因子弱、覆盖不足的问题,闲鱼搜索关联规划第一阶段的优化目标是建立相对完善、高覆盖的基础关联匹配链接,第二步是在基础策略的基础上探索精细化的语义匹配策略,提高关联度。本文主要介绍第一阶段方案。
工程链接设计
闲鱼搜索目前的工程链接是经典的搜索架构:SPL用于数据传递和中间参数构建;负责查询相关的理解和特征提取;检索引擎(Ha3)做的是回忆、粗排、精排、评分、分档;RankService通过在线模型服务实现深度模型重排序。
相关性匹配链接有两个选项,一个是在检索引擎(Ha3)的精细排序插件中完成,另一个是在RankService中实现。虽然两者各有千秋,但我们选择在搜索引擎(Ha3)的精细排序子插件中,灵活实现召回和精细排序阶段不同数量的便捷实验。出于效率的考虑,对于以下特征,离线提取是优选的:
离线提取查询特征,并以增量方式导入在线KV存储器。在线QP请求KV存储器获得相应的特征。最后,通过SPL将查询特征发送到检索引擎(Ha3)以精确计算插件。
项目特征的离线提取还包括总量和增量两部分:日级别的总量和15min级别的增量,返回给检索引擎(Ha3)。
搜索引擎(Ha3)精算分数插件获取查询和条目的特征,在线计算相关分数。
图二。搜索架构图
算法实现
搜索算法最终的doc排名往往会考虑很多因素,而闲鱼搜索更重要的因素包括交易效率因子、关联因子等业务规则。为了简化,我们只能先讨论相关性和交易效率因素,综合起来大致有三种方式:
相关度分为等级,下游根据相关度分层排序。
对相关性得分和效率得分进行加权,得到最终排名得分。
以及相关性和效率目标联合优化。
为了绝对控制相关性,尽可能小的影响效率模型的排名得分,算法端的环节选择了第一种方式:在理解查询和商品的基础上,构造各种相关性匹配特征,然后融合特征得到相关性档位(这里分为三档)。最后根据规则进行分类,输出到检索引擎(Ha3)进行插件的精确排列和RankService重排进行相对档位控制。
整体相关性层次链接如下,其中算法端最关键的部分包括基础理解、特征提取和特征融合。特征提取往往依赖或包含基本理解,所以下面将重点讨论特征构建和特征融合,关于特征构建的讨论将穿插在基本理解的工作中。
图3。从属链接
特征结构
搜索相关性的特征分为三个维度:基本特征、文本匹配特征和语义匹配特征。基本特征主要包括查询和条目的统计特征,以及结构相关的匹配特征,比如类目是否匹配,关键属性(类目、品牌、型号等。)匹配与否。文本匹配特征主要是字面匹配特征,如术语匹配数、匹配率、与同义词策略的匹配、与术语权重的匹配以及最基础的BM25评分。语义匹配特征主要包括基于点击行为的表征匹配、文本和多模态语义匹配。
图4。搜索相关性的特征
其中基本特征和文本匹配特征比较常规,不做详细展开。下面重点介绍语义匹配特性的进一步介绍:
文本语义匹配
考虑到性能,文本的语义匹配采用双塔向量匹配模型的结构:基础模型使用开源的BERT,查询和项共享相同的参数权重。同时,为了适应下游的相关分类,模型采用了逐点训练的方法。由于篇幅原因,此处不展开模型细节。相对于模型结构的设计,其实闲鱼搜索中更重要的工作在于训练样本的构建。目前,由于缺乏人工标注数据的积累,这部分工作主要解决以下两个问题:
挖掘高置信度样本可以缓解搜索点击日志中“点击但无关”的问题。
定制化的负样本构造可以避免模型的快速收敛,只能判断简单的语义相关性,而无法区分上面提到的闲鱼场景的“勉强相关”的疑难案例。
针对上述问题,参考集团相关经验,结合对闲鱼搜索数据的观察分析,制定如下抽样方案:
阳性样本:
足够曝光下的高点击率样本(点击率大于相同查询下产品的平均点击率)
阴性样本:
同一父类别的相邻叶类别的负采样。
高曝光低点击品类样本:在同一查询搜索下,根据被点击商品的品类分布,取相对超低频的品类样本作为负样本(如品类分布比
在曝光充足的情况下,低于对应查询平均曝光点击率10%的样本为负样本。
基于查询的核心词替换构造负样本:比如对于“品牌A+品类”结构的查询,使用“品牌B+品类”结构的查询作为其负样本。
构造随机负样本:为了增加随机性,这部分实现了同批次的其他样本作为训练的负样本,同时引入了批次硬样本机制。
上述采样方法得到的训练数据的随机采样精度为90%+,进一步采样后的数量级为4kw+。在此基础上,对双塔模型进行训练。在线的方法是离线提取嵌入,在线查表,计算向量相似度。
图5。文本语义模型
这部分工作独立上线,抽样top300查询+随机200查询搜索满意度+6.6%;相同的文本语义向量用于i2i向量召回,在闲鱼购买场景中重用,核心指标点击量和交互量相对提升20.45%。
定义搜索query top10商品完全相关/基本相关占比>80%为满意,一组query评测结果为满意的占比为query满意度。多模态语义匹配
除了文本语义向量匹配,本文还尝试了多模态语义向量。模型端使用预训练的多模态BERT,类似的工作组已经做了很多尝试。本文主要参考了([1]、[2])并对模型和策略做了一些调整:
多图像特征提取是首先将图像区域特征提取为图像特征序列(resnet合并前的特征序列),提高了链接效率;
将Bert-base替换为伊莱克特-small,减少模型参数(47M模型测试后,下游分类任务精度小于2点),便于与Resnet进行E2E联合训练。
下游匹配任务仍然使用双塔模型的策略,与文本语义模型不同。这里直接采用三重损失的方式,主要是考虑增加模型之间的差异,让后面的模型之间有更大的空差距。
图6。多模态语义模型
PS: 该部分工作离线AUC为0.75相对较高,在下游特征融合AUC提升1个点以上。但在上线过程中,由于需要图像处理,增量商品特征更新回流相对其他链路延迟较大,容易造成新商品特征缺失,因此还需要进一步链路优化。单击图表表示匹配
除了通过上面提到的语义向量引入语义信息,还可以通过搜索日志中的点击行为表示查询或项目构造图结构引入新的语义表示。其中基于图结构的匹配算法swing算法在阿里应用广泛,相关文章也很多,此处不赘述。对于闲鱼场景,首先是< user,item & gt单击配对以更改为
的权重是swing算法输出的分数,默认情况下关键字查询的词权重为1。对于具有稀疏行为的长尾查询,上面的语义向量用于召回最近的头部查询,以补充其语义表示。结果查询代表一个实例:
在获得查询表示后,item也做出类似的规范化表示。在线时,使用稀疏存储,在线计算匹配词的加权和作为点击图来表示匹配分数。
特征融合
在准备了必要的相关性特征之后,下一步是有效地融合许多特征。本文采用经典的GBDT模型来完成这一步。选择GBDT模式的优势一方面在于搜索引擎(Ha3)的精细排序插件中的现成组件可以直接复用;另一方面,与更简单的LR模型相比,可以节省很多特征预处理步骤,使得在线策略更简单。
模型的训练采用人工标注的训练数据,标注的目标为四个等级(完全相关、基本相关、勉强相关、完全不相关)。在训练阶段,四个档位映射到1、0.75、0.25和0四个分位数,GBDT模型通过回归拟合分位数。因为这部分策略是子特征的系综,所以不需要太多的训练数据(这里的数量级是10000)。
图7。特征融合模型
最后,经过常规的参数调整,GBDT特征融合模型的离线AUC可以达到0.86,基本符合预期(最优单特征AUC为0.76)。在文本语义向量的基础上,该策略完全在线,不影响交易效率:随机查询抽样(top 800w)DCG@10相对提升6.51%,查询搜索满意度+24%;头部查询也得到了相应的提升,搜索体感感受也相应得到了有效提升。
小结与思考闲鱼搜索相关性优化第一阶段的重点是建立一个相对完整的链接作为基线,为进一步优化奠定基础。通过这一季度的优化,一定程度上缓解了基础关联的问题,但仍有较大的优化空。
从进一步的案例分析可以看出,目前的策略在细粒度的属性/意图匹配上做得不够好,也存在对goodcase的虚假抑制。所以后续的优化方向也很明确:优化现有的功能细节;添加更精细的关联特性,如查询标签、产品结构特性、核心词匹配等。积累更多的人工标注数据,探索更细粒度的匹配模型。
最后,提出了战略优化过程中的两点思考:
1.相关性与交易效率的“冲突”:工作中最受挑战的问题,为什么相关性的提高没有提高交易效率?关于这个问题的一些考虑:
不完善的技术方案是客观存在的。如前所述,由于策略问题对goodcase的虚假打压会损失一些交易效率。
或者产品治理的优化会打压一些勉强相关但可能交易的周边产品。比如,优化相关性后,搜索“手机”类型查询将不再产生周转频率较高的“手机壳”、“屏幕”、“总成”等配件和零件,搜索“xx汽车”将不再产生“轮胎”、“轮毂”等配件。优化后,“低价引流”或“欺诈”商品明显减少,但有趣的是,欺诈商品的交易效率往往高于正常商品。
完全不相关的查询优化确实会提高交易效率,但在与上述交易效率的损失中和后,交易效率的整体提升会变得乏力。
最后,我个人认为电商搜索优化的路径应该是在相关性相对严格的情况下,一开始就优化交易效率,然后逐步放松召回限制,同时优化关联策略,实现相关性和交易效率的同步提升。如果在弱关联的条件下,一开始只注重交易效率,让系统处于飞行状态,突然注重体感,一脚刹车,必然带来呕吐的感觉。
2.体感感觉是否能骗人:二手交易市场本身就是一个“杂”的特质。很多时候,技术生并不是闲鱼的目标用户。我认为的相关性和体感,不一定是用户真正的需求。一刀切的治理和相关性优化会不会失去闲鱼产品的一些特色需求的满足(当然不是说欺诈和色情)?要真正解释这个问题,还需要更多的数据支持和对产品更深入的了解。
[1]郝坦和莫希特·班萨尔。Lxmert:从变压器学习跨通道编码器表示。《2019年自然语言处理经验方法会议论文集》,2019年。
[2]贾森·卢、Dhruv Batra、德维·帕里克和斯特凡·李。维尔伯特:为视觉和语言任务预先训练任务不可知的视觉语言表征。arXiv预印本:1908.02265,201