最近在做企业内部文档的RAG问答,用bge-base做embedding,top20召回后想用微调过的LLM做rerank。我拿了几百条人工标注的query-文档对,用LoRA微调了Qwen2-7B,loss是降了,但上线后一看,rerank后的top5准确率比直接用bm25还低。
楼主
2026-07-19
RAG场景下微调LLM做rerank,效果反而变差了,哪里出问题了?
请 登录 后发表回复
全部回复
共 185 条
2楼
7天前
几百条样本对7B模型来说太少了,LoRA微调容易过拟合到训练分布,泛化不行。
微调loss降不代表排序效果好,建议直接用交叉编码器或者换个排序损失试试。
3楼
3天前
几百条数据微调7B做排序,过拟合了吧,排序任务小模型反而更稳。
4楼
2天前
几百条数据微调7B做rerank,这个量级其实挺悬的。LoRA loss降了不代表排序能力学到了,很可能只是过拟合了标注里的表面模式。你评估的时候是用pointwise打分还是pairwise/listwise?如果只是让模型输出相关性分数,训练目标和rerank的排序目标其实是对不齐的。bge-base的top20召回质量也值得先看一眼,如果召回里压根没多少正例,后面再怎么排也救不回来。
5楼
2天前
几百条数据微调7B做rerank,这个量级有点悬,模型很容易学到标注里的噪声或者表面模式,loss降了但泛化崩了。而且你是拿pointwise的标注去训生成式LLM吗,那打分尺度和排序目标其实对不齐,输出的分数可能根本不可比。建议先别急着上LLM rerank,用bge-reranker这种专门做cross-encoder的模型在同样数据上跑个baseline,很可能效果就够用了。真要微调LLM的话,至少上千条起步,而且最好用listwise或者pairwise的构造方式。
6楼
17小时前
loss降了不代表排序能力就上去了,很可能你的训练目标是生成式的,模型学的是复述文档而不是打分,输出概率跟相关性根本不是一回事。几百条数据对7B的LoRA来说也太少了点,容易过拟合到标注风格上。建议试试用pointwise或pairwise的排序loss来训,或者干脆先拿个cross-encoder在同样数据上跑个baseline对比下,看是数据问题还是方法问题。