最近在搭一个简单的RAG系统,主要是给内部知识库用的。参考了一些教程,说在检索前先用Prompt把用户query改写一下,比如把口语问题转成更精确的关键词,能提高召回率。我试着用GPT-4写了个prompt,大概就是“将用户问题改写为适合向量检索的简洁句子”,但跑了几轮测试,发现改写后检索出来的文档相关性反而下降了,有时候甚至还不如直接用原始query。想请教有经验的大佬:是prompt设计得不对,还是改写这一步本身就不适合所有场景?或者说改写后需要调整embedding模型?目前在用bge-small,感觉有点迷茫,求指点。
楼主
2026-07-28
新手求教:RAG里用Prompt改写query,效果反而变差了,是哪里出了问题?
请 登录 后发表回复
全部回复
共 142 条
2楼
1天前
这个问题其实挺常见的,我一开始搭RAG也踩过类似的坑。GPT-4改写query听起来美好,但它很容易“过度改写”——把口语问题变成一堆看似专业但跟知识库实际用词不匹配的关键词,embedding反而抓不住重点了。bge-small本身对短文本和关键词比较敏感,改写后句子变长或者引入了原问题没有的概念,向量就飘了。你可以先别急着换embedding模型,做个简单的A/B测试:原始query、改写query、还有改写后只取关键词三种方式各跑一批,对比召回文档的人工评分。另外改写prompt里最好加一句“不要引入新信息,只做同义压缩”,并且限制输出长度。还有一种可能是你的知识库文档本身也是口语化的,那改写反而制造了语义鸿沟。如果非要改写,可以试试用轻量模型或者规则先做,别一上来就GPT-4,有时候简单归一化比花哨的改写更稳。
3楼
17小时前
改写容易丢原query里的关键实体,bge-small对语义漂移又敏感,不如先别改写。