搜索相关性概述
最近一段时间在研究搜索的相关性问题,一个颇有搜索特色的问题。搜索场景下的相关性,指的是展示给用户的内容,跟用户输入的 query 必须满足一定的关联关系,比如说搜 “肯德基”,就不应该出现 “麦当劳” 的内容
不同于在 feed 场景下,用户对内容基本无预期,feed 场景的推荐算法可以基于用户历史浏览兴趣、最近热点内容等做 exploit,或是通过探索用户的一些新兴趣做 explore。但在 search 场景下,用户主动搜索输入的 query 往往是有强意图的,出的内容也是要符合用户的这个预期的,否则这些搜索就是无效的,进而会造成搜索留存(LT)的损失。而在用户视角下,如果平台搜索的算法做得足够好,应该在第一页就能够找到自己想要的内容,而这这其实也导致了单 pv 下 search 浏览深度会远比 feed 要低
场景上的差异,会导致 search 相较于 feed 的优化目标也有不小差异。比如说搜索 LT 的度量中,时长并不是最重要的指标;从排序角度,增加了相关性的约束,导致特定 query 下可被用来排序的候选有限(相较于 feed),同时排序公式中往往也要加入相关性因子来达成相关性目标,对最大化原目标(如广告就是收入)的效率造成干扰
排序的相关性约束,也是导致了很多在 feed 下有效的 ranking 迭代,在 search 中效果不优甚至无效的原因,比如说这个问题里提到的现象 为什么搜索系统技术文章很少,但推荐系统技术文章很多?,一个很重要的原因是给定 query,相关性候选不足导致了 ranking 搜索空间不足,而 ranking 本身的收益应该是随着候选量增加的边际效率是递增的
本文主要探讨下搜索场景下的相关性问题的解决思路。如果粗略地划分,相关性往往会涉及到两部分:相关性的建模,以及相关性模型预估分的作用机制,本文尝试对这部分的内容详细展开做一些讨论