Skip to content

AI 第四章 推荐·搜索·NLP·CV 业务场景(AI-29 ~ AI-38) ​


AI-29. 新用户进来推荐很烂,新商品永远没曝光(冷启动) ​

【考察内容】冷启动是推荐系统最高频题

【题目】新用户注册进来,没有行为数据,推荐流质量很差;新上架的商品没有曝光,永远进不了推荐。用户冷启动和物品冷启动分别怎么解决(人口属性、兴趣引导、热门兜底、内容特征、探索流量)?

【参考答案】

  1. 冷启动三类:用户冷启动(新用户无行为)、物品冷启动(新商品无曝光)、系统冷启动(新平台无数据);

  2. 用户冷启动:

    • 注册信息/画像:年龄、性别、地域、职业(人口统计学推荐:相似人群热门);
    • 引导式兴趣采集:登录时选兴趣标签、问卷;
    • 实时行为快速学习:浏览/点击几个物品后立即用内容相似推荐;
    • 兜底:热门/全局 TopN(高质量内容兜底,保证体验);
  3. 物品冷启动:

    • 内容特征:物品文本/图像/类目标签 → 内容 Embedding → 相似物品推荐;
    • 探索流量:新物品小流量曝光(EE 策略/新品流量池)→ 收集反馈 → 快速进入主推荐;
    • 平台规则:新品保底曝光位、作者冷启动扶持;
  4. 系统冷启动:人工编辑推荐、热门榜单、基于内容的通用推荐;

  5. 进阶:元学习、图模型(社交关系)、多臂老虎机(UCB);

  6. 关键:冷启动要快速过渡到个性化(早期行为要立即生效,而非等 T+1 离线特征)。

  7. 关键公式/策略: 探索-利用:UCB score=μ̂+c√(ln t/n);Thompson Sampling。冷启动用户用人口统计/设备/渠道相似迁移。

  8. 排查步骤: 区分用户冷启 vs 物品冷启 → 保底热门+多路探索 → 快速兴趣反馈(首刷交互)。线上-离线:离线历史数据天然缺冷启动场景,要在线实验评估。

【原理溯源】

  • 为什么新用户推荐差? 推荐依赖行为反馈。无行为 → 无法学偏好 → 只能推热门或瞎猜。解决思路是用“弱先验”(人口属性、引导标签、会话行为)替代缺失的长期行为。
  • 为什么新物品进不了主循环? 无曝光 → 无样本 → 预估不准 → 算法不敢推。必须人为注入探索流量,打破零曝光。
  • 内容 Embedding 为何能解物品冷启动? 标题/类目/图像不依赖行为,可编码出与老物品同空间的向量,进 ANN 索引被相似召回命中。
  • 为什么要“快速过渡”? 冷启动期体验差,用户可能流失。会话内实时行为必须秒级生效,不能等 T+1。

【选型判断树】

冷启动:
1. 用户冷启动
   ├─ 有注册画像 → 相似人群热门
   ├─ 可引导 → 兴趣标签/问卷
   └─ 兜底 → 热门 TopN + 会话实时行为
2. 物品冷启动
   ├─ 有内容 → 内容 Embedding 进召回
   └─ 无内容/必须曝光 → 新品流量池 + 保底
3. 系统冷启动
   └─ 编辑推荐 + 热门 + 内容相似
4. 目标
   └─ 尽快过渡到个性化(实时行为)

【口述骨架】(5 分钟)

时间任务内容
0:00–0:30定性“冷启动分用户/物品/系统三类,缺的是行为先验”
0:30–2:00用户冷启画像、引导、实时行为、热门兜底
2:00–3:30物品冷启内容 Embedding、探索流量、保底
3:30–4:30快速过渡会话内实时生效,不等 T+1
4:30–5:00收尾“用弱先验替代缺失行为,用探索打破零曝光”

【关键数字】

参数经验值说明
新品保底曝光每品 N 次试投平台策略
内容向量维度64–256与行为向量同空间
会话实时秒级生效防流失
引导标签3–10 个太多流失
兜底热门TopN 50–200保体验

【追问链】(三层)

L1|“只推热门行不行?” → 短期保体验,但无个性化、长期留存差。必须叠加画像/内容/实时行为。

L2|“新用户实时行为怎么用?” → 会话内行为立即算实时特征(刚点的物品类目加权),不等离线更新。

L3|“新物品没有内容特征怎么办?” → 依赖类目/作者等弱属性 + 新品流量池强制探索 + 人工保底。

【评分标准】

档位答案特征
60 分知道推热门、用注册信息
80 分三类冷启动分治;内容 Embedding;探索流量
95 分讲清零曝光反馈循环;弱先验替代;会话实时快速过渡

【关联题】

  • 同一知识簇: AI-20(长尾/EE)、AI-19(Embedding)、AI-51(茧房)
  • 工程衔接: AI-30(全链路)、AI-31(多路召回)

【自测】

  1. 用户冷启动和物品冷启动缺什么? 参考答案: 用户缺行为偏好;物品缺曝光反馈。
  2. 内容 Embedding 如何解物品冷启动? 参考答案: 用文本/图像编码进向量空间,被相似召回命中。
  3. 为什么要快速过渡到个性化? 参考答案: 冷启动期体验差易流失,实时行为应秒级生效。

AI-30. 从百万商品里选出用户可能喜欢的 10 个(推荐全链路) ​

【考察内容】推荐系统全链路是算法岗必考大题

【题目】商品池 500 万,用户每次请求只能看 20 个,推荐系统从“全量商品 → 候选 → 排序 → 展示”的完整链路怎么设计?召回、粗排、精排、重排各自干什么?延迟预算怎么分配?

