入门 9 分钟概念

幻觉:为什么您的本地 LLM 会编造内容,以及如何 limiter

AI 幻觉是指以正确答案般的自信语气说出的错误答案:虚构的日期、不存在的引文、凭空编造的 Python 函数。本地大语言模型也会出现与大型云端模型相同的现象,有时在低精度量化下更加明显。本指南将用通俗语言解释这些编造内容的来源,然后列出减少它们的具体设置、提示词和防护措施——尤其说明哪些情况下绝不能相信机器。

作者: Clara M.·更新于 2026-08-03·已在 Windows、macOS 和 Linux 上测试

#什么是幻觉?

“幻觉”指模型生成的任何错误、虚构或无法验证,却被当作事实呈现的陈述。这不是计算机意义上的程序错误:程序完全正常运行,只是在生成看似可信的文本。问题在于,“看似可信”和“真实”并不是一回事。

具体而言,幻觉有多种表现形式:精确但错误的数字(“这座城市的人口为 47,312 人”)、不存在的来源(“根据 Dupont 等人 2019 年的研究”)、虚构的 API 或命令(`ollama sync --cloud`),或将真实信息错误地重新组合在一起。共同点是:语气始终十分自信。

i
这不是谎言
该模型没有欺骗的意图,甚至没有真假的概念。它只是预测最可能的下一个词。当事实与概率发生分歧时,概率将占据上风。

#模型为什么会胡编?

本地 AI 套件

只需 1 小时,即可在您的电脑上拥有专属的免费 ChatGPT — LM Studio、Ollama、Open WebUI、您的文档,无需云端。

  • 在线空间,终身可用
  • PDF + 文件
  • 终身更新

大语言模型(LLM)的训练只有一个任务:以统计上合理的方式续写文本。它吸收了数十亿个句子,并从中总结出规律。当您提出问题时,它不会“查询”知识库,而是根据您的请求和它所接受的训练,逐词生成最可能的后续文本。

不具备可靠的事实记忆能力
知识被分散在网络权重中,而非像数据库那样被存储。模型‘记住’的是某种趋势,而非确切事实。具体细节(如日期、数字、罕见专有名词)往往是最先出现偏差的部分。
训练停留在某个时间点
模型对训练数据截止日期之后的信息一无所知。当被问及近期事件时,它不会说“我不知道”,而是根据已知信息进行推测,从而编造出信息。
倾向于给出答案的偏差
LLM 的优化目标是给出回答,而不是保持沉默。面对不知道答案的问题时,最可能生成的后续内容往往是一个语气笃定的回答,而不是承认自己不知道。
量化的效果
将模型压缩为 Q4_K_M 可节省 VRAM,但会略微降低精度。在专业性强、对事实准确性要求高的任务中,相比 Q8_0 或 FP16,激进量化可能会提高模型编造内容的比例。
采样中的随机性
每生成一个词,模型都会从较有可能的候选词中随机抽取。抽样越“有创意”(温度越高),就越可能偏向概率较低的后续内容——从而产生错误。

换句话说,幻觉并非意外:对于一个无法获知真相、只生成看似合理文本的系统来说,这是正常的运作方式。我们无法消除幻觉,只能减少并加以控制。

#识别编造的内容

在修复之前,必须先能够识别。某些信号应立即引起您的警觉。

精确得令人怀疑
精确到个位的数值、确切的日期、小众主题上精细到具体数位的百分比:没有来源支持时,越精确就越值得怀疑。
引用和链接
文章标题、作者姓名、URL、页码、法律引用。LLM 会编造看起来完全可信的来源。模型生成的任何引用,都不能在未经核实的情况下被视为真实。
“应该”存在的代码
一些看似合理但实际不存在的函数名或命令行选项。模型会通过类比相近的API进行补全。
答案会变化
在新对话中再次提出完全相同的问题。如果事实性回答每次都不同,说明模型是在猜测,而不是真正知道答案。
→
改写测试
请问模型:“你确定吗?请引用确切来源。”或者换一种方式重新提问。可靠的事实经得起检验;编造的内容则往往会自相矛盾,或最终变成“我无法确认”。

