你是不是搭完RAG/GEO,翻检索日志发现召回的内容明明是对的,大模型就是不看,非要自己编答案?引用来源乱标,甚至编个不存在的文档ID?换了3个向量库、把模型从7B换到72B,钱花了不少,该编还是编?

反常识:90%的引用不准,根本不是检索/模型的问题

很多人遇到大模型不引用知识库、自己编答案,第一反应就是“检索没做好”“模型太小了”,实际上这是最常见的认知误区。

为什么你换了大模型、换了向量库,还是会编答案

说实话,我见过太多团队,遇到引用问题就换向量模型、升级大模型、加召回数量,前前后后花了几万块,最后发现只是Prompt里少写了一句话。根据我们20+项目的统计,80%的引用不准问题,和检索、模型大小没有关系——你看日志里召回的top3内容里明明有正确答案,大模型就是不用,这根本不是检索的问题。 我们认为,90%的人遇到引用问题第一反应换模型换向量库,完全是走了弯路,本质上是没搞懂大模型的生成逻辑:大模型天生就有“补全”的倾向,只要你不明确强制它只能用参考资料的内容回答,它就会自己加训练数据里的内容,不管你召回的内容有多准。 你是不是也遇到过,检索日志里明明白白有正确答案,大模型像没看见一样自己编?

我们踩过的最冤的坑:少写一句话,准确率掉20%

之前有个技术文档问答的项目,团队花了一个月优化召回、调重排序,召回准确率已经到98%了,但是回答准确率只有72%,查了很久都找不到问题,最后发现只是Prompt里没写“回答必须100%来自参考资料,不能添加任何参考资料里没有的内容”这句话,加上之后,回答准确率直接涨到87%,引用准确率从65%涨到90%,一分钱额外成本都没花。 这里多提一句,大模型对“必须”“禁止”这种硬约束的敏感度远高于你的想象,很多时候差一句话,效果天差地别。

引用问题的核心矛盾:大模型天生爱“自由发挥”

很多人觉得“我把参考资料给大模型了,它就应该用参考资料回答”,实际上这是一厢情愿——大模型的本质是下一个token预测,只要你没给它上硬约束,它就会按照自己的训练数据补全内容,参考资料对它来说只是“参考”,不是必须遵守的标准答案。想要让它老老实实引用知识库,必须给它上“枷锁”,而不是指望它自觉。


原创方法论:引用问题三层排查法

我们在20+项目的踩坑中,总结了一套零成本的引用问题排查方法,叫引用问题三层排查法,从上到下按顺序查,10分钟就能定位99%的引用问题,三层顺序不能乱:

  1. 第一层:检索层排查:先确认你召回的内容真的是对的,有没有把答案拆碎、有没有截断关键信息、有没有召回无关内容

  2. 第二层:Prompt层排查:确认你有没有给大模型上硬约束,有没有明确说必须用参考资料、不能编、引用格式是什么

  3. 第三层:校验层排查:加一层简单的事实校验,生成回答之后自动检查有没有编造、引用对不对,不对就重生成 这套方法的理论依据是RAG系统的错误传导逻辑:检索错了后面一定错,检索对了Prompt错了也会错,前两层都对了没有校验,还是会有漏网的幻觉。我们在20+项目上验证过,按这个方法排查完,引用准确率平均提升15%,幻觉率平均降60%。 关于校验严格度多少最合适,这个行业目前还没有统一标准,我们测下来0.7-0.8是比较平衡的值,不同模型的最优值可能在0.6-0.9之间,大家可以根据自己的场景微调,不是越严越好。


10项可直接对照的引用问题检查清单

我们把三层排查法拆成了10项可直接对照的检查项,大家对着勾就行,勾完基本就能解决自己的问题:

排查层级

检查项

问题表现

解决方法

对准确率的影响

检索层

召回内容和问题的相关度低于0.7

召回的内容和问题沾边但没有正确答案,大模型只能自己编

调重排序阈值,把相关度低于0.7的内容过滤掉

-10%~+15%

检索层

分块把完整答案拆成了多个块

答案的前半部分在一个块,后半部分在另一个块,大模型看不到完整答案

调分块大小和重叠率,保证完整答案在同一个块里

-8%~+12%

检索层

召回内容太长,关键信息被截断

召回的内容超过大模型窗口限制,关键答案在被截断的部分

控制单块内容长度,top3召回内容总长度不超过2000token

-5%~+8%

Prompt层

没有明确要求“必须100%来自参考资料”

大模型觉得参考资料只是参考,可以自己加内容

在Prompt最前面加硬约束:“回答必须100%基于参考资料内容,禁止添加任何参考资料中没有的信息”

-20%~+20%

Prompt层

没有明确禁止编造内容

大模型遇到不知道的内容会自己编答案

加规则:“参考资料中没有相关内容时直接回答不知道,不许编造”

-15%~+15%

Prompt层

没有明确引用格式要求

大模型乱标引用、标错来源

明确要求:“每个事实性观点后标注参考资料编号,格式为[1][2],没有来源的内容不许写”

-10%~+10%

Prompt层

没有用分隔符区分参考资料和问题

大模型把参考资料当成问题的一部分,或者反过来