【参考答案】

  1. 召回(Recall):从全量物品(百万级)筛出候选(千级)——多路召回:向量召回(双塔 ANN)、协同过滤(I2I/U2I)、热门召回、类目召回、社交召回;每路取 TopK 合并去重;目标=广覆盖+快(单路 ANN 几毫秒,多路并行后按最慢一路约 20ms,与本题【关键数字】同口径);

  2. 粗排(Coarse Ranking):候选从千级降到百级——轻量模型(双塔/DSSM 小模型)快速打分,过滤明显不相关的;目标=在精排算力约束内保召回质量(用精排模型蒸馏出粗排模型);

  3. 精排(Fine Ranking):百级候选精细打分排序——复杂模型(DeepFM/DIN/MMoE 多目标:CTR+CVR+时长+GMV),大量特征(用户/物品/上下文/交叉),目标=精准排序;

  4. 重排(Rerank):精排结果做全局优化——多样性打散(同作者/同品类限流)、业务规则(广告插入、强运营位、过滤已买)、用户体验约束、MMR/DPP 算法;

  5. 数据与特征:行为埋点→样本生成→特征平台(离线/实时)→训练→评估→灰度;

  6. 缓存与性能:推荐结果缓存(Redis)、漏斗各环节延迟预算(召回 20ms+粗排 10ms+精排 50ms);

  7. 效果评估:GAUC/业务指标 + 探索流量(EE)保证生态健康。

  8. 关键公式: 漏斗期望:百万候选 → 召回千级 → 粗排百级 → 精排几十 → 重排 10–20(对齐题干“每次请求只能看 20 个”)。各阶段数量积决定了算力。

  9. 排查步骤: 用日志还原各环节截断率与 CTR,找到掉量最多的环节。线上-离线:离线只评精排会忽略召回瓶颈——召回不到的样本精排学不到。

【原理溯源】

  • 为什么要漏斗而不是全量精排? 500 万商品 × 复杂模型 = 计算爆炸。漏斗用“便宜模型先筛、贵模型后精算”,在延迟约束内逼近最优排序。
  • 粗排为何存在? 精排模型复杂、算力有限。粗排用轻量模型把千级候选压到百级,常用精排蒸馏——继承精排知识但推理极快。
  • 重排和精排的本质区别? 精排是单点打分(item-wise),重排是全局优化(list-wise):打散、配额、业务规则。单点最优 ≠ 列表最优。
  • 延迟预算意识为何重要? 端到端 100–200ms 要拆给各环节。召回/粗排抢时间,精排吃大头,重排做兜底规则。超时要降级。

【选型判断树】

推荐链路怎么搭?
1. 召回
   └─ 多路:向量+I2I+热门+类目(互补)
2. 粗排
   └─ 千→百,轻量模型/蒸馏
3. 精排
   └─ 百→几十,复杂模型+多特征
4. 重排
   └─ 打散+业务规则+多样性
5. 延迟
   └─ 召回20 + 粗排10 + 精排50 + 重排10(示例)
6. 降级
   └─ 超时切缓存/热门

【口述骨架】(5 分钟)

时间任务内容
0:00–0:30定性“漏斗:召回→粗排→精排→重排,越往下越准越贵”
0:30–2:00召回+粗排多路互补;粗排蒸馏压量
2:00–3:30精排+重排复杂交叉;全局打散与规则
3:30–4:30工程延迟预算、缓存、降级
4:30–5:00收尾“漏斗是算力与效果的平衡艺术”

【关键数字】

参数经验值说明
全量→召回500万 → 1000多路 TopK
召回→粗排1000 → 100–200轻量模型
粗排→精排200 → 50–100复杂模型
精排→展示→ 10–20重排后
延迟预算召回20/粗排10/精排50/重排10视业务

【追问链】(三层)

L1|“粗排为什么存在?” → 精排模型复杂算力有限,粗排用轻量模型把候选压到精排可承受量级。

L2|“重排和精排区别?” → 精排单点打分,重排全局优化(多样性/规则)。

L3|“精排超时怎么办?” → 降级:用粗排分直接排序,或返回缓存/热门兜底,保证不白屏。

【评分标准】

档位答案特征
60 分知道召回和排序两步
80 分四阶段职责清晰;多路召回;粗排蒸馏
95 分讲清漏斗算力权衡;重排 list-wise 本质;延迟预算与降级

【关联题】

  • 同一知识簇: AI-31(多路召回)、AI-32(精排模型)、AI-33(重排)
  • 工程衔接: AI-28(延迟)、AI-52(双塔分工)

【自测】

  1. 四阶段各自目标? 参考答案: 召回广覆盖快;粗排压量;精排精准;重排全局优化。
  2. 粗排模型怎么来? 参考答案: 常用精排蒸馏,继承知识且推理快。
  3. 为什么需要重排? 参考答案: 精排单点最优≠列表最优,需打散与业务规则。

AI-31. 只做一路向量召回,用户想找的怎么也召不回(多路召回) ​

【考察内容】多路召回是搜广推高频题

【题目】你们上线了向量召回,但线上发现:用户想找同款/同品牌商品,向量召回老召不回(行为太稀疏)。召回为什么要多路(向量/协同/热度/类目)?各路结果怎么融合(归一化加权/配额/交给排序模型)?

【参考答案】

  1. 为什么多路:单一召回只能覆盖一种相似关系,多路覆盖不同维度——向量(语义相似)、I2I(行为共现)、热门(兜底)、类目(品类偏好)、社交(好友关注)——互补;

  2. 常见召回路:

    • 向量召回(双塔/Item2Vec,ANN 检索);
    • 协同过滤(UserCF/ItemCF:离线算相似表)——题干前提就是「行为太稀疏」,共现计数本身不可靠,它不能当主补路;「同款/同品牌召不回」这类 badcase 的主路应是属性与 ID 的精确匹配(brand_id、spu_id/同款簇、型号关键词、条码),CF 只在行为量足够的头部用户/商品上叠加;
    • 热度召回(热门物品,保证新鲜度与冷启动);
    • 规则召回(类目/标签/价格带/同城/品牌、同款 SPU、型号关键词——后三个才直接对应题干 badcase);
    • 实时行为召回(刚浏览物品的相似品);
  3. 融合方式:

    • 分数归一化+加权和:各路分数归一化后按权重相加排序——简单主流;
    • 分桶/分层:按路定配额(每路固定比例进粗排)——保多样性;
    • 模型化融合:各路结果作为候选池特征喂给排序模型(由精排决定最终顺序)——这是"要多路信号就用在哪"的正解,注意它不等于在召回层做分数加权(加权融合是上面第 1 条要说清的做法);
  4. 候选量设计:每路 TopK(如 50~200),合并去重后总量控制(如 1000 进粗排);

  5. 质量监控:每路的召回率/贡献占比,低频路被淹没要调整配额;

  6. 注意:纯按分数融合会偏向强势路,配额制保覆盖。

  7. 关键公式: 向量召回内积/余弦;多路召回融合可用加权或规则优先级。

  8. 排查步骤: 分析 badcase 是否热门/长尾/意图明确 → 按 badcase 类型补对应维度:「同款/同品牌召不回」先补品牌 ID/SPU/型号关键词的精确匹配(行为稀疏时别指望协同过滤),再考虑关键词、图、地理位置等路 → 监控各路贡献占比。线上-离线:单路离线召回率可能还行,但头部集中导致多样性差。

