大模型的“幻觉”指的是什么?它为什么会产生?在实际应用中你会用哪些手段来缓解幻觉?
RAG基础
答案要点 幻觉 = 模型一本正经地输出看似合理、实际却与事实不符或凭空捏造的内容 根源在于大模型的本质是“预测下一个词”:它优化的是“像不像人话”,不是“是不是事实” 训练数据有错漏、知识有截止日期、模型不知道自己不知道,三者共同加剧幻觉 缓解三板斧:RAG 提供事实依据、提示词约束引用来源、允许模型说“不知道” 幻觉只能缓解、无法根除,高风险场景必须保留人工审核兜底 核心概念 大模型幻觉(Hallucination)是指模型生成了看似流畅合理、实际却与事实不符或凭空捏造的内容,比如编造不存在的论文、虚构法律条文。它最危险的地方在于“说得特别像真的”,普通用户很难分辨。 幻觉为什么会发生 本质是文字接龙:大模型的训练目标是根据上文预测下一个最可能的词,整个过程没有“事实校验”环节。只要读起来通顺自然,任务就算完成,真假并不在它的目标函数里。 训练数据有错也有限:互联网语料本身就混着错误信息,而且数据有截止日期,之后的新知识一概不知,被问到只能“硬编”。 不知道自己不知道:模型没有可靠的“知识边界”意识,面对超纲问题,默认行为是继续流畅地生成,而不是承认不会。 常用缓解手段 | 手段 | 思路 | |---|---| | RAG 检索增强 | 回答前先检索外部资料,让答案有原文支撑,从源头补充事实 | | 引用约束 | 提示词要求“只根据给定资料回答,并标注出处”,超出资料就不许发挥 | | 不确定性声明 | 明确允许并鼓励模型回答“资料中没有提到”,给它说“不知道”的出口 | | 降低随机性 | 事实型任务调低 temperature(控制输出随机程度的参数),减少自由发挥 | | 人工兜底 | 医疗、法律、金融等高风险场景保留人工审核,不让模型单独拍板 | 需要强调:这些手段都是缓解而非根除,幻觉根植于生成机制本身,工程上追求的是把幻觉率压到业务可接受的范围,并让错误可追溯。 入门之后,可以往幻觉评测(如何量化幻觉率)和 RAG 链路优化两个方向继续深入。
口语版讲法(约2分钟)
- 一句话定义:说得像真的,但其实是编的
- 根源:模型是文字接龙,目标是通顺不是真实
- 三个加剧因素:数据有错、知识过期、不知道自己不知道
- 缓解三板斧:RAG、引用约束、允许说不知道
- 埋钉子:只能缓解不能根除,高风险场景要人工兜底
幻觉,一句话定义就是:大模型一本正经地输出看似合理、实际上却是错误的甚至凭空捏造的内容。比如让它推荐论文,它能编出一个格式完美但根本不存在的标题和作者,说得特别像真的,这正是幻觉最危险的地方。 为什么会这样?根子在大模型的工作原理上。它本质上是在做文字接龙,训练目标是根据上文预测下一个最可能出现的词,整个过程里压根没有“事实核查”这个环节。也就是说,它优化的是“像不像人话”,而不是“是不是事实”。在这个基础上还有三个加剧因素:第一,训练数据来自互联网,本身就混着大量错误信息;第二,数据有截止日期,之后发生的事它完全不知道,被问到就只能硬编;第三,也是我觉得最关键的,模型不知道自己不知道,面对超纲问题,它的默认行为是继续流畅地往下说,而不是停下来承认不会。 实际应用里怎么缓解?我常用的是三板斧。第一板斧是RAG,回答前先从知识库检索资料,让答案有原文支撑,从源头上补充事实,这是目前最有效的手段。第二板斧是引用约束,在提示词里明确要求“只根据给定资料回答,并标注出处”,把模型的发挥空间锁死在资料范围内。第三板斧是不确定性声明,主动给模型一个台阶,告诉它资料里没有的就回答“没有提到”,别硬编。另外,事实型任务我会把 temperature 调低一点,减少随机发挥。 [钉子] 但我想强调一点:所有这些手段都只能缓解,不能根除,因为幻觉根植于生成机制本身。所以在医疗、法律这类高风险场景,我一定会保留人工审核兜底。至于幻觉率具体怎么量化评测,这也是个很有意思的话题,可以展开聊。
关键一句:幻觉的根源是模型只优化“像不像”不优化“真不真”,所以只能缓解、无法根除。
面试官可能的追问
- 【概念辨析】幻觉和“模型知识过时答错了”是一回事吗?如果模型是因为训练数据里本来就有错误信息而答错,这算不算幻觉?
- 【追问边界】你说 RAG 能缓解幻觉,那接了 RAG 之后模型就不会瞎编了吗?有没有见过接了 RAG 反而答错的情况,问题出在哪?