在推荐系统中,多路召回所谓的并发式,哪路recall数据先到,哪路就先进,这样是否科学?

如果不同路的召回的实际影响效果不同,那么由读取性能决定先后会不会是个大坑?
关注者
168
被浏览
25,476
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

首先回答一下题主的问题,这里有科学的地方也有不科学的地方。

  1. 并发请求多路召回是科学的,绝大部分工业届的推荐系统都是并发请求多路召回的。这是系统性能的考虑。
  2. 哪路recall数据先到,哪路就先进是不科学的。并不是与时序相关,依然是性能问题。召回结束之后,会进入排序阶段。排序时需要读取user feature,item feature和context feature。通常召回结束后,会对item进行归类,截断,过滤,去重。然后统一到feature service中获取特征,用于排序模型。

那就简单说说从召回到排序,系统通常都会做哪些事情:

  1. 首先召回阶段是会配置召回的请求个数,通常会根据每路召回的后验表现设置动态配比,或者是根据业务的需求进行设置。
  2. 所有的召回并发请求并设置timeout,防止系统雪崩。
  3. 所有的召回结果merge。
  4. 过滤:系统整体的黑名单,以及by user的黑名单过滤都可以在此处实现。
  5. 去重:此处通常都是简单的指纹去重,不做特别精细的多样性去重(比如相似新闻通常在排序后做)。
  6. 过滤和去重都是为了减少后续系统的压力,防止浪费算力进行后续步骤。
  7. 粗排后截断。当然粗排也可以放在每个召回队列中做,也是根据业务而定。
  8. 精排。
  9. 排序后的rerank处理,包括多样性去重,产品的特殊boost逻辑等。

所有召回结束后,其实有merge阶段,会等待所有的召回全部返回后,处理一个大列表,不会存在哪路召回先到就处理哪路的情况。