【原理溯源】

  • 为什么单路向量召回不够? 向量表达的是“语义/行为相似”,对精确同款、同品牌、实时意图覆盖不足。行为稀疏时向量也不稳。
  • 为什么要配额? 纯分数融合会让高分路(通常热门/向量)挤掉冷门路(社交/类目),多样性消失。配额保证每路有表达机会。
  • “融合交给精排”为何最正确? 召回只负责“广覆盖进候选”,相关性判断交给更准的精排模型。召回阶段强行融合分数,可能因量纲/校准问题误杀好候选。
  • 如何发现某路失效? 监控各路贡献占比与线上 A/B。若社交路贡献 0%,要么配额太低,要么该路质量问题。

【选型判断树】

多路召回怎么设计?
1. 路的选择
   ├─ 语义相似 → 向量/双塔
   ├─ 行为共现 → I2I/CF(**行为稀疏时共现计数不可靠,不能当主路**;同款/同品牌走 brand_id/SPU/型号精确匹配)
   ├─ 兜底/冷启动 → 热门
   ├─ 明确偏好 → 类目/标签/规则
   └─ 即时意图 → 实时行为路
2. 融合
   ├─ 简单 → 归一化加权
   ├─ 要多样性 → 配额分桶
   └─ 最正确 → 不融合,交给精排
3. 监控
   └─ 各路贡献占比,防一路独大

【口述骨架】(5 分钟)

时间任务内容
0:00–0:30定性“单路覆盖一种相似,多路互补才全”
0:30–2:00常见路向量/I2I/热门/类目/实时+品牌·SPU·型号精确匹配(题干 badcase 的主路)
2:00–3:30融合加权/配额/交给精排
3:30–4:30监控贡献占比;防一路独大
4:30–5:00收尾“召回管广覆盖,相关性交给精排”

【关键数字】

参数经验值说明
每路 TopK50–200视路质量
合并后候选500–2000进粗排
配额每路最低占比保多样性
融合RRF 或归一化加权RRF 免调参
监控路贡献占比发现失效

【追问链】(三层)

L1|“为什么要配额?” → 纯分数融合会淘汰冷门路(如社交召回),配额保证每路都有表达机会,保多样性。

L2|“分数怎么归一化?” → min-max / z-score / softmax;或用 RRF(倒数排名融合)免调权重。

L3|“哪路贡献长期为 0 怎么办?” → 检查配额是否太低、该路质量是否差、是否与他路重复。必要时停用或改造。

【评分标准】

档位答案特征
60 分知道要多路召回
80 分常见路齐全;知道归一化/配额
95 分讲清互补动机;在「行为稀疏」前提下给出主路选择(属性/ID 精确匹配优先,CF 只用于行为充足头部);“融合交给精排”;贡献监控与失效处理

【关联题】

  • 同一知识簇: AI-30(全链路)、AI-19(向量召回)、AI-52(双塔)
  • 延伸: AI-29(冷启动热门路)

【自测】

  1. 为什么单路向量召回不够? 参考答案: 只覆盖语义相似,同款/同品牌/实时意图可能召不回。
  2. 三种融合方式? 参考答案: 归一化加权、配额分桶、交给精排。
  3. 如何发现某路失效? 参考答案: 监控各路贡献占比与 A/B。

AI-32. 精排从 LR 换 DeepFM,为什么(CTR 模型演进) ​

【考察内容】精排模型是推荐算法核心必考

【题目】精排模型一开始用 LR(靠人工特征交叉),后来换了 DeepFM。从 LR → FM → Wide&Deep → DeepFM 的演进解决了什么问题?DIN 的注意力、MMoE 的多目标各自解决什么?新业务直接上哪个?

【参考答案】

  1. 演进主线(记忆→泛化→自动交叉):

    • LR:线性+人工特征交叉——可解释、快,但依赖人工;
    • FM/FFM:二阶特征自动交叉(隐向量内积)——解决稀疏特征交叉,但只二阶;
    • Wide&Deep:Wide(LR 记忆人工交叉)+ Deep(DNN 泛化)并行;
    • DeepFM:Wide 换成 FM(自动二阶)+Deep(高阶)——端到端自动学习一/二阶/高阶交叉,工业界标准基线;
    • DIN:注意力机制——用户历史行为与当前候选物品相关才加权;
    • MMoE/多目标:CTR/CVR/时长多任务共享底层+专家网络;
  2. 选型实践:新业务从 DeepFM 起步 → 行为数据丰富上 DIN/序列模型 → 多目标上线 MMoE 系;

  3. 工程要点:特征(稠密 embedding+稀疏 ID)、样本(曝光点击)、负采样、特征平台、推理延迟预算;

  4. 评估:GAUC + 业务 A/B。

  5. 关键公式: DeepFM 同时含一阶+FM 交叉+深度部分;相对 LR 能自动学高阶交叉。

  6. 排查步骤: 先确认 LR 瓶颈是否交叉不足 → 样本量是否撑得起深度模型 → 在线时延与特征成本 → AB。线上-离线:离线 AUC 涨要确认不是特征穿越;推理预算不足时上更深无意义。

【原理溯源】

  • 演进每一步在解决什么? LR 靠人工交叉;FM 自动二阶且参数可估;Wide&Deep 记忆+泛化;DeepFM 把 Wide 换成 FM,端到端更干净;DIN 让兴趣表达目标感知;MMoE 处理多目标跷跷板。
  • DeepFM 为何成为基线? 同时覆盖一阶、二阶(FM)、高阶(Deep),实现成熟、效果稳,表格+ID 特征场景性价比最高。
  • DIN 注意力在干什么? 用户历史很长,但与当前候选相关的只是几件。Attention 按相关性加权历史行为,让兴趣表达聚焦。
  • MMoE 解决什么? 多目标(CTR/CVR/时长)可能冲突。专家网络+门控让各目标共享有用部分、保留差异,缓解跷跷板现象。

【选型判断树】

精排怎么选?
1. 冷启动阶段
   └─ DeepFM(标准基线)
2. 行为序列丰富
   └─ 加 DIN / 序列模型
3. 多目标
   └─ MMoE / PLE
4. 强解释
   └─ LR 或 GBDT+SHAP(非精排主流)
5. 工程
   └─ 延迟预算约束模型大小;A/B 验证

【口述骨架】(5 分钟)

时间任务内容
0:00–0:30定性“演进主线是自动交叉与兴趣表达”
0:30–2:30LR→DeepFM每步解决什么
2:30–3:30DIN/MMoE目标感知与多目标
3:30–4:30选型新业务 DeepFM 起步
4:30–5:00收尾“不要只背模型名,要讲演进动机”

【关键数字】

参数经验值说明
Embedding 维度8–64ID 特征
DIN 历史长度最近 50–100 行为视场景
MMoE 专家数4–8多目标
精排延迟10–50ms约束模型大小
评估GAUC + A/B见 AI-25/22

【追问链】(三层)

L1|“Wide 和 Deep 各管什么?” → Wide 记忆历史共现(人工交叉),Deep 泛化学习未见过组合。

L2|“DIN 的 attention 和 Transformer 区别?” → DIN 是目标感知的加权池化(无位置编码/无多头复杂结构),Transformer 是全局自注意力。

L3|“新业务直接上哪个?” → DeepFM 起步(成熟稳),行为序列够了再 DIN,多目标再 MMoE。

【评分标准】

档位答案特征
60 分知道 DeepFM、DIN 名字
80 分能讲 LR→FM→Wide&Deep→DeepFM 演进动机
95 分DIN 目标感知机制;MMoE 多目标;新业务选型路径;延迟约束

【关联题】

  • 同一知识簇: AI-15(特征交叉)、AI-30(全链路)、AI-07(选型)
  • 工程衔接: AI-28(延迟)、AI-52(双塔 vs 精排)

【自测】

  1. DeepFM 相对 LR 解决了什么? 参考答案: 自动学习一/二阶/高阶交叉,不依赖人工。
  2. DIN 解决什么? 参考答案: 用户兴趣表达按目标相关性加权。
  3. 多目标为什么要 MMoE? 参考答案: 缓解 CTR/CVR/时长等目标冲突(跷跷板)。

AI-33. 推荐流 10 条全是同一个作者,用户刷两下就烦了(重排打散) ​

【考察内容】重排是搜广推高频题

【题目】用户反馈:刷推荐流,10 条里 8 条是同一个作者/同一个品类,看吐了。精排是单点打分,怎么在重排阶段做多样性(规则窗口、MMR、DPP)?打散和相关性怎么平衡?

【参考答案】

  1. 问题:精排按单点分数排序,产生同质化(同作者/同品类扎堆)→ 用户疲劳、长尾被挤压;

  2. 打散方法(从简单到高级):

    • 规则打散(滑动窗口):窗口内同作者/同类目最多 N 个——简单可控,工业常用;
    • 配额制:各品类/作者保底配额;
    • MMR(最大边际相关):每次选“分数高且与已选集合相似度低”的物品(λ·相关性 −(1−λ)·最大相似度,与 AI-20 同一口径)——贪心平衡相关与多样;
    • DPP(行列式点过程):从候选子集中选“多样性最优”的组合(最大化行列式)——效果最好、计算重;
  3. 相似度度量:物品向量(embedding)余弦、类目/作者标签重合度;

  4. 业务约束融合:广告插入位置、强运营位、已购过滤——重排是“规则落地的最后一环”;

  5. 权衡:打散过强伤相关性(CTR 降)——多样性指标与 CTR 平衡,A/B 验证;

  6. 工程:重排延迟预算(毫秒级,规则优先,DPP 有规模限制)。

  7. 关键公式: MMR/DPP;打散约束如“窗口 W=10 内同一作者≤1”。

  8. 排查步骤: 看重复来源是召回重还是排序雷同 → 重排多样性项权重 → 业务规则硬约束。线上-离线:离线相关性指标会偏好同质高分内容,必须离线评估多样性。

【原理溯源】

  • 为什么精排会扎堆? 精排是 point-wise 最高分优先。若同一作者多条都高分,列表就同质。单点最优 ≠ 列表最优。
  • MMR 在优化什么? 每次贪心选“相关性高且与已选不相似”的项:λ·相关性 −(1−λ)·max_sim(已选)。λ 越大越偏相关性,越小打散越激进(与 AI-20 同口径)。
  • DPP 为何“全局更优”? 用子集的行列式度量“相关×多样”的整体质量,选行列式最大的子集。比 MMR 的贪心更全局,但计算更重。
  • 为什么重排是业务规则最后落点? 合规过滤、广告插入、运营置顶都必须在最终列表上执行,精排管不了全局位置。

【选型判断树】

重排打散怎么做?
1. 先上规则
   └─ 滑窗限制同作者/类目(工业默认)
2. 要配额
   └─ 品类/作者保底
3. 要算法化
   ├─ 候选少、延迟紧 → MMR
   └─ 候选中等、要全局最优 → DPP(注意算力)
4. 平衡
   └─ 监控类目熵/作者覆盖 + CTR,A/B 找 λ
5. 优先级
   └─ 合规>广告>运营位>多样性

【口述骨架】(5 分钟)

时间任务内容
0:00–0:30定性“精排单点最优导致同质化,重排做 list-wise”
0:30–2:00四档方案规则窗、配额、MMR、DPP
2:00–3:30机制MMR 贪心;DPP 行列式
3:30–4:30业务与权衡规则优先级;多样性 vs CTR
4:30–5:00收尾“工业先规则,再算法化”

【关键数字】

参数经验值说明
滑窗大小5–10 条同作者≤1
MMR λ0.5–0.8(相关性权重)调小则更激进打散
DPP 候选通常 <几百算力限制
延迟重排 5–15ms规则优先
护栏类目熵、作者覆盖A/B

【追问链】(三层)

L1|“DPP 原理一句话?” → 用集合的行列式度量子集整体质量(相关×多样),选行列式最大的子集。

L2|“打散和业务规则冲突怎么办?” → 优先级分层:合规/广告最高,运营位次之,多样性最低(可让步)。

L3|“打散会不会掉 CTR?” → 短期可能。用 A/B 平衡,多样性换长期留存与生态。

【评分标准】

档位答案特征
60 分知道要“隔开同类”
80 分规则窗/MMR/DPP;知道精排单点局限
95 分讲清 list-wise 本质;MMR/DPP 机制;业务优先级;多样性与 CTR 权衡

