返回

搜索相关性排序怎么优化?召回 + 排序双阶段方法

通智云团队 ·
技术方案 搜索系统
搜索相关性排序怎么优化?召回 + 排序双阶段方法

摘要:搜索相关性问题要先判定发生在召回还是排序:召回不足就补候选来源与召回宽度,排序不当就补特征与模型。两条排查路径几乎正交,混在一起改通常无效。

用户抱怨"搜出来不相关"时,问题可能出在两个完全不同的环节:目标文档没进候选集(召回失败),或者进了候选集却排到第 40 位(排序失败)。前者调排序权重毫无用处,后者加召回路数只在尾部塞进更多噪声。本文按"召回—排序"双阶段拆解:两类问题的判别表、多路召回的漏斗量级、粗排与精排分工、精排特征与 Learning to Rank 三类方法取舍、四类排序失真的修法,以及离线评估与三阶段落地路径。

关键要点

一、先分清两类问题:召不回来,还是排不上去

优化相关性的第一步不是调参,而是定位。同一个"搜出来不相关"的投诉,可能来自两个正交的环节:候选集里没有目标文档(召回不足),或文档在候选集里却排到了后面(排序不当)。

判定方法是离线回放:取一批 bad case 查询(零结果、无点击、翻页过深),人工标注本应出现的文档,再重跑链路看它们是否进入召回候选集。判断标准是目标文档是否进了候选,而非它最终排第几。统计几十条就能定优先级:没进候选就先做召回,进了候选却排在几十名之外就先做排序。

维度 召回不足 排序不当
判别信号 目标文档不在召回候选集内 目标文档在候选集内,精排后靠后
典型表现 零结果、结果极少、翻到底也找不到 结果很多、前几页不对、翻深了能找到
主看指标 Recall@K、零结果率 NDCG@10、MRR、首位命中率
有效手段 加召回路数、扩召回宽度、补查询理解 补特征、上精排模型、校正位置偏差
常见无效动作 调排序权重、加精排特征 继续加召回路数、扩大候选集

二、召回阶段:多路召回与漏斗量级

召回的目标不是"排得准",而是以可接受的代价把可能相关的文档尽量捞进候选集。单路召回必然有盲区,主流做法是四路并行。

字面召回基于倒排索引与词频统计(如 BM25),强在型号与编码的精确命中;向量召回把查询与文档映射到同一向量空间,解决用词不一致的词汇鸿沟,两者边界与融合方式见语义搜索是什么?向量检索与关键词检索全面对比;结构化过滤处理类目、价格、库存等硬约束,应作过滤条件而非打分信号;热门与个性化兜底保证极短查询时仍有内容可展示。

多路结果需要融合。Elasticsearch 官方把倒数排名融合(RRF)定义为"把具有不同相关性指标的多路结果集合并为单一结果集"的方法,优点是无需调参、各路指标不必同尺度可比。

漏斗量级为:全量文档 → 过滤后数千至数万 → 粗排后数百 → 精排后数十 → 展示十条,每层候选量都是下一层的天花板。召回率用 Recall@K 度量。难点在真值:相关文档全集要么靠标注集,要么靠点击日志反推,而后者天然不完整。

三、排序阶段:粗排与精排怎么分工

排序分两段,是因为候选量与延迟预算不在一个量级。粗排面对数千到数万候选,只能用倒排或向量库内可计算的轻量打分(BM25 分、向量相似度、静态质量分)配合线性融合,延迟预算在个位数毫秒;它的任务只有一个:把候选从万级筛到百级,且不提前淘汰好文档。

精排面对数百候选,可用全量特征与复杂模型(GBDT、LambdaMART、神经网络),延迟预算放宽到几十毫秒,通过 rescore 实现。Elastic 官方文档对 Learning to Rank 的定位正是如此:模型通常作为第二阶段的重排器,用于提升第一阶段召回结果的相关性。

精排之后还有一层重排,即业务规则层:置顶、屏蔽、去重、打散、合规过滤。它不是兜底,而是业务可控性的来源。三层架构在什么是推荐系统?召回、排序、重排三层架构解析中有对应拆解,搜索与推荐在这一层是同构的。

