如何解决RAG系统中可能出现的'幻觉'(Hallucination)问题?

解读

面试官问“幻觉”而不是泛泛问“效果差”,说明他关注RAG特有的“生成内容脱离检索结果”这一高风险场景。国内落地RAG的主流场景是客服、知识库问答、合规审计、金融投研等,对事实准确性零容忍,一旦幻觉直接触发监管投诉或品牌舆情。因此,回答必须兼顾“技术可行+合规可控+可灰度上线”,并体现产品经理对算法边界、数据闭环、成本收益的三重权衡能力。

知识点

  1. 幻觉根因:LLM先验知识过强、检索片段与Query语义漂移、片段排序TopK置信度低、Prompt诱导模型自由发挥。
  2. 国内监管红线:《生成式AI管理办法》第4条、第7条要求“生成内容准确、不误导用户”,幻觉属于“误导”高危项,必须可溯源、可干预、可回滚。
  3. 产品指标:幻觉率(Hallucination Rate)、引用准确率(Citation Precision)、拒答率(Abstention Rate)、用户负反馈率(Thumbs-down)。
  4. 技术杠杆:检索侧(Query改写、混合检索、精排+Rerank)、生成侧(约束解码、引用强制、Uncertainty-based Abstention)、后处理(事实核查、冲突检测、安全拦截)。
  5. 数据闭环:线上真实Bad Case→标注平台→微调/对齐→A/B回归→灰度放量,两周一个迭代节拍,符合国内“小步快跑”节奏。
  6. 成本视角:向量库扩容、Rerank模型推理、事实核查API均带来额外QPS成本,需用“幻觉损失*客诉罚金” vs “技术成本”算ROI,决定TopK值、Rerank模型尺寸、是否上LLM二次校验。

答案

我会把“幻觉”拆成“可预防—可拦截—可兜底”三道防线,用产品节奏分阶段落地:

第一道防线:检索前置,减少“原材料错误”

  1. Query改写模块:用LLM+规则混合做指代消解、时间补全,把用户口语化问题映射成标准知识库表述,降低语义漂移。
  2. 混合检索:Dense(向量)+Sparse(BM25)+Graph(实体子图)三路召回,确保Top10片段能覆盖答案,Recall≥95%才进入生成环节。
  3. 精排+Rerank:用Cross-Encoder轻量模型(国内可用BERT-Base级别,延迟<80ms)对候选片段做“是否包含答案”二分类,过滤掉“看似相关但无答案”的片段,Citation Precision提升10%+。

第二道防线:生成约束,降低“自由发挥”

  1. 引用强制Prompt模板:在System Prompt里写入“若检索片段无法回答问题,请回复‘根据现有资料无法确定’,禁止编造”,并在用户侧展示“引用编号”,形成心理约束。
  2. 约束解码:采用Logit Mask,把生成token限制在检索片段词汇表+通用高频词,Vocabulary Size从5万降到1万,幻觉率下降30%,BLEU仅掉0.8,可接受。
  3. Uncertainty阈值:对模型生成每个句子计算Token-level熵,熵>阈值自动触发“拒答”或“转人工”,拒答率控制在5%以内,用户满意度提升显著。

第三道防线:后处理兜底,确保“可溯源可回滚”

  1. 事实核查API:对接国内权威知识图谱(如天眼查、银保监会公开数据),对生成结果中的“机构名称、金额、日期”做实体链接与一致性校验,发现冲突自动拦截。
  2. 灰度回滚:按“用户ID尾号”做灰度,一旦线上负反馈率>1%或监管工单>2单/天,10分钟内切换Prompt版本并冻结特征,符合金融级稳定性要求。
  3. 数据闭环:每日把“用户点踩+监管投诉”样本回流到标注平台,用“是否幻觉”标签做SFT,两周发布一次小版本,持续降低幻觉率,目标季度内从5%→1%。

落地节奏:
MVP阶段先上前两道防线,2周完成,幻觉率从8%降到3%,满足合规基线;
M2阶段接入事实核查与灰度回滚,1个月完成,幻觉率降到1%以内,同时把拒答率、成本收益写进PRD,用“减少客诉罚金≥技术成本”证明ROI;
M3阶段建立数据飞轮,把幻觉Case做成高优标注队列,反哺模型SFT,实现“数据-模型-产品”闭环,最终让业务方签字确认“可规模化放量”。

拓展思考

  1. 多模态幻觉:当RAG扩展到“图表+文字”时,模型可能把图例数字读错,需要把OCR置信度、图表结构编码进Prompt,再做一次“数值一致性”校验。
  2. 个性化 vs 幻觉:为了提升用户粘性,产品可能要求“带观点的回答”,但观点层最容易幻觉。解决方案是把“事实层”与“观点层”拆成两段生成,事实层强制引用,观点层加免责声明并关闭约束解码,给用户明确感知。
  3. 国产化适配:如果向量库用Milvus国产版、LLM用ChatGLM3-6B,需在PRD里写清“模型量化后Uncertainty计算误差变大,需把熵阈值下调0.2”,体现对国产模型特性的深度理解。