【关联题】

  • 同一知识簇: AI-30(重排定位)、AI-51(茧房)、AI-20(长尾)
  • 工程衔接: AI-54(去重)

【自测】

  1. 为什么精排后还要重排? 参考答案: 精排单点最优会导致同质化,重排做列表级全局优化。
  2. MMR 和 DPP 区别? 参考答案: MMR 贪心逐个选;DPP 全局选子集,更优但更重。
  3. 业务规则和打散谁优先? 参考答案: 合规>广告>运营位>多样性。

AI-34. 用户搜“便宜的手机”,出来的全是手机壳(搜索相关性) ​

【考察内容】搜索是 NLP+排序综合高频题

【题目】用户搜“便宜的手机”,搜索结果里混进了手机壳、手机支架。搜索系统的 Query 理解(分词、意图、价格属性抽取)、召回(关键词+语义)、相关性过滤、排序(LTR)分别怎么做?“便宜”这个价格意图怎么落地?

【参考答案】

  1. 整体:Query 理解 → 召回 → 相关性过滤 → 排序;

  2. Query 理解(核心):

    • 分词:中文分词;
    • 意图识别:类目意图(手机)、价格意图(便宜=低价)、属性意图;
    • 实体/属性抽取:品牌、型号、价格区间、类目;
    • 改写/纠错:同义词、错别字、query 扩展;
  3. 召回:类目召回(手机类目)+ 关键词匹配(BM25/ES)+ 向量召回(语义);

  4. 相关性过滤与排序:

    • 相关性:BM25 分数/语义相似度/类目一致性(搜“手机”不该出手机壳——相关性硬约束);
    • 排序:相关性分 × 业务分(销量/价格/评价/转化率预估——LTR);
  5. 价格意图落地:抽取“便宜”→ 排序时价格特征加权或按价格带过滤;

  6. 评估:人工标注 NDCG、线上(点击率、无结果率、成交转化);

  7. 工程:Query 分析服务、搜索专用索引(ES)、搜索与推荐联动。

  8. 关键公式: NDCG@k 衡量排序相关性;相关性分级 0/1/2。

  9. 排查步骤: Query 理解(纠错/意图/属性)→ 召回多路(字面+语义)→ 相关性精排/规则。线上-离线:离线用点击当标签会偏向标题党,需人工相关性标注集。

【原理溯源】

  • 为什么“手机”会召出手机壳? 字面共现(“手机壳”含“手机”)或语义相近。若无类目/实体硬约束,相关性过滤缺位,就会混入配件。
  • Query 理解为何是搜索核心? 用户 query 短、口语化、带修饰(便宜)。不理解意图与属性,召回和排序都在解错题。
  • “便宜”如何落地? 属性抽取把模糊词映射为价格意图:加价格特征权重、过滤高价带、或重排偏好低价。
  • 相关性为何常作硬约束? 相关性是底线(搜手机不出壳)。业务分只能在相关候选内调序,不能把不相关顶上去。

【选型判断树】

搜索链路:
1. Query 理解
   ├─ 分词/纠错/改写
   ├─ 意图(类目/价格/属性)
   └─ 实体抽取
2. 召回
   ├─ 类目硬过滤
   ├─ BM25 关键词
   └─ 向量语义
3. 相关性
   └─ 硬约束(类目/属性一致)
4. 排序
   └─ LTR:相关性 × 业务分
5. 意图落地
   └─ “便宜”→价格带过滤/加权

【口述骨架】(5 分钟)

时间任务内容
0:00–0:30定性“核心在 Query 理解,相关性是硬约束”
0:30–2:00Query 理解分词、意图、属性抽取
2:00–3:30召回与过滤多路召回;类目硬约束
3:30–4:30排序与意图LTR;“便宜”落地
4:30–5:00收尾“相关性管对不对,业务分管好不好”

【关键数字】

参数经验值说明
NDCG@10搜索相关性主指标人工标注
BM25ES 默认关键词
向量 TopK与 BM25 混合 RRF语义
无结果率监控体验
价格意图低价带过滤/加权“便宜”

【追问链】(三层)

L1|“搜‘便宜’怎么用?” → 属性抽取识别价格意图,转化为排序特征/过滤条件。

L2|“相关性怎么衡量?” → BM25 词频+语义向量+类目/属性一致性,人工标注集评测 NDCG。

L3|“为什么不能只靠 ES?” → ES 擅长字面匹配,缺意图理解与语义召回;口语化 query 会漏召或混入不相关。

【评分标准】

档位答案特征
60 分知道要分词、做排序
80 分Query 理解链路;多路召回;相关性硬约束
95 分讲清意图/属性落地;相关性 vs 业务分分工;LTR;评估 NDCG

【关联题】

  • 同一知识簇: AI-37(语义匹配)、AI-36(意图槽位)、AI-31(多路召回)
  • LLM 衔接: AI-39(RAG 检索)

【自测】

  1. 为什么“手机”会召出手机壳? 参考答案: 字面/语义相近但类目不同,缺相关性硬约束。
  2. “便宜”如何落地? 参考答案: 抽取为价格意图,做低价带过滤或价格加权。
  3. 相关性和业务分的关系? 参考答案: 相关性是底线硬约束,业务分在相关候选内调序。

AI-35. 客服消息自动分类,90% 是咨询、投诉总漏判(文本分类) ​

【考察内容】文本分类是 NLP 最高频场景题

【题目】客服消息要自动分类(咨询/投诉/退换货/售后),90% 是咨询,投诉只占 3% 但漏判代价最大。模型方案怎么选(TF-IDF+LR → FastText → BERT → LLM)?不平衡怎么处理?怎么让投诉尽量不漏?

