news 2026/9/2 17:20:50

推荐/搜索系统的召回、精排、粗排、打散这四个环节都是做什么的?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
推荐/搜索系统的召回、精排、粗排、打散这四个环节都是做什么的?

这四个环节是推荐/搜索系统的核心召回排序流程,目的是从海量候选集里筛选出用户最可能感兴趣的内容,同时保证结果的多样性,整体流程遵循“从多到少、从粗到精”的原则。以下是每个环节的详细职责、目标和实现逻辑:

一、召回(Recall):从海量数据中“捞人”——广撒网,抓候选

1. 核心目标

百万/亿级的全量候选集(如商品、视频、文章)中,快速筛选出数千级别的用户可能感兴趣的候选集,解决“从哪找”的问题

  • 特点:速度快、召回率优先、精度要求低,宁可多召回一些潜在相关的内容,也不能漏掉用户可能喜欢的。
2. 核心逻辑

基于简单的用户兴趣信号规则/轻量化模型,不做复杂计算,追求极致性能。
常见召回策略:

  • 协同过滤召回:基于用户行为相似性(如“和你相似的用户都喜欢XX”)、物品相似性(如“你喜欢的A,类似的B/C/D”);
  • 内容召回:基于物品属性(如用户喜欢“科幻电影”,召回所有科幻类电影)、用户标签(如用户标签是“健身”,召回健身相关内容);
  • 热门召回:兜底策略,召回全局/分类热门内容(防止新用户无数据可推荐);
  • 地理位置召回:本地生活场景常用(如推荐附近3km内的餐厅)。
3. 关键指标
  • 召回率:真正感兴趣的内容被召回的比例(越高越好,避免漏选);
  • 响应时间:必须在毫秒级完成(通常 < 10ms),否则影响用户体验。
一句话总结

召回是**“海选”**——用低成本的方式,从海量数据里捞出一批“可能合格”的候选人。

二、粗排(Coarse Ranking):快速过滤——初筛,降数量

1. 核心目标

对召回阶段输出的数千级别候选集进行快速排序,筛选出数百级别的候选集,解决“初步筛选”的问题,是召回和精排之间的“承上启下”环节。

  • 特点:速度较快、兼顾效率与精度,模型复杂度介于召回和精排之间。
2. 核心逻辑

使用轻量化的机器学习模型,输入比召回更丰富的特征,但特征维度和模型复杂度低于精排。

  • 特征选择:用户基础特征(年龄、性别)、物品基础特征(类别、热度)、简单交互特征(点击/收藏次数);
  • 模型选择:通常用 LR(逻辑回归)、FM(因子分解机)、简单的深度学习模型(如 Wide & Deep 的 Wide 部分);
  • 目标:预测用户对候选内容的“兴趣得分”,按得分排序后,截断取前 N 个(如取前200)进入精排。
3. 关键指标
  • 精确率:筛选后内容的相关度(比召回高);
  • 吞吐量:能处理的候选集数量(高于精排);
  • 耗时:通常 < 50ms,比精排快1~2个数量级。
一句话总结

粗排是**“一轮面试”**——快速淘汰明显不相关的内容,减少精排的计算压力。

三、精排(Fine Ranking):精准排序——决胜,定最终顺序

1. 核心目标

对粗排输出的数百级别候选集进行精准排序,输出数十级别的最终推荐列表,解决“用户最想要什么”的核心问题,是整个流程的“核心决策环节”。

  • 特点:精度优先、模型复杂、计算成本高,直接决定用户看到的内容顺序。
2. 核心逻辑

使用复杂的深度学习模型,输入全方位的高维特征,精准预测用户的行为概率(点击、下单、停留时长等)。

  • 特征选择
    • 用户特征:详细行为序列(如最近7天点击的10个商品)、兴趣标签、消费能力;
    • 物品特征:详细属性(如商品的品牌、价格、评分)、内容详情(如文章关键词);
    • 交互特征:用户与物品的匹配度(如用户是否收藏过该品牌的商品)、上下文特征(如当前时间、场景);
  • 模型选择:DeepFM、DIN(深度兴趣网络)、DIEN(深度兴趣进化网络)、Transformer 类模型(如 BERT4Rec);
  • 目标:优化核心业务指标(如 CTR 点击率、CVR 转化率、GMV 销售额),按预测得分从高到低排序。
3. 关键指标
  • 核心业务指标:CTR、CVR、停留时长(直接影响用户体验和平台收益);
  • 排序稳定性:避免排序结果波动过大。
一句话总结

精排是**“终面”**——用最精准的模型,确定用户最可能感兴趣的内容顺序。

四、打散(Diversification):调整结果——去同质化,保多样性

1. 核心目标

对精排输出的最终列表进行后处理,打破同质化内容的集中展示,保证结果的多样性,解决“推荐单调、用户审美疲劳”的问题

  • 特点:非排序环节,是排序后的优化策略,不改变内容的核心相关性,只调整展示顺序。
