ai幻觉怎么解决

安全与风控

给开发者一套识别大模型幻觉的方法和分层缓解手段,从提示、检索、校验到兜底设计,能按步骤落地。

模型答得又快又像真的,但一查就错——这种坑在客服、代码、金额、法条场景里特别要命。这篇不讨论概念,而是给开发者一条可执行的路:先判断这条错误属于哪一类幻觉,再按成本从低到高选缓解手段,最后补上兜底和验收。全程只讲判断标准和操作动作,具体数字到站内对应页面核对。

模型答得又快又像真的,一查就错——这种坑在客服、代码、金额、法条场景里特别要命。它不会像人那样说「我不确定」,而是用同样自信的语气把编的东西讲完,你如果不逐条核,根本看不出来。

这篇不聊概念,给一条能落地的路:先判断这条错误算不算幻觉,再复现分级,然后按成本从低到高一层层加缓解手段,最后补兜底和验收。全程只讲判断标准和动作,具体数字到站内对应页面核对当时的版本。

先分清哪些错误算幻觉,别一股脑都怪模型

很多人一看到输出不对就归到「幻觉」,结果改错地方。先按错误的来源拆开看,只有一部分是模型编的,其余是提示写歪了、调用姿势不对、或者知识库本身有问题。判错的直接后果是你花力气去调模型,真正该修的那一环一点没动。

错误类型典型表现该改哪里
事实编造说出不存在的事件、人物、参数模型或检索层
来源伪造给了一个看着像真的引用或链接,实际不存在提示与校验层
指令跑偏没按你要求的格式或范围作答提示与调用参数
过度自信推测信息不足时不给「不知道」,直接猜一个提示与兜底设计

判断的核心不是「答案对不对」,而是「模型有没有可依据的信息来源」。你用一句不带上下文的开放提问,它只能靠概率接话,这种情况出错几乎是必然。反过来,如果知识库里明明有正确内容、检索却没召回,那这类错误该归到检索链路,不该算模型幻觉。

  • 看输入:问题里有没有提供足以回答的材料,没有就是开放生成
  • 看中间:检索召回的片段里到底有没有答案,没有就别怪模型
  • 看输出:是编了一个事实,还是编了一个来源,两种修法不一样
  • 看归因:同一问题换检索结果后答对了,说明病在检索不在模型

复现与分级:先把能重现的幻觉挑出来

偶发一次的错答案不值得动手,稳定复现的才值得改。做法是固定随机性参数、固定上下文、固定原始提问,重跑几次看结果是否一致。只有每次都错或大概率错的,才进修复队列;那种十次错一次的,先记频次和触发条件,别急着大改。

  1. 固定变量重跑把温度类参数、上下文、原始提问都锁死,重复执行,记录哪几次出错。稳定复现的才算可修复对象。
  2. 按损失分级会直接造成金钱、法务、账号安全的归高危;只是表述不准确的归低危。高危那条必须挂校验层,不能只靠改提示。
  3. 留档对比每条记录留存输入、输出、引用来源和当时用的模型名字,方便后续换模型或改提示后跑同一组对比。
  4. 排优先级高危且高频的排最前,高危低频次之,低危的放后面。别按「哪个好改」来排,按损失来排。

分级的标准最好团队内部先对齐,不然每个人对「高危」的理解不一样,修起来会打架。一个简单口径:出错的答案如果被直接展示或执行,用户会不会立刻承担实际损失——会,就是高危。

第一层:提示与调用参数,成本最低先动这里

改提示是投入产出比最高的一步,先做,但别指望它解决一切。它能压掉一部分指令跑偏和硬编,压不住知识本身缺失导致的编造。如果改完提示错误率没明显变化,说明问题在更下层,该往下走。

  • 把「不知道就明确说不知道」写进系统提示,并给一个可执行的退出格式,比如要求返回固定占位标记而不是硬凑答案
  • 要求带出处:结论后面附上引用的原文片段或字段名,没有出处的回答先按可疑处理
  • 对数值、日期、法条、接口名这类硬信息,改成只让它提取或改写,不要让它凭空生成
  • 调用参数本身也会影响输出风格和稳定性,具体参数含义到 /ai-dict/category/tips 对照当时的说明

这里有个常见误区:在提示里写「请确保准确」基本没用,模型没法验真。有效的是给它可操作的动作——去引用、去拒绝、去按固定字段返回。提示要给的是行为约束,不是道德要求。

提示能管住模型怎么说,管不住模型知不知道;缺信息的问题得靠检索和校验补。

第二层:外挂知识库,让答案必须落在材料上

让模型只依据召回内容作答,是压幻觉最直接的手段。做法是把可依据的文档切分、加元数据、建索引,检索后再拼进上下文,回答范围限定在召回内容内。这样模型从「凭记忆答」变成「照材料答」,编造空间小很多。

但前提是检索本身要过关。如果召回结果里根本没有答案,模型面对空材料一定编,这时你该修的是切分粒度、召回数量或检索策略,而不是继续改提示。先验证召回质量,再看生成质量,顺序不能反。

现象优先排查说明
明明有文档却答错切分与召回答案可能被切碎或没被召回
同一问题来回摇摆上下文冲突两份材料说法不一致,模型跟着摇晃
答案笼统没有细节召回粒度太粗进来的片段太泛,不足以支撑具体回答

上下文里别塞互相冲突的材料。同一问题有两份不同说法的文档,模型会在两者之间来回挑,输出会不稳定。要么在入库时合并口径,要么在检索时做去重和优先级排序。向量库选型可以看 /stacks/vector-dbs,先选能满足你对召回和过滤要求的方案,别一上来追新。