【参考答案】

  1. 数据与预处理:清洗、分词、类别体系设计(少类且互斥);

  2. 建模方案(由简到繁):

    • TF-IDF/词袋 + LR/SVM:简单基线,小数据够用;
    • FastText:词向量平均+线性分类,快且效果好;
    • TextCNN/BiLSTM:局部 n-gram/序列特征;
    • 预训练模型(BERT 系):微调,效果 SOTA;
    • 大模型:LLM few-shot/零样本——少标注场景利器,成本/延迟高;
  3. 类别不平衡(90% 咨询):加权损失/重采样、评估用 Macro-F1、对少数类(投诉)提高召回优先级;

  4. 工程落地:阈值校准(置信度低进人工);线上推理延迟(BERT 量化/蒸馏,或 LLM 只处理难例);持续迭代:人工标注反馈回流;

  5. 评估:每类 P/R/F1(尤其投诉类召回)、混淆矩阵分析。

  6. 关键公式: 对不平衡多分类用 Macro-F1;投诉类单独看 Recall 与代价敏感权重。

  7. 排查步骤: 混淆矩阵 → 投诉类样本增强/改写 → 阈值下调该类 → 级联“是否投诉”二分类。线上-离线:线上漏判投诉比离线 Macro 更致命,评估指标要按业务代价定制。

【原理溯源】

  • 为什么不平衡下投诉总漏? 与 AI-01 同理:梯度被咨询类主导,模型倾向“别冒险报投诉”。业务上投诉漏判代价最大,必须反向加权。
  • 为什么“由简到繁”? 先跑基线建立下限与数据检查;再上 BERT 微调拿主要收益;LLM 处理少样本/长尾/难例。避免一上来大模型却数据/评估都没做好。
  • Macro-F1 为何必须? 总体准确率被咨询淹没,投诉全错也只掉几个点。Macro-F1 平等看待各类,长尾变差会显现。
  • 为什么低置信要转人工? 分类器在边界样本上不可靠。低置信转人工是精度兜底,同时形成标注回流闭环。

【选型判断树】

客服文本分类:
1. 数据量
   ├─ 小 → TF-IDF+LR / FastText / LLM few-shot
   └─ 充足 → BERT 微调
2. 不平衡
   ├─ 投诉漏判代价大 → 加权损失 + 压低阈值保投诉召回
   └─ 评估主看 Macro-F1 + 投诉类 Recall
3. 延迟/成本
   ├─ 紧 → 蒸馏/量化 BERT;LLM 只处理难例
   └─ 宽 → 可全量 LLM
4. 闭环
   └─ 低置信转人工;错误回流重训

【口述骨架】(5 分钟)

时间任务内容
0:00–0:30定性“90/3 不平衡,投诉漏判最贵,主看 Macro-F1 与投诉召回”
0:30–2:00模型路线基线→FastText→BERT→LLM
2:00–3:30不平衡加权、阈值、评估
3:30–4:30工程转人工、延迟、回流
4:30–5:00收尾“先基线后大模型,投诉召回是业务红线”

【关键数字】

参数经验值说明
投诉占比常见 1%–5%极不平衡
投诉召回业务常要求 90%+红线
BERT 微调 LR2e-5 ~ 5e-5小数据
低置信阈值按验证集 PR 选转人工
LLM 分类少样本/难例成本高

【追问链】(三层)

L1|“什么时候用 LLM 分类?” → 标注少/类别频繁变/需零样本迁移,且接受延迟与成本时。

L2|“为什么不平衡不能报准确率?” → 大类主导,长尾全错也几乎不动,掩盖业务风险。

L3|“投诉总和退换货混淆怎么办?” → 混淆矩阵定位;补该边界样本;加业务规则/关键词;或分层分类。

【评分标准】

档位答案特征
60 分知道用 BERT/大模型
80 分由简到繁路线;Macro-F1;不平衡加权
95 分业务红线是投诉召回;LLM 适用条件;转人工与回流闭环;混淆矩阵诊断

【关联题】

  • 同一知识簇: AI-01(不平衡)、AI-27(Macro-F1)、AI-04(小样本)
  • LLM 衔接: AI-44(Prompt)、AI-42(微调)

【自测】

  1. 投诉漏判代价大,评估主看什么? 参考答案: 投诉类 Recall + Macro-F1,不是总体准确率。
  2. 小数据文本分类先跑什么? 参考答案: TF-IDF+LR 或 FastText 基线,再 BERT/LLM。
  3. 低置信样本怎么办? 参考答案: 转人工,并回流标注形成闭环。

AI-36. “帮我订明天北京到上海的机票”,机器怎么听懂(意图槽位) ​

【考察内容】NLU 是对话系统必考题

【题目】智能客服要理解“帮我订明天北京到上海的机票”:意图是“订机票”,槽位有“日期=明天、出发=北京、到达=上海”。意图识别和槽位填充分别怎么做(分类+序列标注 / LLM 抽取)?槽位怎么转成标准值(“明天”→具体日期)?缺槽怎么反问?

【参考答案】

  1. 任务拆解:意图分类(订机票)+ 槽位填充(日期=明天、出发地=北京、目的地=上海)——NLU 两大任务;

  2. 实现方案:

    • 传统方案:意图=文本分类(SVM/BERT),槽位=序列标注(BiLSTM-CRF/BERT-CRF,BIO 标注);
    • 大模型方案(主流):LLM 直接抽取——结构化 Prompt 输出 JSON(意图+槽位),few-shot 示例;
    • 联合建模:意图与槽位一起预测(共享编码,互相促进);
  3. 关键问题:

    • 槽位规范化:“明天”→具体日期(时间解析);“上海”→城市代码;
    • 缺槽补全:缺少关键槽位 → 反问引导;
    • 多意图/歧义:多意图拆分;
    • OOV/新表达:大模型泛化好;
  4. 工程链路:ASR → NLU → 对话管理 → 动作执行 → NLG;

  5. 评估:意图准确率、槽位 F1、对话任务成功率;

  6. 兜底:低置信度转人工。

  7. 关键公式: 意图分类可用 softmax;槽位标注用序列标注(BIO)+CRF/深度序列模型。F1 按槽位类型分别统计。

  8. 排查步骤: 错误归类:意图错 vs 槽位错 vs 边界错 → 数据增强口语变体 → 词典与规则兜底。线上-离线:线上多轮、打断、口语省略远多于离线单句。

【原理溯源】

  • 为什么要拆成意图+槽位? 意图决定“做什么动作”,槽位决定“动作参数”。两者语义层级不同,拆开更清晰、也便于联合建模互相促进。
  • BIO 标注解决什么? 序列标注标准范式:B-起点/I-内部/O-外部。CRF 保证标签合法转移(I 不能凭空出现),比逐 token 独立分类更稳。
  • 槽位规范化为何关键? 模型抽出“明天”,系统要的是日期。时间解析/实体链接把口语映射到可执行标准值,否则下游 API 无法调用。
  • 缺槽为什么要反问? 关键参数缺失时不能瞎执行。对话管理检测缺槽并生成澄清问题,是可用性的关键。

