在工业级的推荐系统中,需要处理的物品(例如新闻、商品、视频)数量极其庞大,可能达到数亿甚至数十亿级别。为了在极短的时间内(通常是毫秒级)为用户提供精准的个性化推荐,系统需要一套高效的多阶段过滤和排序流程,这就是经典的“召回 -> 粗排 -> 精排 -> 混排”架构。这套架构就像一个层层筛选的漏斗,旨在平衡计算效率和推荐效果。
1. 召回 (Recall)
目标:快速从海量的物品库中,初步筛选出用户可能感兴趣的几千到上万个候选物品。
召回是整个推荐流程的第一步,它的首要任务是“求全”和“快速”。由于面对的是整个物料池,召回阶段必须非常高效,因此通常会采用多种策略并行的方式(即多路召回),从不同角度和维度发现用户的潜在兴趣。
常用方法:
- 协同过滤:基于用户行为数据,找出与目标用户兴趣相似的其他用户(User-Based),或者找出与用户过去喜欢的物品相似的其他物品(Item-Based)。
- 基于内容的召回:根据物品本身的属性(如文本标签、分类、关键词)和用户的兴趣画像进行匹配。
- 模型召回:利用深度学习模型,如双塔模型(DSSM),将用户和物品分别映射到同一个向量空间,通过计算向量相似度来召回候选集。
- 热门召回:推荐全局或特定领域的热门物品,作为一种保底策略和探索新兴趣的手段。
- 实时行为召回:根据用户最近的实时行为(如刚刚点击、浏览的物品)快速召回相关内容。
特点:模型和策略相对简单,计算速度快,目标是保证用户感兴趣的内容能被尽可能地找回来,宁可错杀一千,不可放过一个。
2. 粗排 (Coarse Ranking / Pre-ranking)
目标:对召回层送来的几千个候选物品进行初步排序,进一步筛选出几百个相关性较高的物品,送给精排。
粗排是召回和精排之间的一个过渡环节,主要目的是减轻精排阶段的计算压力。 因为召回可能会引入一些相关性不高的物品,如果全部交由复杂的精排模型处理,会非常耗时。粗排会使用相对简单的模型和少量特征,对候选集进行一次快速的打分和排序。
常用方法:
- 使用逻辑回归(LR)等简单的机器学习模型。
- 使用简化的深度学习模型或特征蒸馏后的小模型。
- 利用一些静态或半静态的质量分数(如历史平均点击率)进行排序。
特点:承上启下,平衡效率和效果。模型比召回复杂,但比精排简单;使用的特征比召回多,但比精排少。
3. 精排 (Fine-Ranking / Ranking)
目标:对粗排筛选出的几百个物品进行精准的个性化排序。
精排是整个推荐系统中最核心、也是技术含量最高的环节,它的目标是“求准”。 在这个阶段,系统会使用所有能用上的用户特征、物品特征和上下文特征,通过一个非常复杂的深度学习模型,对每个候选物品进行精准的打分。 这个分数通常是对某个或多个业务指标的预测,如点击率(CTR)、转化率(CVR)、观看时长等。
常用方法:
- 深度神经网络(DNN):如Wide & Deep、DeepFM、DIN等,能够捕捉特征之间复杂的非线性关系。
- 多目标学习:模型同时预测点击、收藏、转发、购买等多个目标,并进行加权融合,以综合衡量物品的价值。
特点:模型复杂,特征维度高,计算量大,排序结果最精准。 这是决定最终推荐效果的关键一环。
4. 混排 (Blending / Re-ranking)
目标:在精排结果的基础上,进行最终的调整和优化,生成最终展示给用户的推荐列表。
混排(也常被称为重排)是推荐结果呈现前的最后一道工序。它不仅仅依赖于精排的分数,还需要考虑用户的整体体验和平台的业务目标。
主要处理的策略:
- 多样性:避免推荐结果高度同质化。例如,即使用户是篮球迷,也不希望首页全是NBA的内容,混排会打散相似的内容。
- 去重:过滤掉用户已经看过或者近期推荐过的内容。
- 业务规则干预:根据运营策略,强行插入某些活动内容、广告或需要扶持的新内容。
- 上下文感知:根据用户当前的时间、地点、设备等信息进行微调。
- 多业务混排:在信息流中,需要将不同业务线的结果(如广告、直播、图文)以合理的方式混合在一起呈现。
特点:侧重于规则和策略,是对模型排序结果的补充和修正,以提升用户体验和满足业务需求。
总结一下整个流程:
海量物品库 -> [召回] -> 千级候选集 -> [粗排] -> 百级候选集 -> [精排] -> 精准排序列表 -> [混排] -> 最终展示列表
这个分层过滤的架构,使得推荐系统能够在保证快速响应的同时,对庞大的物品库进行精细化的个性化推荐,是目前业界主流且高效的解决方案。