什么时候值得微调
当通用 embedding 模型对领域术语、缩写、内部代号的理解明显不足,且评测确认召回受限时,可以考虑用领域语料做对比学习微调:正例由查询与相关段落组成,负例来自批内样本或显式难负例,DPR 是经典的双塔训练思路。训练数据质量决定效果上限——正例不干净时,微调后的召回反而会比微调前更差。
基本信息
| 训练信号 | 查询与相关段落构成的正例对,配合难负例 |
|---|---|
| 经典方法 | DPR 双塔训练思路,两条塔共享或独立编码 |
| 数据质量 | 决定效果上限,正例对必须先清洗 |
| 验证要求 | 用同一评测集对比微调前后的召回与排序指标 |
典型使用场景
- 术语密集领域:医疗、法务、工业设备语料里名词与缩写占比高
- 内部代号检索:产品代号、工单编号在通用模型里几乎没有语义
- 点击数据可利用:线上已有查询与点击日志,可构造训练正例
- 通用模型效果见顶:切分与参数都调过仍不达标时的下一张牌
- 多语言混合:目标语言在通用模型训练数据里占比偏低
训练数据骨架
训练数据骨架
from sentence_transformers import InputExample
train = [
# 查询与相关段落成对,负例由批内样本或显式难负例提供
InputExample(texts=["如何配置超时", "在 conf 中设置 timeout 字段,默认 30 秒…"]),
# 继续补充更多真实查询与相关段落对
]
# 损失函数与训练器参考官方 MultipleNegativesRankingLoss 示例
微调决策对照
| 现象 | 是否适合微调 | 说明 |
|---|---|---|
| 通用问答效果尚可 | 暂不需要 | 先优化切分与检索参数 |
| 领域术语大量漏召回 | 适合 | 模型缺领域语义,收益明显 |
| 正例对难以获得 | 先积累 | 标注质量不足时风险较高 |
| 已有大量点击日志 | 适合 | 可用行为数据构造训练对 |
微调后要用同一评测集验证召回与排序指标的变化,并监控过拟合与对通用问题的退化,避免只在训练集相关的问法上变好。
微调产出一个新的模型版本,索引必须全量重建;把它当作模型升级流程来处理,双索引灰度并保留回退方案,比直接替换安全得多。