【选型判断树】

NLU 怎么做?
1. 传统 vs LLM
   ├─ 样本充足、延迟紧 → BERT+CRF
   └─ 样本少/表达多变 → LLM JSON 抽取
2. 槽位
   ├─ 序列标注 BIO
   └─ 或 LLM 结构化输出
3. 规范化
   └─ 时间/城市/实体 → 标准值
4. 缺槽
   └─ 反问澄清
5. 兜底
   └─ 低置信转人工

【口述骨架】(5 分钟)

时间任务内容
0:00–0:30定性“意图+槽位两大任务,先拆再联合”
0:30–2:00方案BERT-CRF vs LLM JSON
2:00–3:30关键问题规范化、缺槽反问、多意图
3:30–4:30链路与评估ASR→NLU→DM→执行;槽位 F1
4:30–5:00收尾“抽出值还要规范化,缺槽要能反问”

【关键数字】

参数经验值说明
意图准确率业务常要求 90%+看场景
槽位 F1BIO 级评估序列质量
few-shot3–8 个示例LLM 抽取
低置信转人工兜底
JSON 解析失败重试/容错LLM 工程

【追问链】(三层)

L1|“为什么用 BIO 标注?” → 序列标注标准范式:B-起点/I-内部/O-外部,配合 CRF 保证标签合法转移。

L2|“LLM 抽取怎么保证格式稳定?” → JSON schema 约束+few-shot+解析失败重试;必要时用 constrained decoding。

L3|“用户没说目的地怎么办?” → 对话管理检测缺槽,生成反问:“请问您要飞到哪个城市?”

【评分标准】

档位答案特征
60 分知道要做意图分类
80 分意图+槽位;BERT-CRF 或 LLM;规范化
95 分BIO/CRF 机制;缺槽反问;LLM 格式稳定性;对话链路全景

【关联题】

  • 同一知识簇: AI-35(分类)、AI-44(Prompt/JSON)、AI-47(Agent)
  • 延伸: AI-34(Query 理解)

【自测】

  1. 意图和槽位分别是什么? 参考答案: 意图=做什么;槽位=动作参数。
  2. “明天”抽出后还要做什么? 参考答案: 时间解析规范化为具体日期。
  3. 缺关键槽位怎么处理? 参考答案: 对话管理反问澄清,不瞎执行。

AI-37. “怎么退款”和“钱什么时候退”是同一句话吗(语义匹配) ​

【考察内容】文本匹配是 NLP 高频场景题

【题目】FAQ 机器人:用户问“怎么退款”,库里有 10 万条标准问答,字面上没一个完全匹配的(用户会说“钱啥时候回来”)。怎么用 BM25 关键词 + 向量语义双路召回,再用交互模型重排?怎么训练匹配模型?

【参考答案】

  1. 任务本质:语义文本相似度(STS)/文本匹配——字面不同但语义相同;

  2. 实现方案:

    • BM25 关键词匹配:召回层(快,解决字面重合);
    • 向量语义检索:Query 与 FAQ 分别编码(Sentence-BERT/双塔)→ 余弦相似度 → ANN 检索 TopK——解决语义改写;
    • 混合检索:BM25 + 向量 融合(RRF),召回更全;
    • 重排序(Rerank):召回 Top50 后用 Cross-Encoder 精排——效果最好(成本高,只重排少量);
  3. 训练:有标注(正负句对)训练双塔(对比学习:正样本拉近/负样本拉远,in-batch 负采样);无标注用 SimCSE 自监督;

  4. 工程:向量库定期更新;阈值与兜底(相似度低于阈值→转人工/提示);评估:召回率@K、MRR、命中率;

  5. 演进:大模型可直接判断/生成,但向量检索仍是 RAG/QA 召回底座。

  6. 关键公式: 余弦/BERT 句向量相似度;孪生网络对比学习损失(InfoNCE)。

  7. 排查步骤: 建难负例集(同领域不同问题)→ 看是否需要跨语言/口语归一 → 阈值决定是否合并 FAQ。线上-离线:离线高相似不一定同答案,最终还要看答案是否可复用。

【原理溯源】

  • 为什么要双路? BM25 抓字面(“退款”两字都在),向量抓语义(“钱啥时候回来”意思对但字不同)。单路必漏。
  • 双塔 vs Cross-Encoder 为何分工? 双塔独立编码、可预计算、快,适合全库召回;Cross 拼接编码、充分交互、准,但 O(N) 太贵,只对 TopK 精排。
  • 对比学习在学什么? 正句对拉近、负句对拉远,让“语义相同”在向量空间靠近。in-batch 负采样高效构造负例。
  • 为什么必须设阈值兜底? 没有匹配也强行答最伤体验。低于阈值转人工/提示,是精度底线。

【选型判断树】

FAQ 语义匹配:
1. 召回
   ├─ 必须混合:BM25 + 向量
   └─ RRF 融合
2. 重排
   ├─ 精度敏感 → Cross-Encoder TopK
   └─ 延迟紧 → 可省略,但要评召回
3. 训练
   ├─ 有标注 → 对比学习双塔
   └─ 无标注 → SimCSE
4. 兜底
   └─ 相似度阈值;低于则转人工
5. 评估
   └─ Recall@K / MRR / 命中率

【口述骨架】(5 分钟)

时间任务内容
0:00–0:30定性“字面不同语义同,必须混合召回+重排”
0:30–2:00双路召回BM25 + 向量 + RRF
2:00–3:30训练与重排对比学习;Cross-Encoder
3:30–4:30工程阈值兜底;评估 MRR
4:30–5:00收尾“双塔管召回,Cross 管精排,阈值保底线”

【关键数字】

参数经验值说明
召回 TopK20–50进重排
Cross-Encoder只重排 Top 20–50成本高
Embedding 维度768/1024Sentence-BERT
RRF k常取 60免调参
阈值按验证集命中率选兜底

【追问链】(三层)

L1|“双塔和 Cross 为什么效果有差?” → 双塔 query/doc 独立编码(信息交互少但可预计算),Cross 拼接编码(充分交互但每对都要算)。

L2|“只用向量不用 BM25 行不行?” → 字面精确匹配(型号、专名)会漏。必须混合。

L3|“没有匹配时怎么办?” → 相似度低于阈值不匹配,转人工或提示,防强行答错。

