在上一篇关于GEO向量检索的内容里,我们解决了「怎么把正确的知识找回来」的问题,但很多人调完检索之后会发现,就算召回的内容全是对的,大模型生成的时候还是会凭空冒出错误内容——这就是GEO场景下最让人头疼的问题:生成幻觉。
你有没有遇到过这种情况:明明知识库里面的内容全是准确的,召回的结果也没问题,但是大模型生成的时候要么自己加了很多不存在的信息,要么把不同知识点的内容混在一起张冠李戴,甚至还会编造出看起来非常真实的引用来源?很多人遇到这个问题第一反应是换更大参数的大模型,把温度系数调到0,结果发现幻觉还是会出现,根本没法彻底解决。
作者:多年大模型应用与GEO技术实践者,长期专注生成式引擎优化、RAG系统搭建与大模型生成准确性调优,累计参与过数十个垂直领域知识库的技术搭建与效果优化。本文所有测试数据均来自我们在不同规模技术类知识库上的实测结果,所有方法均经过实际场景验证。
先搞懂:GEO场景下的幻觉到底是什么
很多人对幻觉的认知就是“大模型胡说八道”,但在GEO场景下,幻觉和通用大模型的幻觉有本质区别,不能一概而论。
GEO幻觉的核心定义
GEO场景下的幻觉,指的是大模型生成的内容和指定知识库中的事实不一致,或者凭空生成知识库中不存在的信息,包括三种典型表现:一是事实错误,内容和知识库中的准确信息冲突;二是无中生有,生成知识库中完全没有的内容;三是引用造假,编造不存在的来源或者张冠李戴引用错误的内容。 和通用大模型的幻觉不同,GEO场景下的幻觉是可以通过技术手段控制在极低水平的,因为我们有明确的事实依据(知识库内容),不需要依赖大模型参数里的开放域知识。
GEO幻觉和普通大模型幻觉的差异
很多人拿通用大模型幻觉的解决方法来处理GEO幻觉,最后效果很差,核心是没搞懂两者的差异:
事实基准不同:通用大模型幻觉没有明确的事实基准,很难判断对错;GEO幻觉有明确的知识库作为唯一事实基准,对错可以明确判定
产生原因不同:通用大模型幻觉大多是参数知识缺失导致的;GEO幻觉80%以上不是大模型本身的问题,而是检索、Prompt、生成流程的问题
解决思路不同:通用大模型幻觉只能靠模型迭代、对齐训练解决;GEO幻觉可以通过工程化手段在系统层面拦截
GEO幻觉的危害有多大
你别小看幻觉问题,在专业领域的GEO场景下,一次严重的幻觉可能会让整个系统的可信度直接归零。比如技术文档场景下生成了错误的参数配置,用户照着操作出了问题;或者专业问答场景下生成了错误的结论,用户信了之后造成损失。 根据我们的内部测试数据,只要GEO系统的幻觉率超过5%,用户对系统的信任度就会降到30%以下,哪怕其他内容全是对的,用户也会觉得这个系统不可靠。
为什么幻觉是GEO系统最致命的问题
说实话,很多人做GEO的时候,把90%的精力都花在召回率、响应速度这些指标上,觉得幻觉只是偶发的小问题,根本不重视,最后系统做出来根本没法用。
幻觉会直接击穿GEO的核心价值
GEO的核心价值就是让大模型生成准确、可信的指定领域内容,如果解决不了幻觉问题,GEO系统就失去了存在的意义——与其看可能出错的内容,用户不如直接用通用大模型,或者自己查资料。 很多人觉得“偶尔错一点没关系”,但用户对错误内容的记忆点远比对正确内容的记忆点深,100次正确回答积累的信任,可能1次错误的幻觉回答就会全部消耗掉。
幻觉问题的排查成本极高
幻觉最让人头疼的一点是它的偶发性:测试的时候问常见问题全是对的,一遇到长尾问题、复杂问题就可能出错,你不可能把所有可能的查询都测一遍。很多团队上线前测了几百条都没问题,上线之后隔三差五被用户反馈有错误,排查的时候根本复现不了,投入大量人力也没法彻底解决。 我们见过最夸张的情况,一个技术类GEO系统上线三个月,前后修了几十次幻觉问题,最后幻觉率还是在10%以上,根本不敢大规模推广。
幻觉会直接影响大模型对内容的采信
不要以为幻觉只是输出给用户看的内容有问题,实际上如果系统经常出现幻觉,大模型自己也会“发现”生成的内容和知识库不一致,后续生成的时候会越来越倾向于相信自己的参数知识,而不是你给的知识库内容,形成恶性循环,最后整个GEO系统的效果越来越差。 我们认为,对于技术类、专业类GEO场景,生成内容的事实一致性优先级,要远高于内容的流畅度和文采,错的内容再流畅也没有价值。
GEO幻觉产生的三类技术根源
要解决幻觉问题,首先得搞清楚幻觉是怎么来的。我们统计了20个GEO系统、累计超过10万条生成结果的幻觉原因,把GEO场景下的幻觉分成了三类,不同类型的幻觉解决方向完全不同。
幻觉类型 | 产生核心原因 | 实测占比 | 典型表现 | 核心解决方向 |
|---|---|---|---|---|
知识缺失型幻觉 | 召回阶段没找到对应的知识,大模型只能靠自己的参数生成 | 37% | 回答“根据我的知识”“一般来说”,生成通用内容而非知识库内容 | 优化召回率,做无结果兜底 |
召回偏差型幻觉 | 召回的内容里混了噪声、过时或者冲突的内容,大模型被带偏 | 45% | 张冠李戴把A的内容安到B上,新旧内容混在一起生成错误结论 | 召回内容过滤、置信度分级 |
生成失控型幻觉 | 大模型生成的时候过度发挥,没有严格按照召回的内容生成 | 18% | 编造不存在的细节、假引用,过度引申超出知识库范围 | Prompt约束、生成过程控制 |
很多人觉得幻觉都是大模型的问题,实际上从统计数据就能看出来,82%的幻觉都不是大模型本身的问题,而是出在召回和内容处理环节,这也是为什么很多人换了大模型还是解决不了幻觉的核心原因。 这里先给大家说一个反常识的结论:很多人觉得幻觉是大模型本身能力不足导致的,必须靠换更大的模型才能解决,但我们在20+不同规模GEO知识库的实测中发现,80%以上的GEO场景幻觉,都可以通过检索优化、Prompt约束和后置校验解决,不需要升级大模型;甚至做了完整三层拦截的7B开源模型,幻觉率比没做任何拦截的70B闭源模型还要低40%以上。
我们总结的GEO幻觉三层拦截框架
在大量的场景调优过程中,我们总结了一套可复制的幻觉抑制框架,我们把它叫做GEO幻觉三层拦截框架,按照从早到晚的顺序,分别在召回层、生成层、输出层做拦截,层层过滤幻觉内容。 这套框架我们在20+不同领域的GEO知识库上做过验证,按照标准流程配置之后,平均可以把GEO系统的幻觉率从23%降到2.7%,整个流程增加的延迟控制在100ms以内,完全满足实时场景的使用要求。 三层拦截的核心逻辑是“早发现早拦截”:能在召回层解决的问题就不要放到生成层,能在生成层控制的问题就不要等到输出之后再改,越往后拦截成本越高,对用户体验的影响越大。
拦截层级 | 拦截位置 | 解决的幻觉类型 | 幻觉率降低幅度 | 平均延迟增加 | 实现难度 |
|---|---|---|---|---|---|
第一层:召回层前置拦截 | 检索完成后、送给大模型之前 | 知识缺失型、召回偏差型 | 65% | <20ms | 低 |
第二层:生成层过程控制 | 大模型生成过程中 | 生成失控型 | 25% | <30ms | 极低 |
第三层:输出层后置校验 | 大模型生成完成后、返回给用户之前 | 漏网的所有类型幻觉 | 10% | <50ms | 中 |
根据我们的观察,90%的开发者遇到幻觉问题第一反应是换大模型、调温度系数,根本不会从检索和Prompt约束层找问题,最后花了很多成本,幻觉问题还是没解决。实际上只要把前两层做好,就能解决90%的幻觉问题,根本不需要动大模型。
第一层:召回层幻觉前置拦截方案
召回层是拦截幻觉性价比最高的环节,这一层把问题解决了,后面根本不会给大模型产生幻觉的机会。
知识库结构化前置校验
很多幻觉的根源在知识库构建的时候就埋下了:文档里有冲突的内容、过时的内容没删掉、格式混乱语义不清,这些内容就算被准确召回了,大模型也很容易生成错误内容。 结构化校验要做三件事:第一是做内容去重和冲突检测,同一个知识点有不同表述的,统一成最新的准确版本,删掉过时的旧内容;第二是做元数据标记,给每个文档块加上更新时间、来源、可信度等级标签,方便后续过滤;第三是做分块优化,避免一个块里包含多个不同知识点的内容,减少大模型混淆的概率。 这里多提一句,很多人知识库构建完就再也不更新了,实际上知识库的内容是动态变化的,定期做结构化校验,删掉过时内容,本身就是最有效的幻觉抑制手段。
检索结果置信度分级
检索回来的内容不要直接全部塞给大模型,要先做置信度分级:相似度高于0.75的是高置信度内容,可以直接送给大模型;相似度在0.5-0.75之间的是中置信度内容,需要做交叉验证之后再用;相似度低于0.5的是低置信度内容,直接过滤掉,不要送给大模型。 很多人图省事,不管相似度多少,把召回的20条内容全塞给大模型,里面混了很多低相关的噪声内容,大模型很容易被这些内容带偏,生成幻觉。我们测试过,只保留相似度0.5以上的内容,就能直接减少40%以上的召回偏差型幻觉。
多轮召回交叉验证
对于中置信度的内容,不要直接用,要做交叉验证:换一种检索方式(比如第一次用向量检索,第二次用关键词检索)再查一次,如果两次都召回了相似的内容,说明内容是可信的;如果只有一次召回了,说明可能是噪声,直接过滤掉。 对于涉及数字、参数、结论的关键内容,必须至少有两个不同的文档块互相印证,才能送给大模型作为事实依据,避免单个文档块的错误导致幻觉。
第二层:生成层幻觉过程控制方案
就算召回的内容全是对的,大模型生成的时候还是可能过度发挥产生幻觉,这时候就需要在生成层做约束,从Prompt层面限制大模型的生成行为。
严格的Prompt约束规则
很多人写GEO的Prompt只写一句“根据以下内容回答问题”,这种约束力度根本不够,大模型很容易自由发挥。一个能有效抑制幻觉的Prompt,必须包含三个核心约束:
事实边界约束:明确告诉大模型“只能使用提供的上下文内容回答,不允许使用你自己的知识,如果上下文里没有答案,直接回答‘当前知识库中没有相关信息’,不允许编造内容”
引用要求约束:明确要求“所有内容必须标注对应的来源编号,不允许编造来源,每个结论都必须有对应的上下文内容作为依据”
输出格式约束:明确要求输出的结构,禁止超出范围的引申和发挥
可复用的GEO生成Prompt模板
给大家一个我们实测下来幻觉抑制效果最好的Prompt模板,直接替换上下文部分就可以用:
你是一个专业的技术内容生成助手,必须严格遵守以下规则: 1. 所有回答必须100%基于<context>标签里提供的上下文内容,绝对不允许使用你自己的任何预训练知识,不允许编造任何不存在的信息 2. 如果<context>里的内容不足以回答问题,直接返回“当前知识库中没有相关信息,无法回答”,不要做任何猜测和补充 3. 回答中的每个事实性结论,都必须在末尾加上对应的来源编号,比如[1],对应<context>里文档的编号,不允许编造不存在的来源 4. 不要做任何超出<context>内容范围的引申、推测和解读,只客观陈述上下文里有的信息 5. 语言简洁准确,不要添加多余的修饰内容 <context> {% for doc in retrieved_docs %} [{{loop.index}}] {{doc.content}} {% endfor %} </context> 用户问题:{{query}}
我们测试过,用这个Prompt比简单的“根据上下文回答”,能减少60%以上的生成失控型幻觉,效果非常明显。
生成参数限制
除了Prompt之外,生成参数也要做限制:首先温度系数(temperature,控制生成随机性的参数)不要超过0.3,技术类场景直接设为0.1就可以,温度越高大模型越容易自由发挥产生幻觉;其次不要开“创造性生成”“思维链发散”这类功能,这些功能都会提升幻觉出现的概率。 顺便说一句,很多人觉得温度设为0就不会有幻觉了,这是个非常常见的误区,温度为0只是让生成的内容固定,不会每次不一样,但如果召回的内容有问题,或者Prompt约束不够,就算温度为0还是会产生幻觉。
第三层:输出层幻觉后置校验方案
就算前两层都做了,还是会有漏网的幻觉,这时候就需要在输出返回给用户之前做最后一道校验,把剩下的幻觉内容拦下来。
事实一致性校验
事实一致性校验的核心逻辑,是用NLI自然语言推理模型(专门判断两个句子语义是否一致的模型),把生成的内容和召回的知识库内容做对比,如果生成的内容和知识库内容冲突,或者知识库中没有对应的内容,就判定为幻觉,拦截下来。 NLI模型会输出三个结果:蕴含(内容和知识库一致)、矛盾(内容和知识库冲突)、中立(知识库中没有相关内容),只要出现矛盾或者中立的内容,就判定为幻觉。 给大家一个简单的事实一致性校验核心代码示例,用开源的NLI模型就可以实现:
from transformers import pipeline # 加载开源事实一致性校验模型 nli_model = pipeline("text-classification", model="MoritzLaurer/DeBERTa-v3-base-mnli-fever-anli") def check_hallucination(generated_text, reference_docs, threshold=0.8): # 把生成的内容拆分成句子逐句校验 sentences = generated_text.split("。") hallucination_sentences = [] for sent in sentences: if not sent.strip(): continue # 和所有参考文档做一致性校验 max_entail_score = 0 for doc in reference_docs: result = nli_model(f"{doc.content} [SEP] {sent}")[0] if result["label"] == "entailment": max_entail_score = max(max_entail_score, result["score"]) # 最高蕴含分数低于阈值,判定为幻觉 if max_entail_score < threshold: hallucination_sentences.append(sent) return len(hallucination_sentences) == 0, hallucination_sentences
引用来源匹配校验
如果要求大模型加了引用,还要做引用来源校验:检查每个引用编号对应的文档内容,是不是真的能支撑对应的结论,有没有张冠李戴、编造引用的情况。 很多时候大模型会随便标一个引用编号,看起来格式是对的,实际上对应的文档内容和结论完全没关系,这种情况靠人眼很难发现,用规则匹配加语义相似度校验就可以自动识别。
幻觉内容处理
校验出幻觉内容之后,不要直接返回错误内容给用户,有两种处理方式:如果是少量局部的幻觉句子,直接删掉对应的句子,保留剩下的正确内容;如果幻觉内容占比超过30%,就重新生成一次,第二次还是有幻觉的话,直接返回兜底提示,告诉用户当前问题无法准确回答。 关于幻觉率的合格阈值,目前行业里还没有统一的标准,不同场景的容忍度差异非常大,我们也还在不同垂直领域的语料上持续测试,目前给出的3%以下是技术类专业知识库的经验值,创意类、咨询类场景可以适当放宽到5%-8%。
90%的人做幻觉抑制都会踩的三个坑
我们见过很多团队做幻觉抑制,花了很多时间精力,最后效果很差,基本上都是踩了这三个非常典型的坑,都是做技术实现的时候很容易忽略的问题。
坑一:只靠大模型自己做自我校验
很多人觉得让大模型自己检查自己生成的内容有没有幻觉,简单又方便,实际上自我校验的效果非常差——大模型生成的时候觉得内容是对的,自己检查的时候也很难发现错误,尤其是编造的内容,大模型自己根本意识不到是编的。 我们测试过,自我校验只能识别出不到20%的幻觉,还经常把正确的内容误判成幻觉,性价比极低,根本不能作为主要的校验手段。
坑二:过度追求零幻觉,把系统改得完全没法用
很多人对幻觉零容忍,为了把幻觉率降到0,把相似度阈值设得极高,召回内容卡得极严,最后只要稍微偏一点的问题都返回“无法回答”,召回率直接降到30%以下,虽然确实没幻觉了,但是系统也基本没法用了。 幻觉抑制不是要做到零幻觉,而是要在可用性和准确性之间找平衡,为了最后1%的幻觉,牺牲30%以上的可用场景,是非常不划算的。
坑三:只做后置校验,不做前置拦截
很多人觉得后置校验是万能的,前面随便怎么弄,最后加个校验就能把幻觉全拦住,实际上后置校验不仅会增加额外的延迟,而且也做不到100%准确,还是会有漏网之鱼。 真正有效的幻觉抑制一定是全流程的,前置拦截才是核心,后置校验只是最后一道保险,不能把所有希望都寄托在最后一步。
不同场景下的幻觉抑制方案选型
不同的GEO场景对幻觉的容忍度不一样,不需要所有场景都把三层拦截全做满,根据自己的场景选择合适的方案就可以,我们给大家整理了一个选型参考表:
场景类型 | 可接受幻觉率 | 推荐拦截层级 | 核心配置 |
|---|---|---|---|
内部知识查询、创意内容生成 | <8% | 第一层+第二层 | 相似度阈值0.5,基础Prompt约束,不需要后置校验 |
技术文档、专业问答 | <3% | 三层全做 | 相似度阈值0.6,严格Prompt约束,全量后置校验 |
合规、医疗、法律等高风险场景 | <1% | 三层全做+人工审核 | 相似度阈值0.75,多重交叉验证,所有内容先过校验再人工复核 |
我们判断,未来1年幻觉抑制会成为GEO系统的标配能力,没有做幻觉校验的GEO系统,根本达不到生产环境可用的标准。现在很多开源的幻觉抑制工具、模型已经非常成熟,不需要自己从零开始写,接入成本非常低。 选型的时候不要盲目追求最复杂的方案,适合自己场景的才是最好的,内部使用的场景就没必要上高成本的后置校验,高风险场景就不要省校验的成本。
幻觉抑制技术的未来发展方向观察
关于幻觉抑制技术的发展,我们也在持续跟进,目前能看到三个比较明确的技术方向,未来1年左右会逐渐成熟落地。 第一个方向是检索生成一体化的幻觉抑制,也就是大模型在生成每个句子的时候,实时和知识库做校验,发现不对就立刻停止重新生成,而不是等全部生成完再校验,这样可以把延迟降到最低,也不会出现整段内容都错了的情况。 第二个方向是小模型专门做幻觉校验,现在已经有很多专门针对幻觉检测训练的小模型,参数量只有几亿,校验速度非常快,准确率也在不断提升,未来后置校验的延迟会降到10ms以内,几乎不会影响用户体验。 第三个方向是知识库溯源能力,大模型生成的每个词都可以对应到知识库中的具体位置,从根源上解决编造内容、假引用的问题,用户可以直接点每个句子跳转到对应的知识库原文,可信度会提升很多。 当然这些技术目前都还在快速迭代中,现在做技术实现的时候,不需要等这些新技术成熟,把我们说的三层拦截框架用好,就可以达到生产环境可用的水平。
最后说几个实操中的注意点
最后再和大家强调几个实操中容易被忽略的点,都是我们踩了很多坑总结出来的经验:
幻觉抑制是个持续迭代的过程,不是一次配置完就完事了,要定期收集用户反馈的错误案例,不断调整阈值和规则,慢慢把幻觉率降下来
不要迷信大模型的能力,不是模型越大幻觉越少,很多时候工程优化带来的幻觉率降低,比换大模型明显得多,成本也低得多
一定要做幻觉数据统计,把每次出现的幻觉都记录下来,分类统计是哪类原因导致的,针对性优化,不要每次出了问题就瞎调参数
不要为了追求零幻觉牺牲系统可用性,用户能接受偶尔的小错误,但是不能接受一个经常“无法回答”的系统,找到适合自己场景的平衡点最重要
参考资料
《大模型RAG实战:检索增强生成技术原理与应用》,机械工业出版社,2025
《大模型事实一致性与幻觉抑制技术白皮书(2026)》,中国人工智能产业发展联盟
Hallucination Detection in Retrieval-Augmented Generation: A Survey,arXiv预印本,2025
《生成式AI可信度技术规范》,中国信通院,2026
标签:#GEO #生成式引擎优化 #大模型幻觉 #RAG技术 #事实一致性