#减少编造内容的设置

生成参数控制着创造性与可靠性之间的权衡。凡是涉及事实、代码或信息提取的任务,都应追求确定、审慎的输出。

temperature
主要调节参数。在0时,模型始终选择最可能的词,输出稳定且保守。设置为0.7至1.0可实现创造性写作,但若用于事实性任务,则应调整为0.1至0.3。
top_p
将采样范围限制为累计概率达到给定值的一组候选词。较低的值(0.1–0.5)会截去低概率词的长尾部分,而这些词往往会导致生成内容偏离预期。
top_k
限制每一步考虑的候选数量。较低的 top_k 值(10–20)能缩小模型可能偏离正常输出的选择空间。
seed
设置种子可使生成过程可复现:在相同设置下,输出结果一致。这对于测试回答是否稳定或随机至关重要。
num_ctx
上下文长度。过短会导致模型‘忘记’开头部分,可能错误地拼接碎片内容。请确保您的参考文档能完整容纳在上下文窗口内。

使用 Ollama 时,可以在 API 调用中动态传入这些设置,也可以在 Modelfile 中将其固定下来。下面是一个向本地守护进程发起调用的示例,采用了适合事实性回答的保守设置:

终端
curl http://localhost:11434/api/generate -d '{
  "model": "qwen3.5:9b",
  "prompt": "Résume ce texte sans rien ajouter : ...",
  "stream": false,
  "options": {
    "temperature": 0.2,
    "top_p": 0.5,
    "top_k": 20,
    "seed": 42
  }
}'

要让这些设置对某个模型永久生效,可以将它们写入 Modelfile,并创建一个专用于事实性任务的变体:

Modelfile
FROM mistral
PARAMETER temperature 0.2
PARAMETER top_p 0.5
PARAMETER top_k 20
SYSTEM "Tu réponds uniquement à partir des informations fournies. Si tu ne sais pas, tu dis 'Je ne sais pas'. Tu n'inventes jamais de source, de chiffre ni de citation."
终端
ollama create mistral-prudent -f ./Modelfile
ollama run mistral-prudent
!
温度参数较低 ≠ 保证答案真实
降低温度会让回答更稳定、更保守,但并不会使其变得准确。即使温度为 0,模型也可能以完全确定性的方式产生幻觉。这些设置能减少噪声,却不能创造原本不存在的知识。

#促使模型谨慎回答的提示词

您如何表述请求,会显著影响模型编造内容的频率。思路是:明确允许模型承认不知道,并禁止它编造。

允许回答「不知道」
“如果你不确定,就回答:我不知道。”如果不给模型这样的许可,它就会编造内容来填补空白。
要求回答有据可依
« 仅根据下方文本回答。不得使用任何外部知识。 » 强制模型仅基于提供的上下文进行响应。
要求在文本中提供来源
“对于每一项断言,请引用文档中支持它的原句。”如果模型找不到依据,缺乏依据这一点就会显现出来。
区分事实与假设
‘区分哪些是已确定的事实,哪些是你的假设。’ 这会促使模型标注自身的不确定性。
分解复杂任务
把问题拆成几个明确的步骤,比提出一个宽泛的开放式问题更能减少自由发挥的空间。
抗幻觉系统提示
Tu es un assistant factuel et prudent.
Règles :
1. Réponds uniquement à partir du contexte fourni par l'utilisateur.
2. Si l'information n'y figure pas, réponds exactement : « Je ne sais pas ».
3. N'invente jamais de chiffre, de date, de nom, de source ni d'URL.
4. Pour chaque affirmation, cite la phrase du contexte qui la justifie.
5. Distingue clairement les faits des hypothèses.
→
简单的‘我不知道’就能改变一切
加入一条允许模型承认自己不知道的指令,是最划算的做法。许多编造的内容仅仅源于模型认为自己无论如何都必须回答。

