无重排模型的替代方案
没有交叉编码器或托管重排服务时,可以用替代信号给候选排序:向量分数、关键词覆盖率、时效加权、来源权威度,按权重组合成启发式打分。它和语义重排不是一回事——启发式组合通常能把「相关片段」从中间位置提到前部,但救不回向量检索本身没召回的片段。权重必须用评测集来调,随手固定很难判断收益是来自排序还是噪声。
基本信息
| 信号构成 | 向量分数、关键词覆盖率、时效、来源权威度 |
|---|---|
| 组合方式 | 线性加权,权重由评测集确定 |
| 能力边界 | 只重排已有候选,不扩大召回 |
| 优点 | 无需额外模型,几乎没有推理成本 |
| 常见偏差 | 覆盖率类信号偏好长片段 |
| 维护成本 | 权威度等人工字段需要持续维护 |
典型使用场景
- 没有重排服务且资源受限的项目
- 延迟要求极低,承担不了交叉编码器开销
- 混合检索(向量加关键词)结果的融合排序
- 时效性强的场景,如公告与故障通告需要时间加权
- 作为交叉编码器上线前的过渡排序方案
特征加权打分
特征加权打分
def heuristic_score(q, doc, vec_score):
kw = keyword_coverage(q, doc.text) # 关键词覆盖率,取值 0 到 1
fresh = recency_score(doc.meta) # 时效得分,越新越高
auth = authority_score(doc.meta) # 来源权威度,人工维护
return 0.6 * vec_score + 0.25 * kw + 0.1 * fresh + 0.05 * auth
# 各信号要先归一化到同一量纲,否则权重没有可比性替代信号读法
| 信号 | 计算方式 | 注意 |
|---|---|---|
| 向量分数 | 检索返回的相似度 | 尺度随模型变化,跨模型不可比,需归一化 |
| 关键词覆盖率 | 查询词在片段中的覆盖比例 | 偏好长片段,需要加长度惩罚 |
| 时效 | 按发布时间衰减 | 仍然权威的旧文档不要过度衰减 |
| 来源权威度 | 人工维护的权重表 | 没有负责人更新就形同虚设 |
启发式组合不替代语义精排,但常能把相关片段从中间位置提到前部,且几乎没有额外推理成本,是低资源场景的务实选择。
权重必须用评测集调:随手固定权重时,收益与噪声无法区分,线上效果变化也无从解释。