RAG 幻觉不是单一原因,分几类:
检索没召回到正确文档:上下文里没有答案,模型只能编。
召回了噪声文档:上下文里有错误或无关信息,模型被误导。
检索内容冲突:多个文档说法不一致,模型不知道信谁。
模型不忠于上下文:明明给了正确内容,模型还是按自己参数里的知识回答。
模型过度补全:上下文只给了一半,模型自己补另一半。
Prompt 没约束好:没要求引用、没要求拒答。
所以缓解幻觉要从检索、上下文、Prompt、生成、后验校验多个层面一起做,而不是只靠一句“只根据检索内容回答”。
(1)提升召回质量
混合检索(向量 + 关键词),提高召回率。
查询改写(Query Rewriting),把用户问题改写成更适合检索的形式。
查询扩展(Query Expansion),补充同义词、相关词。
多路召回,融合结果。
(2)提升检索精度
重排序(Cross-Encoder),把最相关文档排前面。
元数据过滤(时间、来源、权限),排除不相关文档。
去重,避免同一内容多个版本。
(3)控制上下文质量
只保留高相关文档,减少噪声。
按相关性排序,最相关的放前面。
限制上下文长度,避免超出窗口或噪声过多。
冲突检测:多个文档矛盾时,标注或让模型谨慎处理。
(4)检索评估
用 Recall@K、MRR、NDCG 评估检索。
分析 bad case:是没召回,还是排错了。
持续迭代检索策略。
核心:检索质量是 RAG 幻觉的第一道防线。上下文里没有正确答案,模型必然编。
(1)明确要求“只根据上下文回答”
最基础的手段。
但单独用不够,模型仍可能不遵守。
(2)要求引用来源
让模型在答案里标注来源,比如 [1]、[2]。
便于人工核查,也让模型更谨慎。
可以要求引用原文片段。
(3)允许说“不知道”
明确告诉模型:上下文没有答案时,回答“根据已知信息无法回答”。
减少模型硬编。
这是很重要的手段,很多团队会忽略。
(4)要求逐句依据
让模型每句话都对应上下文。
或者先列证据,再给结论。
这叫“先引用后回答”。
(5)角色和任务约束
设定角色:“你是一个只根据文档回答的助手。”
明确任务边界。
(6)少样本示例
给几个“正确回答”和“拒答”的示例。
让模型模仿。
(7)结构化输出
要求输出 JSON,包含 answer、citations、confidence。
便于后验校验。
(8)温度调低
生成时温度调低,减少随机性。
事实问答场景尤其有效。
核心:Prompt 要明确约束、要求引用、允许拒答,但不能只靠 Prompt。
(1)降低温度
温度低,输出更确定,幻觉更少。
但太低会死板,需要平衡。
(2)限制输出长度
输出太长,模型容易补全。
要求简洁回答。
(3)先推理后回答
让模型先列证据,再给结论。
类似 Chain-of-Thought,但基于上下文。
(4)多轮验证
生成后让模型自己检查:答案是否都有上下文支持?
或者用另一个模型做验证。
(5)约束解码
限制模型只能输出上下文里出现的实体或片段。
工程复杂,但有效。
核心:生成阶段控制随机性,要求基于证据。
这是很多人忽略但很重要的部分。
(1)引用校验
检查答案里的引用是否真的在上下文里。
引用不存在或对不上,就标记或重生成。
(2)事实一致性校验
用 NLI 模型判断答案是否被上下文蕴含。
不蕴含就拒答或重生成。
(3)答案-上下文对齐
逐句检查答案是否有上下文支持。
无支持的部分删掉或标注。
(4)多模型交叉验证
用另一个模型独立生成,对比结果。
不一致就谨慎处理。
(5)置信度估计
让模型输出置信度。
低置信度时拒答或转人工。
(6)人工审核
高风险场景(医疗、法律、金融)加人工审核。
或抽样审核。
核心:生成后要校验,不能直接信模型输出。
(1)拒答机制
检索分数低于阈值,直接拒答。
上下文不足,拒答。
校验不通过,拒答。
(2)转人工
高风险或低置信度,转人工。
客服、医疗、法律常用。
(3)溯源展示
答案旁展示来源文档。
用户可自行核查。
(4)反馈闭环
用户反馈错误,用于迭代检索和 Prompt。
持续优化。
(5)监控和评估
线上监控幻觉率。
定期人工评估。
用 Faithfulness、Answer Correctness 等指标。
核心:系统要有拒答、转人工、溯源、反馈闭环。
Faithfulness:答案是否忠于上下文。
Answer Correctness:答案是否正确。
Context Precision / Recall:上下文是否相关且完整。
Hallucination Rate:幻觉比例。
Citation Accuracy:引用是否准确。
用 RAGAS、TruLens 等框架可以自动化评估。
缓解 RAG 幻觉要多层配合:检索层提升召回和精度,Prompt 层要求引用和允许拒答,生成层降低温度、先证据后结论,后验层做引用校验和一致性校验,系统层有拒答、转人工、溯源和反馈闭环。只靠“让模型只根据检索内容回答”远远不够。
质量:上。 适合中高级岗位,能有效区分“知道 RAG 有幻觉”和“真正做过幻觉治理”的人。建议追问:
“引用校验怎么做?”
“NLI 模型怎么用?”
“拒答阈值怎么定?”
“幻觉率怎么评估?”
“高风险场景怎么处理?”
“RAG 幻觉来源很多:检索没召回、召回噪声、文档冲突、模型不忠于上下文、过度补全。所以要分层治理。”
“检索层:混合检索、查询改写、重排序、元数据过滤、去重,保证上下文质量。这是第一道防线。”
“Prompt 层:要求只根据上下文、要求引用来源、允许说不知道、先列证据再回答、给少样本示例、结构化输出、温度调低。”
“生成层:降低温度、限制输出长度、先推理后回答、多轮验证。”
“后验层:引用校验、NLI 一致性校验、答案-上下文对齐、多模型交叉验证、置信度估计。这是很多人忽略但很重要的部分。”
“系统层:检索分数低就拒答、低置信度转人工、展示溯源、用户反馈闭环、线上监控幻觉率。”
“评估用 Faithfulness、Answer Correctness、Context Precision/Recall、Citation Accuracy,可以用 RAGAS。我们实际用引用校验 + NLI 校验 + 拒答阈值,高风险场景转人工。”
评论专区
评论加载中...登录后即可发表评论