#让回答以您自己的文档为依据

减少 AI 幻觉最有效的技术仍是 RAG(检索增强生成):与其让模型从其模糊的记忆中提取信息,不如向它提供您文档中的相关片段,并要求它仅依据这些片段作答。模型的角色由此从“信息源”转变为“阅读者”。

  1. 01
    为您的文档建立索引
    您的文件(PDF、笔记、内部文档)会被分割成片段,通过嵌入模型转换为向量,并存储到向量数据库中。
  2. 02
    查找相关段落
    每次提问,系统都会检索语义上最接近请求的片段并将其召回。
  3. 03
    注入至上下文
    检索到的段落将粘贴到提示中,并附带严格指令:仅根据这些片段作答。
  4. 04
    生成带有引用的回答
    模型基于提供的片段生成回复,理想情况下应引用具体片段。若片段中不包含答案,必须明确指出。

Open WebUI 连接到 Ollama 守护进程(http://localhost:11434)后,可提供内置的 RAG 功能:您可以上传文档,并在对话中用 `#` 引用它们。对于定制需求,向量数据库配合自行构建的处理流程可以提供更多控制。

i
RAG 能减少幻觉,但无法消除幻觉
即使有来源依据,模型仍可能误读某段文本,或推断出超出该段内容的信息。文本切分和检索的质量与模型本身同样重要。调校不当、检索到错误片段的 RAG 系统会生成信心十足……却错误的回答。

#每次都进行核查

没有任何技术能让LLM达到100%的可靠性。因此,验证不是可选项,而是工作流程中的必要步骤,且应根据风险程度进行调整。

与真实来源交叉验证
所有用于实际应用的事实性数据(数字、日期、引述)均需核实来自原始来源。模型仅作为起点,绝非权威依据。
先测试代码,再信任它
执行模型生成的内容。若调用不存在的函数,将立即报错。切勿在未运行前复制任何关键代码。
比较两次生成结果
使用不同的随机种子,或在新会话中重新提出问题。保持一致的内容更可靠;发生变化的内容则值得怀疑。
使用第二个模型
让另一个模型(或规模更大的版本)复核某个模型的回答,可以发现明显的不一致之处。
保持人类参与
对于任何具有实际后果的决策(如健康、法律、财务、安全),最终的确认仍需人工完成。无例外。

#永远不应信任的情况

某些领域集中了最危险的幻觉。在这些领域中,将模型的任何输出均视为未经验证的草稿,默认为错误,除非有相反证据。

健康与药品
用药剂量、药物相互作用、诊断。编造的信息可能带来危险。模型并非医疗专业人员。
法律与税务
法律条文、判例、申报义务。LLM 会编造看似真实、足以误导人的法律引用。
精确的数值与统计数据
人口、比率、金额、精确日期。数字细节是模型的结构性短板。
近期动态
训练数据截止日期之后的所有内容。模型会通过推测补全,却不会说明这一点。
引用与参考
标题、作者、URL、页码。每次再次使用前,都必须逐一核实,无一例外。
小众人物与冷门事实
鲜为人知的人物传记、冷门细节:模型会重新拼凑零散信息,再编造其余内容。
!
黄金法则
本地大语言模型是优秀的写作、头脑风暴和改写助手,但并非经过验证的知识库。事情越重要,人工核查就必须越严格。

#深入了解

减少幻觉,主要靠结合合适的设置与可靠的信息依据。以下指南可补充这一方法:

温度、top-p、top-k:参数详解
深入掌握本文提及的采样控制参数,并精细调节创造力与可靠性之间的平衡。
选择量化方案(Q4、Q5、Q8、FP16)
帮助您理解压缩对事实准确性的影响,并在可靠性优先时作出取舍。
掌握系统提示词
进一步了解让模型谨慎作答的提示词,并将避免编造设为默认行为。
这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。