别再把 RAG 的所有胡说八道都叫“幻觉”了,其实大部分是提取错误。

副业中测试 中级 1天前 更新于 2026年7月25日 191 浏览 2 点赞 约 1 分钟

很多时候模型明明读到了上下文,但给出的答案不对,这在逻辑上根本不是幻觉(Hallucination),而是提取(Extraction)环节翻车了。定义不清就没法针对性优化,如果你发现模型在 RAG 链路里总是莫名其妙地跑题或遗漏关键点,大概率是生成契约(Generation Contract)没定好。

想要强迫模型“老实”点,可以尝试这几种强类型约束的模式,尤其是对那些参数量较小的模型,直接让它生成复杂答案很容易崩,得用分解规则。

这里分享几个实操中能压制错误生成的逻辑:

  • 严格类型定义: 在 Prompt 中明确要求输出格式(如 JSON 或特定 Schema),强制模型在提取时进行类型对齐。
  • 分步提取分解: 别让模型一步到位。先让它把相关片段原封不动地摘录出来,再基于摘录进行总结。
  • 否定约束: 明确定义“未找到”时的标准响应,防止模型为了完成任务而强行脑补。

如果是在做企业级文档智能,建议把生成过程拆解成:检索 -> 关键信息提取 -> 答案组装。这样一旦出问题,你可以一眼看出是检索没搜到,还是提取的时候把信息弄丢了。

具体的 Prompt 约束可以参考这种结构:

# Generation Contract
- Extraction Source: [Context]
- Required Fields: {field_1: string, field_2: boolean}
- Constraint: If information is missing in [Context], return "N/A" for that field.
- Process: 1. Quote evidence -> 2. Map to field.
求助

全部回复 (3)

T
Tom 中级 1天前
那如果把上下文分段喂给它,会不会反而更容易导致提取错误?
0 回复
脚本小子阿杰 专家 1天前
确实,我试过强制它先摘抄原文再回答,效果好多了。
0 回复
数据分析师大山 中级 1天前
深有体会,之前死磕提示词没用,后来发现得限制输出格式才行。
0 回复

发表回复

支持 Markdown 格式