2. 核心逻辑

精排的目标是“精准”,但可能导致结果高度同质化(如连续推荐10个同一品牌的口红),打散就是通过规则/算法调整顺序,平衡“精准”和“多样”。
常见打散策略:

  • 类别打散:限制同一类别内容的连续展示次数(如最多连续展示2个美妆类商品,之后必须插一个服饰类);
  • 商家打散:电商场景常用,避免同一商家的商品集中展示(防止用户反感);
  • 热度打散:在热门内容中插入少量长尾内容(扶持小众优质内容,提升生态多样性);
  • 算法打散:基于内容相似度矩阵,调整顺序使相邻内容的相似度低于阈值。
3. 关键指标
  • 多样性:结果集的类别/商家覆盖度(越高越好);
  • 相关性损失:打散后核心指标(如CTR)的下降幅度(越小越好)。
一句话总结

打散是**“最终调参”**——在不牺牲核心体验的前提下,让推荐结果更丰富,提升用户长期留存。

四、完整流程串联(以电商推荐为例)

  1. 召回:从1亿商品中,基于用户历史购买记录+商品相似性,召回2000个候选商品;
  2. 粗排:用LR模型快速排序,筛选出200个用户可能喜欢的商品;
  3. 精排:用DIN模型精准预测转化率,输出30个得分最高的商品;
  4. 打散:限制同一品牌最多连续展示2个,调整顺序后最终展示给用户10个商品。

核心区别对比表

环节输入规模核心目标模型特点耗时核心指标
召回亿级广撒网,捞候选规则/轻量化模型<10ms召回率
粗排数千级初筛,降数量轻量机器学习模型<50ms效率+精度
精排数百级精准排序,定胜负复杂深度学习模型<500msCTR/CVR
打散数十级去同质化,保多样规则/相似度算法<10ms多样性

补充:为什么需要这四个环节?

直接对亿级数据用精排模型计算,时间和资源成本完全不可行

  • 召回:解决“从海量数据快速筛选”的效率问题;
  • 粗排:承上启下,进一步缩小范围,降低精排压力;
  • 精排:保证结果的精准性,提升核心指标;
  • 打散:优化用户体验,避免推荐单调,兼顾平台生态。

这四个环节的组合,实现了“效率、精度、多样性”的三者平衡

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 23:29:06

使用pyinstaller打包python程序

详细打包步骤1. 安装PyInstallerpip install pyinstaller2. 创建打包命令为您的程序创建专门的打包命令。由于这是一个GUI应用程序&#xff0c;建议使用以下命令&#xff1a;pyinstaller --onefile --noconsole --name"A8MiniStreamer" --iconstream_icon.ico your_s…

作者头像 李华
网站建设 2026/9/2 10:46:10

Windows右键菜单终极清理指南:3步打造清爽高效操作体验

Windows右键菜单终极清理指南&#xff1a;3步打造清爽高效操作体验 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是不是经常对着杂乱的右键菜单发愁&#xf…

作者头像 李华
网站建设 2026/9/1 23:08:16

玩转 Linux passwd 命令:从密码修改到批量运维,一篇吃透!

导读&#xff1a;为了让大家全面掌握 passwd 命令&#xff0c;我会从实际应用场景切入&#xff0c;逐步讲解语法、基础与高级用法&#xff0c;再结合实战案例和脚本开发&#xff0c;让你既能搞定日常操作&#xff0c;也能应对运维难题。玩转 Linux passwd 命令&#xff1a;从密…

作者头像 李华
网站建设 2026/9/2 4:45:07

JavaEE进阶-SpringBoot三层架构:餐厅模式解析

目录 核心架构&#xff1a;数据流转的“流水线” 1. Entity (实体类) —— com.entity 2. Controller (控制层) —— com.controller 3. Service (业务层) —— com.service 4. Dao (持久层) —— com.dao 辅助架构&#xff1a;让系统更好用的“后勤部” 5. Config (配置…

作者头像 李华
网站建设 2026/9/2 6:51:54

从Bash脚本到Firebase数据库:解决JSON上传问题

在开发过程中,我们常常会遇到各种技术问题,尤其是涉及到云服务和数据管理时。本文将通过一个实际案例,详细讲解如何解决在Bash脚本中使用Firebase CLI上传JSON文件时遇到的错误。 问题背景 用户moco在使用Bash脚本尝试将一个JSON文件上传到Firebase实时数据库时,遇到了40…

作者头像 李华
网站建设 2026/9/2 22:44:01

sward全面介绍(7) - 如何将confluence数据导入sward

1、安装配置 首先安装配置sward 1.1 安装 下载&#xff0c;点此下载&#xff0c;或直接使用命令在线下载安装包 wget -O tiklab-sward-2.0.7.rpm https://install.tiklab.net/app/install/sward/2.0.7/tiklab-sward-2.0.7.rpm 安装&#xff0c;以centos为例&#xff0c;将Li…

作者头像 李华