最近在搭一个RAG问答系统,用的是一些开源模型。发现一个问题:检索到的文档明明是对的,但大模型经常忽略文档里的关键信息,自己编答案。比如用户问某个产品参数,文档里写的是A,模型却输出B,感觉像没读文档一样。我现在的prompt大概就是“基于以下文档回答”,但效果不稳定。是不是需要加一些强制约束,比如“如果文档中没有相关信息,请直接说不知道”?或者把文档分段加个标签再引用?有没有大佬分享下实际项目中写RAG prompt的经验?多谢!
楼主
2026-07-17
RAG系统里,Prompt怎么写才能让大模型不“跑偏”?
请 登录 后发表回复
全部回复
共 163 条
2楼
7天前
我之前也踩过这个坑,光靠一句“基于文档回答”确实不够。后来我把prompt改成强制要求模型先引用原文片段再给结论,并且明确告诉它“如果文档里没有,就说不知道,别编”,效果稳多了。另外把文档分段加个编号,让模型回答时带上引用编号(比如[1]),也能减少它自由发挥,你可以试试这种带格式约束的写法。
3楼
3天前
这个问题挺典型的,我也踩过差不多的坑。光靠“基于以下文档回答”基本等于没约束,模型很容易顺着自己的先验知识往下编。我后来是在prompt里明确要求它每个结论后面标注来自哪一段,比如让文档带上编号,回答时引用编号,这样它“跑偏”的概率会低不少。另外“文档里没有就说不知道”这句确实得加,但别只写一句,最好再补一句“不要用你的常识补充”,不然它还是会偷偷加料。还有个挺管用的做法是把文档按段落切好,每段前面加个简短标题或摘要,模型定位关键信息会准很多。温度也建议调低一点,RAG场景下不需要它发挥创造力。不过我也好奇,你用的是哪类开源模型,有些模型对长上下文里的中间信息本身就容易忽略,可能不全是prompt的锅。
4楼
3天前
这个坑我也踩过,光写“基于以下文档回答”确实不够,模型很容易自由发挥。我后来改成让它在每句话后面标注引用来源,比如“根据文档X”,幻觉明显少了。你说的“没相关信息就说不知道”也很有用,但得配合更具体的指令,比如“只允许使用文档中的原文表述”。另外文档分段加编号确实有帮助,方便模型定位,也方便你排查它到底读没读进去。