四、精排特征与 Learning to Rank 的取舍

精排特征是相关性的载体,建议按四类搭齐:文本相关性(BM25 得分、字段命中、查询词覆盖率、词项紧邻度、向量相似度);用户行为(点击率、加购率、转化率,必须按曝光量平滑,否则噪声会淹没信号);文档属性(时效、质量分、评分、销量、库存);上下文(设备、时段、查询类型、用户历史)。

有了特征,接下来是用什么目标组合它们,即 Learning to Rank 的方法选择。

方法 标注形式 优化目标 适用与代价
Pointwise 单条文档的相关性等级 单点预测误差 标注最简单;但目标与排序位置脱节
Pairwise 文档对的偏序 逆序对数量 标签可由点击对构造;忽略列表整体,易扎堆
Listwise 整个列表的顺序 直接优化 NDCG 等指标 最贴近线上目标;标注与计算成本最高

选型上,标注靠人工、数据量小时从 pointwise 起步;有稳定点击日志后转 pairwise;只有确需优化列表级目标(多样性、整体收益)时才上 listwise。需要说明的是,Airbnb 在公开研究中指出,常用 LTR 框架隐含的"一条结果的价值可独立于列表中其他条目确定"这一假设并不成立——这正是只做 pointwise 的系统容易"前十条长得都一样"的结构性原因。

五、四类常见排序失真与修法

相关性被销量淹没。 行为特征的量纲与覆盖率远大于文本特征,模型很快学会"销量高的排前面"。修法是把文本相关性设为硬门槛:文本分低于阈值的文档不得进入头部,再用分位数校准与分桶归一化把行为特征压到可比尺度。

长尾查询塌陷。 训练样本被头部查询主导,长尾查询的排序几近随机。修法是按查询频次分层采样或加权,让长尾样本在训练集中保住比例;同时对长尾查询提高文本特征权重、降低行为特征权重。

新内容排不上。 没有曝光就没有点击,形成死循环。修法有三:保证索引实时性,让新内容分钟级可被召回;用不依赖曝光的特征(内容质量分、属性完整度)做冷启动打分;预留固定比例的探索流量积累数据。零结果率的成因与降法在站内搜索零结果率怎么降?8 个可落地策略中有专门拆解。

位置偏差。 越靠前的结果越容易被点击,把点击直接当相关性标签,等于把历史排序固化。微软研究院在 SIGIR 2018 提出的无偏排序学习方法用倾向性估计(IPS)校正:按"该位置的结果被用户观察到的概率"对点击加权,从有偏日志中学到无偏的排序模型。更轻量的做法是维持少量随机化或交换位置的探索流量。

六、评估与落地:离线指标与三阶段路径

离线指标解决"能否快速迭代",在线 A/B 解决"是否真的有用"。MRR 适合导航型、唯一答案型查询;MAP 考察多个相关结果的整体质量;NDCG@K 同时考虑多级相关性与位置折损,是多结果场景的默认选择。Elasticsearch 的排序评估接口支持 precision、recall@k、MRR、DCG 等指标,可对标注集直接评测。

标注测试集这样建:从真实查询日志分层抽样,头部、腰部、长尾各占固定比例;每个查询标注 20–50 条候选的相关性等级;双人独立标注并检验一致性;内容更新后定期重标。行为信号可作弱标签,但自带位置偏差。

必须分段评估,按查询类型、是否有结果、品类分别统计。整体指标会被头部查询平均掉,最常见的失败是"整体涨了、长尾崩了"却未被发现。此外,LTR 的优势并非总是稳固:有研究对多个公开数据集的统计检验显示,许多 LTR 算法相对"数据集中最好的单个特征"并未产生显著差异,基线之间多数统计打平,因此离线评估必须做显著性检验。

