背景:基于LlamaIndex + BGE-m3搭了个本地知识库问答,测试集(100条)准确率还行,上线后用户问题一多直接拉胯。
楼主
9天前
RAG项目上线后效果崩了,召回质量比测试时差太多怎么办?
请 登录 后发表回复
全部回复
共 24 条
2楼
3天前
测试集才100条,样本量太小了,而且大概率是拿自己的文档自问自答,用户的问题表达方式完全不一样。建议先把线上真实query拉出来做bad case分析,看看是检索漏了还是排序不对,BGE-m3的embedding对长尾表述可能不够鲁棒。
另外LlamaIndex默认的chunk大小和overlap在真实场景里很容易出问题,用户问法一旦带点口语化或者指代,召回直接跑偏。可以先试试调低top_k,或者加一层rerank,效果会稳很多。
3楼
3天前
这情况太典型了,测试集那100条基本等于你自己给自己画了个靶子,上线后用户的问题分布跟那个根本不是一回事。我猜你召回崩大概率不是模型本身的问题,而是embedding的相似度阈值没调好,或者top-k取得太死,线上问题稍微换个说法,向量距离就全变了。我踩过类似的坑,后来把检索改成混合模式,关键词用BM25兜底,语义检索只做重排,效果稳了很多。另外你监控过用户query的embedding分布吗?如果跟测试集偏差大,建议定期拿线上日志里的bad case去微调一下BGE,哪怕只跑几十条标注数据都管用。还有个细节,LlamaIndex默认的chunk大小可能对长文档不友好,线上问题一复杂,召回片段就切碎了,你可以试试把chunk_size调大一点或者加个滑动窗口。最后想问你一下,你们有没有做查询改写?我后来发现好多线上失败其实是用户问得太口语化,直接拿原句去检索根本不行。
4楼
1天前
测试集过拟合了吧,上线后query分布变了,建议先按badcase聚类看看是不是检索环节崩了。
实测BGE-m3对长尾问题召回就是虚高,换混合检索加粗排能稳不少。
5楼
12小时前
测试集就100条,样本太干净了,线上问题花样多,召回崩正常。建议拿真实用户问题去重跑下评估,再调下chunk大小和重排序。