跳到主要内容

幻觉处理

问题

AI 应用上线后用户反馈模型频繁"编造"信息,如何排查和解决?

答案

一、排查流程

二、幻觉应对策略

策略做法效果
RAG 检索增强从知识库检索事实作为上下文⭐⭐⭐⭐⭐
Prompt 约束"仅根据以下内容回答,无法回答请说不知道"⭐⭐⭐⭐
自我一致性多次采样取多数一致结果⭐⭐⭐
引用溯源要求附上信息来源段落⭐⭐⭐⭐
后处理校验用另一个模型验证事实性⭐⭐⭐
温度调低temperature=0 减少随机性⭐⭐

三、面向工程的解决方案

// 结合 RAG + 引用溯源 + 拒答机制
async function answerWithGrounding(query: string) {
// 1. 检索相关文档
const docs = await vectorStore.search(query, { topK: 5 })

// 2. 相关性过滤 — 分数过低则拒答
const relevant = docs.filter(d => d.score > 0.7)
if (relevant.length === 0) {
return { answer: '抱歉,我没有找到相关信息', sources: [] }
}

// 3. 带约束的 Prompt
const prompt = `
仅根据以下文档回答用户问题。
如果文档中没有相关信息,请明确说"根据现有资料无法回答"。
回答时必须标注信息来源 [来源1]、[来源2]。

文档:
${relevant.map((d, i) => `[来源${i + 1}] ${d.content}`).join('\n')}

问题:${query}
`
const answer = await llm.generate(prompt, { temperature: 0 })

return { answer, sources: relevant }
}
关键点

幻觉无法完全消除,核心思路是:缩小生成范围 + 提供事实依据 + 允许拒答


常见面试问题

Q1: 为什么 LLM 会产生幻觉?

答案
LLM 本质是概率语言模型,按概率生成下一个 Token。它不具备"知道"与"不知道"的边界意识。幻觉的根源包括:

  • 训练数据噪音:互联网语料包含错误信息
  • 知识截断:训练数据有截止日期
  • 分布偏差:对高频模式过度拟合

Q2: RAG 能否彻底解决幻觉?

答案
不能。RAG 能大幅降低事实性幻觉,但仍可能出现:

  • 检索到错误/过时的文档
  • 模型忽视上下文内容,按自身知识回答
  • 多文档信息矛盾时,模型随机选择

需结合 Prompt 约束、引用溯源、人工兜底形成完整方案。

Q3: 如何量化衡量幻觉程度?

答案

  • 忠实度 (Faithfulness):回答是否与提供的上下文一致
  • LLM-as-Judge:用 GPT-4 检查回答中的错误陈述
  • 人工抽检:定期抽样评估,计算幻觉率
  • 工具:RAGASDeepEval

相关链接