大模型为什么会产生幻觉?常见类型、成因与治理方法
大模型可以写文章、改代码、做总结也能用十分肯定的语气回答问题。但“表达流畅”和“事实正确”是两回事一个答案可能结构完整、逻辑顺滑甚至附带看似专业的书名和论文却没有任何可靠依据。这种现象通常被称为“大模型幻觉”。它不是偶发的小故障而是生成式模型工作方式带来的固有风险。理解幻觉的类型、成因和治理手段是把大模型真正用进业务之前必须补上的一课。一、什么是大模型幻觉大模型幻觉是指模型生成了看起来合理实际上却错误、虚构或者与已知事实和上下文不一致的内容。通俗地说就是“一本正经地胡说八道”。例如用户让模型推荐三本研究“古代南极文明”的学术著作。模型可能迅速给出书名、作者、出版社和出版年份格式甚至像一份标准参考文献1. 《南极失落王国考古研究》——某某某大学出版社2018 2. 《冰盖之下的古代城市》——某某某学术出版社2020 3. 《南极文明与远古航海》——某某某出版社2016问题在于这些信息可能全部是模型临时“拼”出来的。它知道参考文献通常长什么样却不代表它真的查到了这些书。幻觉也不一定在所有场景中都是坏事。写小说、设计广告语、头脑风暴时适度的发散能力反而有价值。但在医疗、法律、金融、科研和代码生成等场景中错误信息可能直接导致错误决策因此必须严格控制。二、常见的两类幻觉从表现形式看大模型幻觉可以概括为两大类事实性幻觉和忠实性幻觉。前者回答错了“世界是什么样”后者没有忠实执行“用户要求它怎样回答”。1. 事实性幻觉事实性幻觉是最容易识别的一类。模型给出了能够被外部事实验证、但验证结果为假的内容常见表现包括虚构事实和事实错误。1.1 虚构事实模型可能编造并不存在的人物、事件、书籍、论文、机构或统计数据。虚构参考文献尤其具有迷惑性因为作者、标题、期刊、卷期和页码都可以被组织得非常像真的。判断这类内容时不要因为格式完整就降低警惕。凡是能够在外部世界查证的要素都应该被视为“待验证声明”待验证项 人名 机构 日期 数字 论文 书籍 网址 引用如果一条回答中同时出现多个待验证项风险会叠加。哪怕总体结论没错一个虚假的来源也足以让整段论证失去可信度。1.2 事实错误有些内容并非完全虚构而是把真实概念错误地组合在了一起。例如错误说法爱因斯坦获得过诺贝尔数学奖。 事实核验诺贝尔奖并没有数学奖爱因斯坦获得的是诺贝尔物理学奖。这种错误往往比明显的胡编更难发现。句子里的“爱因斯坦”和“诺贝尔奖”都是真实概念模型只是建立了错误的关系。如果读者只熟悉其中一半信息就很容易相信整个句子。2. 忠实性幻觉忠实性幻觉不一定违背外部事实却可能偏离用户指令或前文上下文。它主要包括指令不一致和上下文不一致。2.1 指令不一致用户让模型“只总结给定材料”模型却加入了自己的推测用户要求“用三句话回答”模型却展开成一篇长文用户限定“不要使用外部知识”模型仍然补充材料之外的信息。这些都属于没有忠实执行指令。可以用一段更明确的约束减少这种偏离请只依据【参考资料】回答。 不要补充资料之外的事实也不要根据常识猜测。 如果资料不足以支持结论请直接回答“资料不足”。 回答后列出每个结论对应的原文依据。这段提示词不能保证模型永远正确但它把“允许做什么”和“信息不足时怎么办”说清楚了比一句简单的“请准确回答”更有效。2.2 上下文不一致上下文不一致通常出现在较长的对话或文章中。模型可能在前文说某产品的市场份额为 10%后文又在没有解释的情况下改成 50%也可能在分析开始时采用一组前提到了结论部分却悄悄换成另一组前提。对长答案做检查时可以把重要声明提取成结构化记录[{主题:市场份额,位置:第2段,数值:10%},{主题:市场份额,位置:第8段,数值:50%}]一旦同一主题出现互相冲突的值就要回到原始资料确认而不是让模型自行选择一个“更像正确答案”的数字。三、大模型为什么会产生幻觉大模型产生幻觉并不是因为它故意欺骗用户而是因为它的训练目标、数据来源和上下文能力都与“事实核验系统”不同。1. 生成过程本质上是概率预测大模型生成文本时会根据已有上下文预测下一个最可能出现的词元。可以把这个过程简化为下一个词元 argmax P(候选词元 | 当前上下文)模型优化的核心目标是让后续文本在语言统计上合理而不是在生成每句话之前都去现实世界中核对事实。因此“听起来像正确答案”和“经过证据验证的正确答案”并不是同一件事。这也解释了为什么模型能够生成格式完美的虚假引用论文标题、作者姓名、年份和期刊名称之间存在稳定的语言模式模型可以复现这种模式却未必知道对应论文是否真实存在。2. 训练数据并不完美模型从大量文本中学习语言和知识但训练数据天然存在局限。一方面数据不可能覆盖所有领域、所有事件和所有细节。模型遇到知识空白时仍可能沿着语言概率继续生成于是用“合理猜测”填补未知部分。另一方面互联网文本本身就包含错误、偏见、过时信息和相互矛盾的说法。如果缺少清洗、去重和质量筛选模型可能把这些问题一并学进去。公开网络数据常被用来构建大规模语料。例如Common Crawl长期提供网页抓取数据C4则展示了对 Common Crawl 数据进行清洗后构建语料集的一种思路。二者也说明了一个事实抓到大量网页只是起点数据清洗和质量控制同样重要。一个简化的数据治理流程可以写成网页抓取 - 格式解析 - 去重与去噪 - 低质量内容过滤 - 敏感信息处理 - 事实与来源抽检 - 进入训练或知识库数据质量越高模型学到错误关联的概率通常越低。不过高质量数据只能降低幻觉不能从根本上保证每次生成都正确。3. 上下文能力存在边界模型一次能够处理的信息量有限。不同模型的上下文窗口大小不同但无论窗口多长都不等于模型能无损记住并正确使用其中的每一个细节。当对话过长、资料过多或关键条件埋在中间时模型可能忽略早期要求、混淆多个对象或者抓住局部信息后给出片面的结论。下面这种提示方式就容易出问题第1轮给出项目背景和三个限制条件 第8轮补充两个例外情况 第20轮要求模型输出最终方案更稳妥的做法是在生成最终结果前重新汇总约束把分散的信息压缩成一份明确的任务说明让模型基于最新、完整的条件作答。四、降低幻觉的五种方法目前没有任何一种方法能够彻底消除幻觉。实际系统通常会组合数据治理、检索增强、提示词约束、自我检查和工具调用形成多层防线。1. 使用高质量数据减少幻觉的第一步是提高模型训练数据或领域知识数据的质量。数据应尽量做到来源清楚、内容准确、结构稳定并及时清理重复、过时和互相矛盾的信息。如果是企业内部知识库还要为文档保留版本、发布时间和有效期document_id:policy-2026-09title:报销管理办法version:3.2published_at:2026-09-01effective_from:2026-10-01status:approved这些字段不仅方便管理文档也能帮助检索系统优先选择当前有效的内容避免模型把旧制度和新制度混在一起。2. 使用 RAG 引入外部知识RAG即检索增强生成。它的核心思路不是让模型只依赖参数中记住的知识而是在回答前先从向量数据库、搜索引擎或企业文档中检索相关内容再把证据和问题一起交给模型。用户问题 - 检索相关资料 - 筛选高相关证据 - 将问题与证据交给模型 - 生成答案并标注来源例如员工询问“差旅住宿标准是多少”系统可以先检索当前生效的差旅制度再要求模型只根据检索结果回答。这样不仅能减少凭空生成还能让使用者追溯答案来源。不过接入 RAG 并不代表幻觉自动消失。检索可能召回错误文档切片可能丢失上下文模型也可能误读证据。因此RAG 系统还要检查检索命中率、文档版本和引用是否真的支持结论。3. 优化提示词明确回答边界当模型不确定时如果系统仍然要求它“必须给出一个答案”它就更容易猜测。提示词应当允许模型承认信息不足并明确禁止编造。一句简单但有效的约束是如果你不能从可靠信息中确认答案请直接说明“不确定”或“资料不足”不要编造数字、来源和引用。如果已经提供参考资料可以进一步收紧范围任务回答用户问题。 规则 1. 只使用【参考资料】中的信息。 2. 每个核心结论都要给出对应依据。 3. 参考资料没有覆盖的问题回答“现有资料无法确认”。 4. 不得虚构人名、日期、数字、论文或网址。 【参考资料】 ... 【用户问题】 ...提示词优化的价值在于调整模型的回答策略不知道时停下来而不是继续补全一个看似完整的答案。但它仍然属于软约束不能替代外部核验。4. 让模型进行自我检查模型第一次生成答案后可以增加一个检查环节让同一个模型或另一个模型实例扮演审查者找出没有证据、计算错误或前后矛盾的内容。例如求解方程2x 1 100 x (100 - 1) / 2 x 49.5得到答案后不直接结束而是反向代入2 × 49.5 1 99 1 100反向验证成立答案才被接受。对于事实型回答也可以采用类似的审查提示词请审查上一个答案 1. 提取其中所有可核验的事实声明 2. 标记每条声明是否有证据支持 3. 找出前后矛盾、过度推断和虚构引用 4. 删除无法确认的内容再给出修订版答案。自我检查有助于发现一部分明显错误但不能把模型自己的判断当成最终证据。同一个知识盲区可能让“回答者”和“审查者”犯下相同错误所以高风险结论仍需外部来源验证。5. 调用合适的外部工具不同问题适合交给不同工具处理。让语言模型直接心算复杂数值、凭记忆回答最新数据往往不是最佳选择。精确计算 - 计算器 代码执行 - 代码解释器与测试工具 最新事件 - 搜索引擎 企业制度 - 内部知识库 数据库统计 - SQL 查询例如询问某机构当前有多少员工时离线模型可能只能根据旧信息给出大概估计。接入搜索后系统可以查询机构官网或权威统计页面并给出来源和数据日期。但“联网搜索”也不等于“答案必然正确”。网页可能已经过期搜索摘要可能截断原意模型还可能引用一个实际上没有支持结论的页面。工具调用之后仍要核对来源主体、发布时间、统计口径和原文内容。五、把五种方法组合成一条可靠链路在真实应用中单独使用某一种方法通常不够。更稳妥的做法是先判断问题风险再决定需要多少层验证。场景主要风险建议策略文案创意、故事构思事实要求较低允许发散必要时做基础检查一般知识问答事实可能过时检索资料标注来源与日期企业知识问答文档版本混淆RAG、权限控制、版本过滤、引用原文代码生成代码看似合理但无法运行静态检查、运行测试、边界用例验证医疗、法律、金融决策错误后果严重权威来源、工具核验、专业人员复核可以把一条较完整的回答链路设计为识别问题类型与风险 - 判断是否需要最新信息 - 检索可信来源 - 基于证据生成答案 - 提取事实声明 - 用工具或第二轮模型检查 - 输出答案、来源、日期与不确定项如果把它写成接近程序的伪代码大致如下defanswer(question):riskclassify_risk(question)evidenceretrieve_evidence(question)draftgenerate(questionquestion,evidenceevidence,allow_unknownTrue,forbid_fabricationTrue,)claimsextract_verifiable_claims(draft)reportverify(claims,evidence)ifriskhighandreport.has_unsupported_claims:returnrequest_human_review(draft,report)returnrevise_with_citations(draft,report)这里最重要的不是某个函数如何实现而是系统不能把“模型已经回答”当成流程终点。生成只是中间步骤证据、验证和风险控制才决定答案能否被采用。六、使用大模型时的核验清单面对一段看似可信的回答可以按下面的顺序快速检查[ ] 是否出现具体的人名、日期、数字、论文或网址 [ ] 这些信息能否在原始来源中找到 [ ] 引用内容是否真的支持对应结论 [ ] 回答是否超出了给定资料的范围 [ ] 前文与后文是否存在数值或观点冲突 [ ] 信息是否可能已经过时 [ ] 计算、代码或查询结果是否经过工具验证 [ ] 高风险结论是否由专业人员复核这份清单不复杂却能拦住许多典型问题。尤其要警惕“越具体越可信”的错觉一个答案给出了精确到个位的数字并不代表它真的拥有精确到个位的证据。总结大模型幻觉的根源在于它首先是一个概率生成系统而不是自动核验事实的数据库。训练数据不完整、原始资料存在噪声、上下文处理有边界都会让模型生成错误或不一致的内容。治理幻觉也没有一招制胜的办法。高质量数据解决知识来源问题RAG 为回答补充外部证据提示词约束模型的生成边界自我检查负责发现明显问题计算器、搜索引擎和代码执行器等工具则完成更可靠的验证。真正可信的大模型应用不应该只追求“答得快、写得像”而要让每个重要结论都尽可能做到有依据、可核验、能追溯。允许模型说“不知道”往往比让它给出一个漂亮但错误的答案更有价值。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →