你問 AI:「這個說法出自哪篇研究?」它回了一個很像真的論文標題,作者名字合理、期刊名稱也像真的,甚至連 DOI 都補得完整。你把標題丟進搜尋引擎,卻什麼也找不到。最麻煩的地方不是它答錯,而是整段文字讀起來完全不像在猜。
Hallucination,可以先理解成模型產生了看起來合理,但事實上錯誤、無法被證據支持,或和提供來源不一致的內容。 它可能是一個錯日期、一段不存在的法律條文、一篇虛構論文,也可能是在摘要文件時補進原文根本沒有說過的結論。
先記一句:模型說得像真的,不代表它有查證過。流暢度是語言能力,可信度是另一件事。
LLM 的工作不是先判斷真假,再決定要不要說
大型語言模型產生文字時,核心工作是根據目前上下文預測下一個 token,再把新 token 接回去繼續預測。訓練讓它學到大量語言規律、知識關聯與回答形式,因此它很擅長產生「像一個合理答案」的文字;但生成流程本身沒有一個內建的步驟,會在每句話送出以前自動打開權威資料庫核對。
這也是 hallucination 最容易讓人誤會的地方。模型不是先在腦中找到一個明確標示為「錯誤」的答案,然後故意說出來。更常見的情況是:目前上下文讓某一串文字看起來很可能接在後面,而模型就沿著這個方向生成。若它缺少可靠資訊、問題超出已學到的範圍,或上下文本身就有錯,仍可能產生非常順的答案。
「它很有自信」很多時候其實是人類讀出來的
一句「答案是 42。」和一句「我不確定,但可能是 42。」在人類閱讀時會有完全不同的自信感。但文字語氣不等於模型對事實正確率的可靠估計。模型可以用肯定句講錯,也可以在答對時使用保守語氣;因此不能只靠「聽起來很篤定」來判斷它到底知不知道。
這也是為什麼產品設計不能把「請你不要亂講」當成完整的 factuality 系統。Prompt 可以讓模型更願意承認不確定、要求它只根據來源回答,或在缺少資料時拒答,但這些都是降低錯誤的方法,不是數學上的保證。真正重要的問題是:系統有沒有可驗證的來源、能不能查資料,以及回答之後有沒有辦法測出它是否真的被來源支持。
Hallucination 不只是一種錯誤
最直觀的是事實錯誤,例如把某人的出生年份講錯;另一種是 fabricated citation,也就是捏造不存在的來源。還有一種更隱蔽:模型拿到一份文件後,回答出文件裡沒有的內容。即使那句話在現實世界碰巧是真的,若任務要求「只根據這份文件回答」,它仍然沒有忠實遵守來源。
因此在不同研究和產品裡,hallucination 的精確定義可能不完全相同。有些評測關心「是否符合世界事實」,有些關心「是否被指定來源支持」,還有些把兩者分開。實際做系統時,最好不要只問一個模糊的「幻覺率」,而是先決定自己到底在測 factuality、faithfulness、citation correctness,還是某一個特定任務的正確率。
RAG 能降低風險,但不能把 Hallucination 關掉
RAG 的做法,是在模型回答以前先找外部資料,再把相關內容放進 context window。這會讓模型不必只依賴訓練時學到的內容,尤其適合最新政策、公司內部文件或經常更新的知識。
但 RAG 的前提是「找回來的資料真的有用」。如果 semantic search 找錯文件、資料庫裡本來就是舊版本,或 chunk 切得讓重要條件掉在另一段,模型仍然可能基於錯的 context 產生錯誤答案。甚至資料明明正確,模型也可能把來源中的限制條件漏掉。因此比較準確的說法是:RAG 提供 grounding,通常可以降低某些 hallucination,但不等於消除 hallucination。
有引用,不代表那句話真的被引用支持
讓模型附 citation 是很有價值的,因為使用者至少有機會往回檢查來源。但「旁邊有一個連結」和「這個來源真的支持這句話」仍是兩件事。模型可能引用到相關主題的網頁,卻把頁面沒有講的數字塞進答案;也可能把來源 A 的條件和來源 B 的結論拼在一起。
因此高要求系統通常需要多一層 verification:檢查每個重要 claim 能不能對應到來源中的具體證據。這也是為什麼 citation correctness、groundedness 與 answer correctness 常需要分開評測。引用是查證入口,不是自動真實章。
工具可以讓模型去查,但工具本身也要被正確使用
搜尋網頁、查資料庫、執行計算器或呼叫 API,都可以把原本只能「憑模型內部狀態生成」的任務,改成先取得外部結果再回答。像即時匯率、今天的天氣、資料庫裡某筆訂單,這類問題本來就更適合呼叫工具,而不是期待模型從訓練資料猜出答案。
但 tool use 仍然可能失敗:模型可能選錯工具、組錯查詢、讀錯欄位,或正確拿到資料後又在文字整理階段加錯內容。也就是說,工具讓系統多了一條接近真實世界的通道,但可靠性仍取決於整條流程,而不是「用了工具」四個字。
Structured Output 只能保證形狀,不能保證內容是真的
如果 API 要求模型輸出 JSON,甚至使用 schema 限制欄位型別,可以大幅減少格式錯誤。例如系統可以確保 price 是 number、sources 是 array。但一個完美合法的 JSON 仍然可以裝著錯誤日期、虛構來源和不存在的價格。
這個區分很重要:格式正確是 syntactic correctness;事實正確是 factual correctness。 前者可以靠 schema 很強地約束,後者仍需要來源、工具、規則與評測。
真正實用的目標不是「零幻覺」,而是知道哪裡不能只信生成
對創意寫作來說,模型自由補內容可能根本不是問題;對醫療資訊、法律條文、財務數字、研究引用或公司政策,錯一個細節就可能完全改變意思。因此 hallucination 並不是所有場景都用同一套門檻處理,而是要看錯誤成本。
可靠的系統通常會把幾層方法疊在一起:需要最新事實時先查來源,需要精確計算時交給工具,需要公司文件時做 grounding,允許不知道時就讓模型拒答,再用測試集持續量測實際錯誤。沒有任何一層能單獨保證永遠正確,但它們可以把「模型講得很像真的」慢慢轉成「系統有辦法知道這句話從哪裡來、能不能被驗證」。
所以如果只記最後一句:Hallucination 不是 AI 突然開始幻想,而是生成模型產生了沒有被事實或指定證據可靠支持的內容。流暢度不能當可信度;真正降低風險的方法,是把回答接回可查證的世界。
延伸資料
OpenAI — WebGPT: Improving the factual accuracy of language models through web browsing
Google Cloud — What are AI hallucinations?
Google Cloud — What is Retrieval-Augmented Generation (RAG)?