【评分标准】

档位答案特征
60 分知道用向量相似度
80 分混合召回;双塔训练;Rerank
95 分讲清双塔 vs Cross 分工;对比学习;阈值兜底;MRR 评估

【关联题】

  • 同一知识簇: AI-39(RAG)、AI-49(Embedding 选型)、AI-52(双塔 vs Reranker)
  • 搜索衔接: AI-34

【自测】

  1. 为什么要 BM25+向量双路? 参考答案: BM25 抓字面,向量抓语义,互补。
  2. Cross-Encoder 为何不能全库跑? 参考答案: 每对都要过模型,O(N) 太慢,只能精排 TopK。
  3. 没有匹配时的正确动作? 参考答案: 阈值兜底,转人工/提示,不强行回答。

AI-38. 工厂摄像头要自动检出划痕,缺陷样本只有几百张(工业质检) ​

【考察内容】CV 工业落地是 AI 应用高频场景题

【题目】工厂产线要上视觉质检:自动检测产品划痕/瑕疵。正常品样本很多,但缺陷样本只有几百张(且形态多样)。迁移学习、数据增强、异常检测(只学正常分布)几条路线怎么选?产线对误检率、推理速度有什么要求?

【参考答案】

  1. 任务定义:缺陷检测(分类:有无缺陷 / 检测:定位缺陷框 / 分割:缺陷像素级);

  2. 建模方案:

    • 小数据策略:迁移学习(ImageNet 预训练微调,分类用 ResNet,检测用 YOLO 系列,分割用 U-Net)——几千张足够微调;
    • 数据增强:旋转/翻转/光照/噪声/弹性形变(工业缺陷样本少,增强是刚需);
    • 异常检测路线(缺陷样本极少时):只用正常样本训练,缺陷=偏离正常分布:
      • 基于特征分布/记忆库:PatchCore、SPADE——正常样本特征记忆库,测试时 kNN 距离打分;
      • 基于重建:AE/VAE——重建误差大=异常;
  3. 工业落地关键(往往比模型更重要):

    • 数据标注:缺陷类型定义、标注规范(漏标=负样本污染)、专家复核;
    • 误检率控制:误检与漏检都贵,按场景权衡——安全件/高价值件通常漏检代价更高;大批量低值件则误检成本突出——阈值调整+规则过滤+二次人工抽检;
    • 推理速度:产线节拍(如 100ms/件)——YOLO 小模型+TensorRT/INT8;
    • 环境一致性:光照、角度、镜头固定;
    • 部署:边缘盒子/工控机(本地推理);
  4. 评估:缺陷召回率(漏检=质量逃逸)、误检率(杀良品=成本)、F1、mAP;按缺陷类型分开评估;

  5. 迭代:产线收集新缺陷→增量标注→重训(闭环)。

  6. 关键公式/指标: 缺陷检测看 Recall(漏检代价高)与误报率;小样本常用迁移+数据增广+异常检测。

  7. 排查步骤: 清晰成像/光照 → 预训练骨干 → 增广 → 阈值偏召回 → 人工复核带。线上-离线:产线相机与训练集差异大(域偏移),要现场数据持续回流。

【原理溯源】

  • 为什么几百张缺陷不适合直接训检测器? 检测器要学“缺陷长什么样”,几百张覆盖不了形态多样性,易过拟合。
  • 迁移学习为何有效? ImageNet 预训练已会边缘、纹理、形状。小数据微调只是任务对齐,远优于从零训练。
  • 异常检测路线的核心假设? 缺陷形态无限、正常形态有限。只学正常分布,偏离即异常——完美匹配“正常多、缺陷少且杂”。
  • 为什么误检率是工业成本杀手? 误检=良品报废+复检停机,大批量下成本巨大。阈值与规则要按“单件成本×产量”优化,不是只追 Recall。

【选型判断树】

工业质检:
1. 缺陷样本量
   ├─ 几千+且形态稳定 → 迁移学习检测(YOLO)
   ├─ 几百且形态多样 → 异常检测(PatchCore)或迁移+强增强
   └─ 正常多缺陷极少 → 异常检测首选
2. 任务
   ├─ 只要判定 → 分类
   ├─ 要定位 → 检测
   └─ 要像素 → 分割
3. 产线约束
   ├─ 节拍紧 → 小模型+TensorRT/INT8
   └─ 环境固定 → 否则先解决光照/角度
4. 成本
   └─ 按场景权衡漏检/误检;二次抽检

【口述骨架】(5 分钟)

时间任务内容
0:00–0:30定性“缺陷少形态杂,迁移+增强;极少则异常检测”
0:30–2:00建模迁移学习;增强;PatchCore/AE
2:00–3:30工业关键标注、误检率、节拍、环境
3:30–4:30评估按缺陷类型分评;漏检/误检代价
4:30–5:00收尾“工程细节常比模型更重要”

【关键数字】

参数经验值说明
微调样本1k–5k 可用迁移学习
节拍50–100ms/件产线约束
量化INT8 + TensorRT边缘部署
PatchCore正常样本记忆库无缺陷标签
误检/漏检按单件成本调阈值场景权衡

【追问链】(三层)

L1|“为什么用异常检测?” → 缺陷形态多样且样本极少,学正常分布更稳。

L2|“误检率怎么控?” → 阈值调整、规则过滤(瑕疵大小/区域)、二次人工抽检;按成本函数优化。

L3|“环境光照变了怎么办?” → 训练/产线环境一致性是前提;否则先做图像增强/固定打光/域适应。

【评分标准】

档位答案特征
60 分知道要迁移学习/数据增强
80 分异常检测路线;误检率意识;边缘部署
95 分讲清“正常有限缺陷无限”假设;按成本权衡漏检/误检;按缺陷类型评估;工程闭环

【关联题】

  • 同一知识簇: AI-04(小样本)、AI-01(不平衡漏检)
  • 工程衔接: AI-28(推理优化)、AI-24(监控)

【自测】

  1. 缺陷样本只有几百张,首选什么路线? 参考答案: 迁移学习+强增强;缺陷极少且杂时转异常检测。
  2. 工业质检最大的成本陷阱? 参考答案: 误检导致良品报废与停机;要按成本调阈值。
  3. PatchCore 思想一句话? 参考答案: 用正常样本建特征记忆库,测试时 kNN 距离打分判异常。

持续学习,持续积累。