什么是幻觉
大模型幻觉(Hallucination)是指模型生成的内容看似合理但实际上与事实不符的现象。它可能表现为:编造不存在的事实、歪曲已知信息、生成逻辑矛盾的内容。幻觉严重影响了 AI 应用的可信度。
幻觉的根因
- 训练数据偏差:训练数据中可能存在错误、过时或不完整的信息
- 概率生成本质:LLM 本质上是预测下一个 token 的概率,而非「理解」事实
- 知识截止日期:模型训练完成后无法获取新信息
- 过度泛化:模型将训练数据中的模式过度泛化到不匹配的场景
- 上下文误导:用户提示词中的错误信息可能被模型采信
缓解策略一:RAG 增强
RAG 是缓解幻觉最有效的方法之一,通过检索外部知识库来约束模型输出:
def rag_verify_response(question, llm_response, vectorstore):
"""用 RAG 验证模型回答的事实性"""
# 1. 将回答分解为事实陈述
facts = extract_factual_claims(llm_response)
verified_facts = []
for fact in facts:
# 2. 检索相关证据
evidence = vectorstore.similarity_search(fact, k=3)
# 3. 用 LLM 验证事实与证据的一致性
verification = verify_fact_with_evidence(fact, evidence)
if verification["supported"]:
verified_facts.append((fact, "supported", verification["source"]))
else:
verified_facts.append((fact, "unsupported", None))
return verified_facts缓解策略二:Self-Consistency
通过多次采样和投票来提高可靠性:
def self_consistency_check(prompt, llm, n_samples=5):
"""多次生成并找出一致性最高的答案"""
responses = []
for _ in range(n_samples):
response = llm.generate(
prompt,
temperature=0.7 # 使用较高温度以增加多样性
)
responses.append(response)
# 找出最一致的答案
# 可以使用语义相似度聚类或投票
consensus = find_consensus(responses)
if consensus["confidence"] < 0.6:
return {
"answer": "我无法确定答案",
"confidence": consensus["confidence"]
}
return consensus缓解策略三:引用溯源
要求模型为每个事实声明提供引用来源:
def request_citation_response(question, context_docs):
prompt = f"""基于以下参考资料回答问题。
参考资料:
{format_docs(context_docs)}
问题:{question}
要求:
1. 每个事实声明必须标注引用来源(如 [1]、[2])
2. 如果参考资料中没有相关信息,明确说明「参考资料中未提及」
3. 不要编造参考资料中没有的事实
请回答:"""
response = llm.generate(prompt)
# 验证引用是否真的支持对应的事实
verified = verify_citations(response, context_docs)
return verified缓解策略四:不确定性量化
让模型表达自己的不确定性,帮助用户判断可信度:
def uncertainty_aware_response(question):
prompt = f"""请回答以下问题,并评估你的回答的确定性。
问题:{question}
请按以下格式回答:
【确定性】高/中/低
【回答】你的回答内容
【不确定性说明】如果你不确定,请说明原因
如果确定性为「低」,请建议用户如何获取更准确的信息。"""
return llm.generate(prompt)检测幻觉的指标
- 事实一致性:回答中的事实是否与可靠来源一致
- 逻辑一致性:回答内部是否有逻辑矛盾
- 引用准确率:标注的引用是否真的支持对应的事实
- 拒答率:模型在不确定时是否选择拒绝回答
- 用户反馈:收集用户对回答准确性的评价
总结
幻觉无法完全消除,但可以大幅降低。最佳实践是 RAG + 引用溯源 + 不确定性量化的组合策略。对于高风险场景(如医疗、金融),建议引入人工审核环节。