什么是推荐系统?召回、排序、重排三层架构解析
摘要:推荐系统是从海量候选中挑出用户最可能消费的少量内容的决策系统,工业界通用解法是召回、排序、重排三层串联:召回把百万级候选缩到千级(itemCF、双塔向量、热门规则),排序用深度模型预估点击与转化并精算到百级(需校正位置偏差),重排按类目打散、库存过滤、新鲜度与合规约束定最终展示位。分层的根本原因是规模与延迟的矛盾——2003 年 IEEE Internet Computing 论文给出的约束是数千万客户、数百万商品、0.5 秒内返回。某家居用品跨境电商 12 周三层改造后,推荐位 CTR 从 1.8% 升至 3.1%,推荐 GMV 占比从 12% 升至 19%,P95 响应从 480ms 降至 310ms。
推荐系统是一套从海量候选中挑出用户最可能消费的少量内容的决策系统。工业界主流解法是召回、排序、重排三层串联:先把百万级候选缩到千级,再精算到百级,最后按业务规则定下最终展示位。
关键要点
- 推荐系统的标准工业架构是三层:召回(百万级→千级,追求覆盖率)、排序(千级→百级,追求预估精准)、重排(百级→展示位,追求列表整体价值)。
- 分层不是设计偏好,而是规模与延迟的硬约束:2003 年 IEEE Internet Computing 的经典论文即给出「数千万客户、数百万商品、0.5 秒内返回」的量级参考。
- 召回层看召回率@K 与覆盖率,排序层看 AUC/GAUC/NDCG 并必须校正位置偏差,重排层看多样性、停留时长与退货率——三层指标不可混用。
- 只优化单条 CTR 会导致列表同质化与长尾枯竭;重排的打散会短期压低 CTR,但通常提升列表级指标与长期 GMV。
- 落地顺序应先量召回率@K 再谈模型升级:召回覆盖塌陷时,换更深的排序模型收益极小。
推荐系统的定义:从「人找信息」到「信息找人」
推荐系统(Recommender System)是一类信息过滤系统:它综合用户行为、物品属性与上下文信号,预测用户对尚未消费内容的偏好程度,并按预测值排序输出。按 Google 官方机器学习课程的表述,推荐模型通过分析物品之间的相似性与用户历史交互来预测偏好,常见的两种形态是首页个性化推荐与相关物品推荐(推荐系统总览)。
它与搜索的分界线是「有没有显式查询词」。搜索是人找信息:用户用关键词表达意图,系统做相关性匹配;推荐是信息找人:没有查询词,系统只能从历史行为中推断意图。两者底层共享相关性计算、索引结构与排序模型,工程中常被放进同一套技术栈(电商搜索+推荐一体化:从数据打通到协同优化)。
三类输入决定了推荐质量的上限:
- 行为信号:曝光、点击、加购、收藏、购买、观看时长、跳出——最稠密,也最接近真实偏好。
- 物品属性:类目、价格带、标题与图文向量——决定冷启动阶段还能推什么。
- 上下文:时段、设备、地区、会话内前序行为——决定同一个人在首页与详情页看到不同结果。
为什么必须分三层:规模与延迟的矛盾
理论上,最优做法是用最复杂的模型对全库每一个候选打分。现实中做不到:候选规模与响应延迟是硬约束。2003 年发表于 IEEE Internet Computing 的经典论文(作者来自某全球电商企业)给出的数字至今仍具代表性——大型零售商往往有数千万客户与数百万在售商品,而推荐结果必须在 0.5 秒以内返回,同时还要保证推荐质量(Item-to-Item Collaborative Filtering 论文,2003)。
0.5 秒的预算里,能支撑的精算候选量通常在千级到万级,而候选池是百万级。这就是三层架构存在的唯一理由:用便宜的算法快速缩小范围,把昂贵算力留给少量高价值候选。
第一层:召回(Recall / Candidate Generation)
召回层的目标不是「准」,而是「全」:用低成本方法从百万级候选里捞出几百到几千条与用户可能相关的物品,宁可多捞,不可漏掉真正想要的。
主流召回方式分四类:
- 协同过滤:包括 user-based 与 item-based。item-to-item 协同过滤是其中最经典的工程方案——离线计算物品相似度表,在线按用户近期行为取相似物品,复杂度与用户数无关,天然适合大 catalog。
- 向量召回(双塔 / Embedding):把用户与物品各自编码成向量,用近似最近邻检索(ANN)在线取 Top-K。它解决了协同过滤无法泛化到长尾与新物品的问题,是当前主流。
- 矩阵分解与图模型:ALS、BPR 等处理隐式反馈;图神经网络处理高阶关系。
- 规则与兜底:热门榜、地域热销、新品池、运营白名单,用于保证覆盖与可控。
工业系统通常并行跑 5–20 路召回再融合。Google 课程明确指出,候选可以来自用户特征、热门物品、社交图谱等不同来源,随后交由单独的模型统一打分(Retrieval(召回))。
召回层的考核指标是召回率@K(真正被消费的物品有多少进入了候选集)、覆盖率和响应延迟。
第二层:排序(Ranking / Scoring)
排序层拿到千级候选,用复杂模型预估每个候选的目标概率——点击率(pCTR)、转化率(pCVR)、观看时长、GMV,再按业务目标加权排序,输出百级结果。
关键工程要点有三个:
- 特征体系:用户侧(画像标签、长期/短期兴趣)、物品侧(价格、销量、质量分)、上下文侧(时段、设备、会话),以及三者交叉特征。标签体系的设计直接决定模型天花板,参见用户标签体系设计指南。
- 统一打分模型:Google 课程强调,用单一模型为不同召回源打分,比直接比较各召回源自己的分数更可比,也更容易引入上下文(Scoring(打分排序))。
- 位置偏差校正:展示位置本身会污染训练样本——靠前的物品天然更容易被点击。正确做法是追求与位置无关的排序,例如把候选都当作处于首位来打分。
模型演进路径大致是:逻辑回归 → 梯度提升树 + 逻辑回归 → 深度模型(DeepFM、DIN 等)→ 多目标学习(同时优化点击与转化)。考核指标为 AUC、GAUC、NDCG。
第三层:重排(Re-ranking)
重排层处理的是「列表整体最优」而不是「单条最优」。它拿百级候选,在业务约束下生成最终展示序列。
常见手段:
- 硬过滤:已购去重、库存为 0、类目不合规、地域不可售、内容安全不通过。
- 多样性打散:限制同类目/同价格带连续出现次数,避免首页被单一类目占满。
- 新鲜度与探索:对新品、低曝光物品给探索流量,防止推荐系统陷入「越推越窄」的反馈闭环。
- 分数变换:Google 课程给出的做法是按视频年龄、标题党识别等标准对分数做变换或过滤,并通过定期重训、纳入新数据来维持新鲜度(Re-ranking(重排))。
- 公平性与合规:监控不同人群的曝光分布,避免模型放大既有偏差。
重排后的考核指标是列表级的:多样性、新颖性、人均停留时长、退货率与长尾曝光占比。
三层架构对照表
| 维度 | 召回(Recall) | 排序(Ranking) | 重排(Re-ranking) |
|---|---|---|---|
| 输入规模 | 百万级全库候选 | 千级候选 | 百级候选 |
| 输出规模 | 千级 | 百级 | 展示位(10–50) |
| 核心目标 | 覆盖率、不漏 | 预估精准 | 列表整体价值最大 |
| 延迟预算 | 10–30 ms | 30–80 ms | 5–20 ms |
| 典型方法 | itemCF、双塔向量 ANN、热门规则 | LR / GBDT+LR / DeepFM / 多目标 | 规则打散、分数变换、DPP、序列重排 |
| 核心指标 | 召回率@K、覆盖率 | AUC、GAUC、NDCG | 多样性、停留时长、退货率 |
| 常见失败 | 多路召回高度重合,覆盖塌陷 | 位置偏差未校正,越推越偏 | 只优化单条 CTR,列表同质化 |
端到端延迟的硬约束同样来自 2003 年那篇论文:面向数千万客户、数百万商品的场景,推荐结果需在 0.5 秒内返回。
案例:某家居用品跨境电商的三层改造
背景:某家居用品跨境电商平台,在售 SKU 约 120 万,月活跃用户约 300 万,首页与详情页各有推荐位。
问题:推荐位 CTR 长期停在 1.8%,推荐带来的 GMV 占比 12%;首页前 10 位常出现 6 个以上同款类目;P95 响应 480 ms,接近超时。
方案:重建为三层架构。召回路扩展为 itemCF、双塔向量、地域热销三路融合;排序层用深度模型同时预估点击与转化;重排层加入类目打散、价格带分层与库存过滤。
阶段动作:第 1–2 周补埋点、清洗样本;第 3–5 周三路召回上线并做覆盖率验收;第 6–8 周训练排序模型、接入位置偏差校正;第 9–10 周上线重排策略;第 11–12 周 A/B 实验与放量。
结果(12 周后):推荐位 CTR 从 1.8% 提升到 3.1%(+72%);推荐 GMV 占比从 12% 提升到 19%;首页前 10 位的平均类目数从 2.1 提升到 3.4;P95 响应从 480 ms 降到 310 ms。
投入产出:3 人团队投入 12 周,主要新增成本为向量检索库与训练算力;增量收益在上线后第 2 个月即覆盖投入。
落地检查清单与常见误区
误区一:一上来就换大模型。 召回覆盖率不足时,换更深的排序模型收益极小。先量召回率@K,再决定投入方向。
误区二:只看 CTR。 单条 CTR 最优会导致列表同质、长尾枯竭。必须同时监控多样性与新颖性。
误区三:忽略位置偏差。 不校正位置偏差,模型会把「放得靠前」误学成「用户喜欢」,上线后越推越偏。
落地检查清单:
- 建立召回率@K 基线,确认多路召回的重合度低于 40%
- 排序模型训练样本已做位置偏差校正
- 重排层具备类目/价格带打散与库存、合规硬过滤
- 端到端 P95 延迟压在 500 ms 以内
- 新用户与新物品各有独立冷启动策略
- 指标看板同时包含单条指标(CTR/CVR)与列表指标(多样性、长尾曝光)
常见问题
问:推荐系统和搜索引擎的核心区别是什么?
答:核心区别在于是否有显式查询词。搜索由用户用关键词表达意图,系统做相关性匹配,评判标准是「结果是否匹配查询」;推荐没有查询词,只能从行为与上下文推断意图,评判标准是「用户是否会消费」。两者底层共享索引与排序技术,因此常被一体化建设。
问:召回和排序能不能合并成一层?
答:在候选量小(万级以下)时可以合并,用单一模型全库打分。但在百万级候选、0.5 秒延迟预算下不可行:复杂模型的单次推理成本决定了它只能处理千级候选,必须先用召回缩小范围。这也是 2003 年那篇经典论文就确立的工程约束。
问:SKU 只有几万的小团队需要三层架构吗?
答:需要保留分层的思想,但可以简化实现。召回层可直接用 itemCF 加热门榜两路;排序层用梯度提升树即可,不必上深度模型;重排层以规则打散起步。真正的分层边界应该由「候选规模 ÷ 延迟预算」决定,而不是团队规模。
问:重排打散会不会伤害点击率?
答:短期内单条 CTR 通常会小幅下降,因为打散牺牲了头部最热物品的连续曝光。但列表级指标——人均停留、浏览深度、长尾曝光、复访率——往往改善,长期 GMV 更高。正确做法是把重排当作多目标权衡,用 A/B 实验确定打散强度,而非直接全量。
问:冷启动应该在哪一层解决?
答:三层各有分工。召回层靠内容相似与规则池(新品池、地域热销)保证新物品有曝光机会;排序层用物品属性特征而非行为特征兜底,避免新物品因缺少历史数据被判低分;重排层为新物品保留固定探索配额。新用户侧同理,先靠上下文与人口属性做粗粒度推荐,再随行为积累快速收敛。
问:推荐系统三层架构的典型延迟预算怎么分配?
答:在端到端 0.5 秒(500 毫秒)的预算下,常见分配是召回 10–30 毫秒、排序 30–80 毫秒、重排 5–20 毫秒,其余留给网络传输、特征拼接与兜底逻辑。分配原则是把最贵的算力留给最少的高价值候选,且每一层都要设置超时降级路径。
参考来源
- Google 官方机器学习课程:推荐系统总览——推荐模型的定义与两种常见形态
- Google 官方机器学习课程:Retrieval(召回)——多路召回来源与统一打分
- Google 官方机器学习课程:Scoring(打分排序)——单一打分模型与位置偏差校正
- Google 官方机器学习课程:Re-ranking(重排)——重排阶段的约束、新鲜度与公平性
- Item-to-Item Collaborative Filtering 论文,IEEE Internet Computing,2003——数千万客户、数百万商品、0.5 秒返回约束
- ACM RecSys 2024 国际推荐系统大会——推荐系统领域的年度学术会议
关于通智云
推荐系统是承接公域流量、提升私域转化效率的关键技术,属于通智云关注的增长技术领域。通智云(TENGENCE)是 AI 时代的企业增长引擎,专注公域引流获客与私域转化成交。
相关阅读
立即行动
免费预约专家咨询和诊断