RAG 不保證不會幻覺,當檢索到的 context 不足或 Prompt 設計不當時 AI 仍會編造;作者提出明確 System Instruction、強制 Citation、Confidence Threshold、拒答訓練、兩階段查證、結構化輸出與調低 temperature 七個技巧,實測可把幻覺率從裸 RAG 的 14.2% 逐步降到 2.4%。
發布 2026-06-04 · 最後更新 2026-09-27 · 作者 賴家榮 Andy Lai
RAG 不一定不會幻覺。如果 retrieved context 不足、Prompt 沒設計好,AI 還是會編。這 7 個技巧把幻覺率從 15% 降到 < 3%。
技巧 1:明確的 System Instruction
# Bad
你是客服機器人,回答用戶問題。
# Good
你是客服機器人。請務必遵守:
1. 只能根據以下提供的 context 回答
2. context 沒提到的事情,請說「我這邊沒有相關資料,幫您轉接專員」
3. 不要根據常識編造答案
4. 每個事實都要附 [來源:檔名] 標記
技巧 2:強制 Citation
要求 AI 每個事實都要引用來源:
你的回答格式:
- 每個事實後面加 [檔名 段落號]
- 例如:「退貨期限是 7 天 [policy.pdf §3.2]」
- 沒有來源的內容不要寫
技巧 3:Confidence Threshold
檢索 Top-K 後,看最高分是否超過門檻:
results = vector_search(query, top_k=5)
if results[0].score < 0.7:
return "我這邊沒有夠相關的資料,請聯絡客服。"
這能擋掉「問題與資料庫無關時的瞎編」。
技巧 4:拒答訓練
在 System Instruction 中加範例:
範例:
問題:「明年 GDP 會多少?」
Context:(無相關資料)
正確回答:「這個問題超出我的資料庫範圍,建議您查詢主計總處。」
技巧 5:兩階段查證
對高風險領域(法律、醫療),用兩階段:
- 第一階段:LLM 草擬回答
- 第二階段:用第二個 LLM 檢查「這個回答是否與 context 一致」,不一致就退回
技巧 6:結構化輸出
強制 JSON 格式,每個欄位都有 source:
{
"answer": "...",
"sources": [
{"text": "依據條文", "doc": "policy.pdf", "section": "3.2"}
],
"confidence": "high|medium|low",
"uncertain_parts": ["如果有不確定的部分"]
}
技巧 7:限制創意
把 temperature 設低(0.1–0.3),top_p 設 0.5。這讓 AI 更保守、更不容易發揮想像。
實測:7 技巧合用的效果
| 配置 | 幻覺率 |
|---|---|
| 裸 RAG(無技巧) | 14.2% |
| + 強 Prompt | 8.5% |
| + Citation 要求 | 5.1% |
| + Confidence Threshold | 3.8% |
| + 兩階段查證 | 2.4% |
監控幻覺
上線後監控三個訊號:
- 用戶按「👎」的對話:人工抽查 10%
- 沒有 Citation 的回答:標記為高風險
- Confidence 標 low 但回答不少的:可能編造
什麼情境最容易幻覺?
- 用戶問題超出資料庫範圍
- 用戶問「比較性」問題(A vs B 但只有 A 的資料)
- 用戶問「推測性」問題(未來、預測)
- 用戶問「常識性」問題(AI 訓練時學過)
這四類情境要特別加強 Prompt 防護。
常見問題
為什麼用了 RAG 還是會出現 AI 幻覺?
因為 RAG 只是把公司文件當作 context 提供給 AI,若檢索到的 context 不足、或 Prompt 沒有限制 AI 只能依 context 回答,模型仍會用常識編造答案。文章實測裸 RAG(無任何技巧)的幻覺率為 14.2%,最容易幻覺的情境是問題超出資料庫範圍、比較性、推測性與常識性問題。
降低 RAG 幻覺的 7 個技巧是什麼?
一是明確的 System Instruction,規定只能依 context 回答;二是強制每個事實附來源 Citation;三是設 Confidence Threshold,檢索最高分低於 0.7 就拒答;四是拒答訓練,在指令中加範例;五是高風險領域用兩階段查證;六是強制 JSON 結構化輸出並附 source;七是把 temperature 設 0.1 到 0.3、top_p 設 0.5。
這些防幻覺技巧實際能把幻覺率降到多少?
文章實測數據:裸 RAG 幻覺率 14.2%,加上強 Prompt 降到 8.5%,再加 Citation 要求降到 5.1%,加 Confidence Threshold 降到 3.8%,最後加兩階段查證降到 2.4%。也就是七個技巧合用可把幻覺率從約 15% 壓到 3% 以下。
Confidence Threshold 在 RAG 中怎麼實作?
向量檢索取 Top-K(例如 top_k=5)後,檢查最高分結果的相似度分數是否超過門檻;文章範例是低於 0.7 就直接回覆「我這邊沒有夠相關的資料,請聯絡客服」,不交給 LLM 生成。這能擋掉使用者問題與資料庫無關時的瞎編。
RAG 上線後要怎麼監控幻覺?
作者建議追蹤三個訊號:用戶給負評的對話要人工抽查 10%;沒有附 Citation 的回答標記為高風險;Confidence 標為 low 但回答內容卻不少的對話,很可能是編造。另外要特別針對超出資料庫範圍、比較性、推測性、常識性四類問題加強 Prompt 防護。