大模型幻觉和知识截止常见问题,步骤和注意事项

模型与算力

把幻觉和知识截止分开看:给一套判断标准、自查步骤和上线前的核对清单,避免把过期信息当错答。

用户问了个问题,模型答得斩钉截铁,结果一查是编的;或者答案没毛病,但说的是几年前的情况。这两种表现长得很像,处理方式却完全不同。这篇给一套能照着做的判断顺序:先分清是幻觉还是知识截止,再决定改提示、换检索还是换模型,最后给上线前该列的核对项和什么情况下这套方法不管用。

用户问了个问题,模型答得斩钉截铁,结果一查是编的;或者答案没毛病,但说的是几年前的情况。这两种表现长得很像,处理方式却完全不同。这篇给一套能照着做的判断顺序:先分清是幻觉还是知识截止,再决定改提示、换检索还是换模型,最后给上线前该列的核对项和什么情况下这套方法不管用。

先说清楚为什么要把两件事分开。幻觉是模型凭空造了一个不存在的事实,知识截止是模型知道的东西停在了某个时间点。前者是「错」,后者是「旧」。你把旧答案当错答案去调提示词,怎么调都调不好;你把编造当信息过时去加检索,检索回来它照样编。所以第一步永远是定性。

先分清是编的,还是只知道旧的

判断幻觉有个很实用的抓手:看它有没有「过度具体」。模型编东西的时候往往特别自信,给你一个论文标题、一个接口参数、一个产品能力组合,格式看着都对,内部逻辑也自洽,但那个东西根本不存在。尤其是数字和出处,越具体越要警惕。而知识截止的答案通常是对的,只是停在过去,你问它近段时间的变化,它答得合理但过时,再追问细节它就开始往外推,说「建议查阅最新资料」。

表现更像幻觉更像知识截止
答案内部逻辑自洽但事实不存在事实存在但时间点偏早
具体数字和出处给得很具体,一查没有给得出处,但版本较旧
追问细节时继续编,越编越细开始承认需要查最新资料
换个模型再问答案在关键事实上对不上答案基本一致,只是都旧
  1. 做一次拆分提问让它把答案拆成「我确定的部分」和「我不确定的部分」,分开列。如果它把所有内容都放进确定区,说明它对自己的边界没有感知,后面要格外小心。
  2. 单独问一个明显超出截止时间的事实挑一个近段时间才发生、你确定它训练数据里没有的事去问。它直接承认不知道,说明知识截止的边界它是认的;它硬答,说明它倾向于编。
  3. 把两次结果对一下如果拆分提问时它很自信,但超截止问题又硬编,基本可以判定这个模型在你的场景里幻觉风险偏高,先按高风险处理,别急着上线。

三步自查:问什么、怎么问、怎么判

自查的目的不是给模型打分,是搞清楚「在你的领域里,它大概在什么情况下会出问题」。所以别拿一次好坏下结论,先定基线,再换问法,最后做交叉验证。整个过程记下来,攒够样本才有判断力。

  • 定基线:用几个你已知标准答案的问题测同一个模型,看它在你的领域里编造率大概是什么水平,同一个问题至少问三次
  • 换问法:把开放提问改成「不确定就说不确定」,再要求它给出处;愿意承认不知道的模型,实际可用性往往更高
  • 交叉验证:同一问题换一个模型或换一次会话再问,两次答案在关键事实上不一致,就按高风险处理
  • 做记录:把每次踩坑的问题、模型、结论记成一张小表,攒够十几条就能看出是提示问题还是模型能力问题

这里有个容易忽略的点:同一个模型在不同问法下的表现可能差很多。你测的时候要用你实际业务里会出现的问法,不要用精心构造的测试题。测试题答得好,不代表用户随口一问它也能答好。

对症下药:改提示、加检索,还是换模型

定性之后,修复顺序建议从成本最低的开始:先改提示,再考虑加检索,最后才换模型。很多团队一上来就换模型,结果发现是提示太开放,换了也一样编。反过来,如果提示和检索都做了,关键字段还是高频出错,那就是能力边界问题,该换就换。

提示层
收窄范围、要求标注不确定、禁止编造出处,成本最低,先试
检索层
答案依赖内部文档或时效强的资料时,接知识库或联网检索,把事实来源从模型记忆挪到外部原文
模型层
同一套提示和检索下仍高频编造关键字段,说明是能力边界,再考虑换

有一类任务要单独说:要求精确数值或法律条文原文的,任何模型输出都只能当草稿。这不是提示或检索能解决的,必须在流程里留人工复核环节。如果你的业务里这类任务占比很高,换模型带来的提升也有限,重点应该放在流程设计上。

上线前的核对清单

上线前的核对不是走形式,是把前面几步的结论落成可执行的约束。重点是三件事:哪些字段绝对不能错、哪些问题不该让模型直接答、换模型前后怎么对比。

核对项具体动作不做的后果
关键字段单独列出绝对不能错的字段,不让模型直接对外输出编造的数字直接到用户手里
知识时效确认模型训练数据时间范围,近期变化类问题强制走检索或摘出自动回答把过期信息当现状答出去
回归问题集准备固定问题集,换模型或供应商前后各跑一遍换完才发现变差,没有基线
对外说明留一句信息可能过时的兜底说明,作为产品设计的一部分用户把旧信息当承诺

关于模型训练数据的时间范围,各家官方资料里都会写,但写法不统一,有的写在模型卡里,有的只在发布说明里提一句。你可以到站内的模型资料库逐家核对,把时间范围记进自己的核对表,别凭印象。

最后说清楚这套方法什么时候不适用。如果你的业务场景里,用户问的问题本身就是开放式的、没有标准答案的,那幻觉和知识截止的界限会很模糊,这套判断标准只能帮你排除明显编造的情况,不能保证答案正确。这种场景下,更现实的做法是改变产品形态,比如把问答改成检索加摘要,让用户自己看原文。

下一步把你手上在用的模型到站内资料库对一遍训练数据时间范围,再顺手跑一遍你的回归问题集,心里就有数了。

常见问题

模型说不知道,是不是就代表它靠不住?

恰恰相反。愿意承认不确定的模型更好用,因为它把风险暴露给你了;最危险的是答得又快又具体的那些。真正要防的是它嘴上说确定、内容却是编的,这种情况必须靠外部来源核对,不能靠它的语气判断。

同一个问题问两次答案不一样,说明是幻觉吗?

不一定,但这是个明确的风险信号。两次答案在关键事实上对不上,说明模型对这块知识没有稳定把握,要么是训练数据里本来就少,要么是问题超出了它的覆盖范围。这种问题应该改成走检索或人工确认,而不是反复重问碰运气。

本地部署的模型会不会没有知识截止问题?

一样有。本地部署只是换了运行位置,模型权重里带的还是训练时的那批数据,截止时间照旧;区别在于你可以自己接知识库、自己控制更新节奏。想彻底解决时效问题,靠的是检索和定期更新资料,不是把模型搬到自己机器上。

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