跳到正文

多信号评分函数原理与陷阱

搜索引擎/推荐系统中综合多个相关性信号并排序的方法

原题:在搜索引擎或推荐系统中,如何设计一个有效的评分函数(scoring function)来综合多个相关性信号并生成最终排序结果?

RAG基础 · OPPO真题

回答与解析

设计步骤

  1. 定义目标与约束:明确相关性、点击、转化、停留、多样性或时效性,并区分预测目标与展示约束。
  2. 构造信号:文本或向量相关度、质量、流行度、新鲜度、用户偏好和上下文等;检查缺失值、时间穿越和在线可用性。
  3. 统一尺度:BM25、余弦、概率和计数不能直接相加。可使用分位数、z-score、Platt 或 isotonic 校准,也可在学习排序模型中共同学习。
  4. 学习组合:数据少且需要解释时可用带约束线性或逻辑模型;有排序标签时可用 RankNet 或 LambdaMART;深度模型适合高维交互,但不是由“数据大”自动决定。
  5. 后置约束:在候选得分后处理去重、多样性、频控、合规与库存等硬约束,并记录每项调整便于归因。

一个线性基线可写为 s(x)=Σw_iφ_i(x),但权重必须用标注、点击日志或实验估计。若日志由旧排序产生,应处理位置和选择偏差,避免把曝光机会误当相关性。

离线使用 NDCG、MRR、Recall、校准误差和分桶指标,同时测 P95 延迟与稳定性;线上用受控实验观察业务指标、长尾和护栏。评分函数要支持版本化、特征监控和回滚。最有效的函数不是最复杂的,而是在目标、偏差、约束和服务成本之间可验证地取得更好结果。

口语版讲法(约90秒)

  • 先定义排序目标和硬约束
  • 校准不同尺度的相关性信号
  • 按数据和服务预算选择组合模型
  • 处理日志偏差并离线线上联合验收

设计评分函数时,我先把“要预测什么”和“必须满足什么”分开。相关性、点击、转化或满意度可以进入模型目标;库存、合规、去重和频控通常是硬约束或重排规则。

接着检查信号。BM25、余弦相似度、质量分和热度计数的尺度不同,不能直接相加。线性基线可以在校准或标准化后组合;有排序标签时可用 LambdaMART 等学习排序模型;高维交互足够强且收益能覆盖成本时再考虑深度模型。数据规模本身并不能推出必须使用某种模型。

点击日志还带有曝光和位置偏差。排在前面的内容更容易被点击,若直接训练,模型可能强化旧策略。需要随机流量、倾向校正或其他反事实方法,并确保特征在线可取、没有时间穿越。

上线前我会同时看 NDCG、MRR、校准、长尾分桶、P95 延迟和稳定性,再做受控实验。评分函数要版本化并保留可回滚路径。

关键一句:评分函数的核心是目标定义、信号校准、偏差控制与可回滚的在线验证。

核验来源

  1. From RankNet to LambdaRank to LambdaMART: An Overview
  2. Unbiased Learning-to-Rank with Biased Feedback

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做电商搜索,用户搜‘手机’,我们有文本匹配分、销量、好评率、用户历史点击偏好等多个信号,你打算怎么把它们拧成一个最终排序分?

  2. 问法 2 · 层层追问

    排序时通常会用到好几个相关性信号……那这些信号量纲不一样,你怎么融合?……如果有些信号是文本分,有些是用户行为分,怎么让它们可比?

  3. 问法 3 · 直球架构

    设计一个评分函数,需要综合文本相关性、用户偏好、商品质量等多个信号,最终给出有序列表。你会怎么设计信号分层和融合策略?关键考虑什么?

同模块相关题目