落地分三阶段。阶段一建观测与基线:补齐查询词、曝光、点击、无结果、换词埋点,建标注集跑出分段基线,盯零结果率与首位点击率。阶段二补召回与粗排:接上多路召回与 RRF 融合,做查询理解(纠错、同义归一、意图识别),把过滤条件从打分中剥离,盯 Recall@K 与长尾候选覆盖率。阶段三上精排与规则层:搭四类特征、训 LTR 模型、配业务规则并保留探索流量,盯 NDCG@10 的分段提升与在线 A/B 显著性。此阶段搜索与推荐可共用排序底座,协同方式见推荐系统与搜索的协同:一体化增长方案。

常见问题

问:怎么快速判断搜索相关性差是召回问题还是排序问题?

答:做离线回放:取一批 bad case 查询,人工标注本应出现的文档,重跑链路看它们是否进入召回候选集。没进候选是召回问题,进候选却在精排后掉到几十名是排序问题。

问:多路召回是不是路数越多越好?

答:不是。每加一路都要付出索引、延迟与融合的代价,只有能覆盖现有盲区时才值得加。判断标准是增量召回率:新路带来的、其他路召不回的相关文档占比过低就该放弃。

问:没有标注数据,能做 Learning to Rank 吗?

答:可以,但要降低预期。先用点击日志构造偏序对训练 pairwise 模型,同时建小规模人工标注集验证。纯行为标签带位置偏差,需预留探索流量或用逆倾向加权校正,否则模型只会强化历史排序。

问:为什么离线 NDCG 提升了,线上转化率却没变?

答:三个常见原因:没做显著性检验,涨幅落在噪声区间;整体指标被头部查询平均掉,长尾其实变差了;离线标注的相关性与购买意图不是一回事,需检查标注口径。

问:新上架的内容总是排不上怎么办?

答:先确认能否被召回:索引实时性不足时新内容不在候选集里,属于召回问题。若能召回却排不上,则是行为特征缺失导致的冷启动,需用内容质量分、属性完整度等特征打分。

问:上了精排模型后还需要保留人工规则吗?

答:需要。置顶、屏蔽、打散与合规过滤是业务可控性的来源,模型无法保证这些约束。分工是模型负责相关性排序,规则层负责业务约束与多样性,只在必要处覆盖结果。

关于通智云

通智搜索面向本文描述的相关性调优场景,提供多路召回、倒数排名融合、Learning to Rank 精排与人工规则干预能力,支持离线评测与在线 A/B 联动。通智云(TENGENCE)是 AI 时代的企业增长引擎,专注公域引流获客与私域转化成交;核心产品为通智 GEO(GEO + SEO 双引擎)与通智搜索。

相关阅读

数据来源

  1. arXiv《Unbiased Learning to Rank with Unbiased Propensity Estimation》(微软研究院,2018):支撑"位置偏差可用倾向性估计(IPS)校正"的论断。
  2. arXiv《Is Learning to Rank Worth It? A Statistical Analysis of Learning to Rank Methods》(2013):支撑"离线涨幅必须做显著性检验、多数基线与 LTR 统计打平"的论断。
  3. arXiv《Learning To Rank Diversely At Airbnb》(Airbnb,2022):支撑"单条结果的价值不能独立于结果列表确定"的论断。
  4. Elasticsearch 官方指南《Learning To Rank (LTR)》:支撑"LTR 模型通常作为第二阶段重排器,提升第一阶段召回结果的相关性"这一双阶段论断。
  5. Elasticsearch 官方指南《Reciprocal rank fusion》:支撑"RRF 把不同相关性指标的多路结果集合并为单一结果集且无需调参"的论断。
  6. Elasticsearch 官方指南《Evaluate ranked search results》:支撑"排序评估接口支持 precision、recall@k、MRR、DCG 等离线指标"的论断。

立即行动

免费试用通智云 | 免费预约专家咨询和诊断 | 了解通智搜索

← 上一篇: 搜推一体架构设计:搜索与推荐怎么融合?四层架构与四阶段落地 下一篇 → 内容运营日历:选题、生产与分发的节奏管理
咨询 咨询
二维码

企业微信