第三层:输出校验,把硬信息拉出来单独核

到这一步就不再信任模型的自由文本了,改成结构化输出:让模型返回字段化结果,程序按字段做格式和范围校验,不通过就退回复核或直接拒答。硬信息像编号、金额、枚举值,全部走校验,不靠模型自觉。

  • 字段化:把关键信息从长文本里拆成独立字段,程序能逐字段比对
  • 二次核对:对关键字段接一次独立校验,比如另一次调用或规则库比对,不要只信第一次回答
  • 区分自评和外校:让同一个模型给自己打分容易一起错,自评只能当参考信号
  • 失败路径明确:校验不过时是重问、降级还是转人工,要提前定好,别临时拍脑袋

这里最容易踩的坑是把「模型自评」当成校验。同一个模型既生成又检查,它的错误认知会一起带过去,看起来通过了其实没拦住。真正的校验来自外部:规则库、独立检索、或者另一条不同来源的链路。

第四层:兜底与交互设计,错了也别让用户直接踩坑

前面三层都做了,幻觉也不会归零。所以最后一层是兜底:就算模型说错了,也要保证损失不落地。重点是高风险动作不能直接执行,以及让用户能看出来哪部分是推断、哪部分是可核对的。

  • 高风险动作加人工确认或二次授权,比如转账、下单、发对外文稿,模型输出只作为草稿
  • 界面上标注答案来源和可核对范围,让用户知道哪块是可以点进去查的
  • 准备降级路径:幻觉频发时切到更保守的模式、限定回答范围,或者直接转人工,别硬答
  • 对拒答也要给体验:告诉用户为什么答不了、可以去哪里查,而不是甩一个空白

什么情况下不要过度兜底?纯创意、头脑风暴类场景,本来就没什么「对错」可核,加太多确认反而打断思路。判断标准是看这个输出会不会被当成事实使用,会,就加确认;只是灵感参考,就别挡路。

验收与回归:怎么知道幻觉真的少了

改完不算完,要有办法证明它变好了。建一组固定的测试问题集,覆盖你已知会错的场景,每次动提示、换模型、改检索都跑同一组对比。指标别只看对错率,还要看两个容易被忽略的维度:该拒答时有没有拒答,以及引用是不是真实存在。

  1. 建测试集把已知出错场景和线上被用户纠正过的案例收进去,形成固定题库,长期维护。
  2. 定义指标至少记录三项:正确率、该拒答时的拒答率、引用真实性。只看正确率会漏掉编来源的问题。
  3. 单变量回归每次只改一个变量——只改提示,或只改检索——跑一遍题库,否则说不清是哪一步起了作用。
  4. 定期重核选型模型版本和价格变动频繁,换模型前到 /official-api 和 /rankings 核对当时的参数与口径,别用半年前的结论下判断。
下一步如果你怀疑问题出在模型被中转掺水而降智,那不是提示或检索能修的,先到 /tools/speed-test 这类检测入口做一次保真度和响应比对,确认底层模型没问题再谈压幻觉。

这些做法在什么情况下不好使

上面这套方法不是万能的,用错场景反而增加负担。搞清楚它什么时候不适用,比无脑套用更重要。下面几种情况,要么别压,要么换思路。

  • 纯创意写作、头脑风暴:不需要压制幻觉,约束太死会让产出变干,这里「编」恰恰是价值
  • 快速变化又没有可靠数据源的领域:检索层也救不了,应该改成只做整理不做结论,明确告诉用户信息可能滞后
  • 问题出在链路降智而非模型编造:如果输出质量整体下滑、连简单题都答错,先做保真度检测,别当幻觉修
  • 知识库本身有过期或冲突内容:先把数据源整理干净,再谈提示和校验,否则在各层之间反复打转

判断顺序建议是:先确认底层模型是否保真,再确认知识库是否干净且召回正常,然后才是提示、校验、兜底。跳过前两步直接改提示,多半是白忙。

如果你正在选型或者想知道同类工具的实际表现,到 /sites 看中转站可信度信息,到 /price-watch 看价格追踪,到 /rankings 看各家资料对比。所有具体数字都以这些页面当时的展示为准,别拿旧截图做决策。

常见问题

幻觉能彻底消除吗?

不能。模型是按概率生成文本的,没有事实校验机制,只能靠检索、校验和兜底把错误率压到可接受范围。真正要定的是「哪类错误绝对不能出现」,然后针对那类加硬约束,其余接受一定容错。

加一句「不要编造」有用吗?

有一点用但有限。指令能降低编造倾向,却没法让模型知道自己不知道。更稳的做法是要求它给出来源片段、把答案限定在给定材料内,再加上程序侧校验,而不是只靠一句提示。

RAG 就一定能解决幻觉吗?

不一定。检索没召回、召回内容过期或互相冲突时,模型照样会顺着材料编。要先单独验证检索质量,确认答案在召回里,再看生成端表现,否则容易把检索问题误判成模型问题。

怎么判断是幻觉还是模型变差了?

看错误是否成片出现且跨场景。幻觉通常表现为个别事实错、来源编造;整体质量下滑往往是换模型、换中转或限速降级引起,可以先做几组对照测试,再到 /tools/verify 和 /rankings 核对当时的检测口径。

上线前最少要做哪几件事?

固定参数复现已知错误、给硬信息加字段校验、关键动作加人工确认、建一组回归测试题。这几件做完,至少能保证错误不会直接变成损失,具体阈值和工具到 /safety 分区的清单里对照。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。