在上一篇关于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, modelMoritzLaurer/DeBERTa-v3-base-mnli-fever-anli) def check_hallucination(generated_text, reference_docs, threshold0.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 SurveyarXiv预印本2025《生成式AI可信度技术规范》中国信通院2026标签#GEO #生成式引擎优化 #大模型幻觉 #RAG技术 #事实一致性
GEO生成幻觉全链路抑制:从原理到三层拦截技术实操指南
发布时间:2026/7/1 7:44:06
在上一篇关于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, modelMoritzLaurer/DeBERTa-v3-base-mnli-fever-anli) def check_hallucination(generated_text, reference_docs, threshold0.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 SurveyarXiv预印本2025《生成式AI可信度技术规范》中国信通院2026标签#GEO #生成式引擎优化 #大模型幻觉 #RAG技术 #事实一致性