第4章 相关性排序(BM25、TF-IDF、Learning to Rank)

核心命题:从经典统计排序到机器学习排序的演进路径,需掌握公式原理、特征设计、模型选型三个层次。
面试定位:基础必考(BM25/TF-IDF)+ 进阶必考(LTR),是衡量搜索算法基本功的重要章节。
理解问题 相关性排序本质 公式推导 TF-IDF / BM25 特征设计 文本/行为/上下文 模型对比 传统 vs LTR 追问:参数调优 追问:特征缺失 追问:评估指标 系统化回答框架 BM25 公式推导 k1 / b 如何选择? IDF 公式变体? BM25F 多域扩展 追问路径:参数 → IDF → 扩展

高频面试问答卡片

问题:请推导BM25公式并说明其相比TF-IDF的改进点

  • 考察点:公式记忆能力、信息检索理论基础、对超参数的理解
  • 回答框架:写出完整公式→逐项解释→对比TF-IDF的缺陷→说明改进效果
  • 示例回答:BM25得分=IDF·(tf·(k1+1))/(tf+k1·(1-b+b·dl/avgdl))。IDF平滑处理,k1控制词频饱和,b调节长度归一化。相比TF-IDF,BM25抑制高频词的过度影响,缓解长文档得分过高的问题。
  • 可能追问:k1和b的常见取值范围?如何通过grid search调优?
  • 避坑提醒:务必手写完整公式;不要混淆BM25与BM25F;IDF需说明有无平滑(如+1)

问题:在搜索排序中如何设计特征?请列举三类并说明其作用

  • 考察点:特征工程经验、业务场景理解、特征有效性判断
  • 回答框架:文本匹配特征→文档质量特征→用户行为特征→上下文特征,每类举1-2例
  • 示例回答:①文本特征:query-标题BM25、余弦相似度;②质量特征:PageRank、文档发布时间;③行为特征:点击率、停留时长;④上下文特征:用户地理位置、设备类型。需归一化并经GBDT选择重要特征。
  • 可能追问:如何处理冷启动商品(无行为特征)?特征缺失值用什么填充?
  • 避坑提醒:避免只列特征名称,需说明每个特征对排序的具体影响;注意特征实时性要求

问题:请对比Pointwise、Pairwise、Listwise三种Learning to Rank方法

  • 考察点:对LTR模型体系的理解、损失函数区别、工业落地选型
  • 回答框架:定义三种方法→损失函数举例→优缺点对比→推荐场景
  • 示例回答:Pointwise将排序转为分类/回归,忽略文档间相对顺序;Pairwise比较文档对,优化RankNet;Listwise直接优化NDCG等排序指标,如LambdaRank。工业搜索常用Listwise,效果最优,但训练代价高。
  • 可能追问:LambdaRank如何实现NDCG可导近似?为什么Pairwise在精排中不如Listwise?
  • 避坑提醒:不要混淆Pointwise与Pairwise;提到Listwise时需说明损失函数(如ListNet、LambdaRank)

项目案例模板:电商搜索相关性排序优化

模块 内容
项目名称电商搜索相关性排序优化(BM25 + LambdaRank)
业务背景搜索转化率低于行业平均,用户长尾查询匹配差,无行为新商品排序靠后
规模指标日搜索量1.2亿次,索引文档数5000万,线上NDCG@10基线0.58
技术栈Elasticsearch(召回+BM25基础分)、TensorFlow(LambdaRank训练)、XGBoost(特征重要性筛选)、A/B实验平台
核心难点①长尾query样本稀缺;②冷启动商品无用户行为特征;③线上推理延迟控制在50ms以内
面试高频追问
  • 如何评估排序效果?——离线NDCG、在线A/B测试(CTR、转化率)
  • 冷启动商品如何处理?——利用商品标题/类目embedding相似度作为文本特征;采用内容画像补充
  • LambdaRank训练时label如何构造?——基于用户行为(点击/下单/停留)多级标注
可迁移回答话术 "我们采用两阶段排序:ES BM25粗排 + LambdaRank精排。粗排保留Top200候选,精排输入200维特征(文本/质量/行为)。通过GBDT做特征筛选,最终线上NDCG@10提升3.2%,搜索转化率提升1.8%。新商品利用内容特征构建向量化相似度,缓解冷启动问题。"
面试要点:项目案例需突出量化指标(提升百分比)、技术选型理由(为什么用LambdaRank而不是pairwise)、以及解决冷启动/长尾的具体方案。避免过于理论化,重点讲落地细节。