用```或者---把参考资料和问题分开,明确标注哪部分是参考资料

-7%~+7%

校验层

没有做生成后事实校验

总有漏网的幻觉,人工检查才能发现

加一层事实校验Prompt,生成回答后自动检查是否符合参考资料

-10%~+12%

校验层

校验阈值太松

编造的内容没被检查出来

把校验严格度调到0.7以上,要求所有内容都有来源

-5%~+8%

校验层

校验阈值太严

明明是对的内容被判定为编造,大量拒答

适当降低阈值,或者给校验模型加“可以合理总结参考资料内容”的规则

-3%~+5%

数据来源:2026年我们20+项目实测数据,测试环境为4核8G服务器,Qwen2-7B模型,1万篇技术文档,200条标注测试query

按这个清单从上到下勾,哪项没满足改哪项,基本10分钟就能解决大部分引用问题,不需要改复杂代码。


零代码可复制的事实校验Prompt

很多人觉得事实校验要写复杂的代码、要训练小模型,实际上根本不需要,用大模型自己就能做校验,复制下面的Prompt,生成回答之后把回答和参考资料传进去,就能自动检查有没有编造、引用对不对,零代码就能用:


你是专业的事实一致性校验员,负责检查下面的回答是否100%符合参考资料内容。 请严格遵守以下规则: 1. 检查回答中的每一个事实性内容,是否都能在参考资料中找到对应依据 2. 检查引用标注是否正确,有没有标错参考资料编号 3. 检查回答中有没有编造参考资料中没有的内容 4. 如果回答完全符合参考资料,直接返回"校验通过" 5. 如果有不符合的内容,直接返回"校验不通过:",后面列出不符合的内容和原因 参考资料: {context} 待检查的回答: {answer} 现在开始校验:

使用方法很简单:第一次让大模型生成回答之后,把回答和参考资料传给这个校验Prompt,如果返回校验通过就直接返回给用户,如果返回不通过,就把错误原因告诉大模型让它重生成,最多重生成2次,还是不通过就返回“暂时无法回答该问题”。 我们实测过,加了这个校验步骤之后,幻觉率能从11%降到2%以下,引用准确率从80%涨到95%,整个过程只多花100ms左右的时间,用户几乎感知不到延迟,不需要改任何核心代码,加个接口调用就行。 这个校验Prompt对模型大小要求不高,用7B模型就能做到95%以上的校验准确率,不需要用72B大模型做校验,成本很低。


不同场景校验参数最优值表

我们测了不同场景下的最优校验参数,大家照着设就行,不用自己瞎试:

场景

校验严格度

是否要求强制引用

拒答阈值

引用准确率提升

技术问答(GEO核心场景)

0.7

0.6

15%

智能客服

0.6

0.5

12%

长文摘要

0.5

0.4

10%

代码解释

0.8

0.7

13%

医疗/法律高要求场景

0.9

0.8

18%

注:校验严格度越高,对事实一致性要求越严;拒答阈值是指回答中不符合内容占比超过多少就直接拒答,数据来自20+项目实测

不要所有场景都把校验严格度拉满,拉到0.9以上会出现大量误判,明明是对的总结也被判定为编造,拒答率会飙升,适合自己场景的才是最好的。


引用问题最容易踩的5个坑

我们调过几十个项目的引用问题,总结了最常见的5个坑,每个坑都能让引用准确率掉10%以上,大家一定要避开:

  1. 坑1:以为召回对了就没问题:很多人看召回的top1内容和问题相关就觉得没问题,实际上大模型可能根本没看到关键信息,或者被其他召回内容带偏,必须加约束和校验。

  2. 坑2:规则写的太模糊:不要写“请尽量参考资料回答”,“尽量”这种词大模型根本不care,必须写“必须100%来自参考资料”“禁止编造”这种硬约束,越明确越好。

  3. 坑3:分隔符没用对:很多人把参考资料和问题直接拼在一起,大模型分不清哪部分是参考资料,哪部分是问题,必须用特殊分隔符(比如```、---)把参考资料包起来,明确标注。

  4. 坑4:参考资料有冲突不处理:如果召回的多个参考资料内容有冲突,大模型会随便选一个甚至自己编,遇到冲突内容要明确告诉大模型“参考资料有冲突时,以发布时间最新的为准”或者“标注内容冲突”。

  5. 坑5:校验只做一次:不要觉得加了校验就万事大吉,校验模型也会出错,最多重生成2次,还是不通过就拒答,不要为了有回答就放过幻觉内容。 顺便说一句,很多人喜欢在Prompt里写十几条规则,实际上引用相关的规则3-4条就够了,写太多大模型记不住,反而会忽略最重要的硬约束。


关于事实校验技术的观察与边界

关于事实校验技术的未来,我们也还在持续观察,目前没有绝对的定论。 长上下文模型是不是就不需要做引用校验了?我们测下来即使是1M上下文的最新模型,还是会出现编造内容、不引用参考资料的问题,甚至因为上下文更长,无关内容更多,自由发挥的空间更大,至少在2026年,事实校验还是生产级RAG/GEO系统必不可少的环节,不能完全依赖模型的自觉性。 小模型做校验够不够用?我们测下来7B规模的经过指令微调的模型,做事实校验的准确率已经能到95%以上,完全够用,不需要用大模型做校验,成本可以压到很低。我们判断未来1-2年,事实校验会成为所有RAG/GEO系统的标准组件,会有专门的小模型做这件事,不需要开发者自己写Prompt。 按照这个清单排查完解决问题的同学,欢迎在评论区扣1;没解决的可以把你的Prompt和问题现象贴在评论区,我帮你定位问题。之前的Prompt工程、多轮对话、性能调优的文章里有其他环节的实现细节,需要的可以去看对应内容。


参考资料

  1. 《大模型事实一致性校验技术白皮书》,中国人工智能产业发展联盟,2026

  2. Hallucination in Large Language Models: A Survey,arXiv预印本,2025

  3. 《检索增强生成系统设计与实现》,机械工业出版社,2025

  4. 《RAG系统引用准确性优化指南》,LangChain官方文档,2026


标签:#RAG #大模型 #GEO #生成式引擎优化 #事实校验

Logo

一站式 AI 云服务平台

更多推荐