降低幻觉的方案阶梯

降低幻觉不等于一上来就做复杂系统。

有些场景,一个写清楚边界的提示词就足够。比如内部写作润色、低风险摘要、可编辑草稿,用户本来就会检查和修改。此时上重型 RAG、人工审核和复杂 Eval,可能收益不大,反而拖慢产品。

但有些场景不能只靠提示词。只要答案涉及私有知识、实时数据、用户权益、不可逆操作、高风险专业建议,就需要把可靠性从“模型自觉”升级成“系统约束”。

这篇文章把降低幻觉的手段整理成一条方案阶梯。你不需要每个项目都走完整条阶梯,但需要知道什么时候该往上走。

第零步:先判断需不需要治理升级

在选择方案之前,先做一个简短判断。

判断问题如果答案是“是”说明
用户会把输出当事实吗需要引用或工具不能只靠模型口吻
答案依赖私有或实时数据吗需要 RAG 或工具训练知识不可靠
输出会进入下游系统吗需要结构化和校验自由文本不可控
错误会影响权益或安全设施吗需要人工审核或规则不能让模型单独决定
团队会频繁改 Prompt、模型或知识库吗需要 Eval否则无法判断退化

如果这些问题大多是否定的,提示词和 UI 边界可能就够了。

如果其中两三个是肯定的,就应该逐步引入更强约束。

第一层:提示词边界

提示词是最便宜的治理手段。它不能彻底消除幻觉,但可以显著减少明显越界。

一个可靠的提示词边界通常包含:

  • 角色和任务范围。
  • 可以使用的信息来源。
  • 不知道时如何回答。
  • 不能编造来源、链接、数据或操作结果。
  • 需要追问的条件。
  • 输出格式和语气。
  • 高风险问题的拒答或转人工规则。

例如文档问答可以写:

你只能根据提供的文档片段回答。
如果文档片段无法支持答案,请说“当前资料无法确认”,并说明缺少什么信息。
不要使用常识补全文档没有给出的政策、价格、时间或承诺。
每个关键结论后都必须标注 source id。

这个提示词并不复杂,但它比“请准确回答用户问题”强得多。

场景分析

提示词适合低风险、可编辑、用户能判断的场景:

  • 写作润色。
  • 会议纪要草稿。
  • 邮件草稿。
  • 头脑风暴。
  • 简单分类和摘要。
  • 内部低风险助手。

它也适合作为所有复杂方案的第一层。即使后面接 RAG、工具和 Eval,模型仍然需要清楚知道边界。

收益和成本判断

收益成本风险
上手快,几乎没有系统改造需要反复调试和样例验证遇到缺数据、强诱导、复杂推理时仍可能失效

提示词的性价比很高,但它是软约束。只要错误成本开始升高,就要加入硬约束。

方案选型表

场景提示词是否足够建议
写作润色通常足够加上用户编辑和反馈
内部摘要多数足够标注“摘要草稿”
FAQ 自动回答不足加知识库和拒答
订单状态不足必须查工具
医疗法律建议不足必须限制边界和人工审核

第二层:引用和上下文

当答案需要事实依据时,下一步是把依据放进上下文,并让答案展示引用。

引用的价值不是装饰,而是让用户和系统都能追溯“这句话凭什么这么说”。

一个可用引用系统至少需要:

  • source id。
  • 标题或来源名称。
  • 文档版本或更新时间。
  • 片段位置,如页码、段落、行号。
  • 权限过滤后的来源集合。
  • 答案中的关键结论和来源绑定。

场景分析

引用适合:

  • 文档问答。
  • 内部制度查询。
  • 产品政策解释。
  • API 文档问答。
  • 合同和条款摘要。
  • 研究资料整理。

引用不能保证答案正确,但能降低“无法追溯”的风险。用户看到原文后,可以判断答案是否过度概括。

收益和成本判断

收益成本风险
提升可追溯性,帮助用户判断需要来源模型、UI 展示和校验引用可能不支撑结论,形成“可信外观”

因此引用最好配合后端校验:答案里出现的 source id 必须来自本次检索结果,不能让模型编 source id。

方案选型表

需求引用设计校验方式
文档答案段落级 source idsource id 必须来自检索结果
代码解释文件路径和行号行号存在且未越权
数据解释查询 ID 和指标口径查询结果可复现
法规摘要条款号和版本条款来自权威库

第三层:RAG

RAG 适合答案依赖私有知识、长文档或频繁更新资料的场景。

但 RAG 的核心不是“向量数据库”。一个真正可用的 RAG 链路包括:

  • 文档入库。
  • 清洗和切分。
  • 元数据和权限。
  • 向量、关键词或混合检索。
  • rerank。
  • 上下文组装。
  • 引用展示。
  • 缺资料拒答。
  • trace 和评估。

场景分析

RAG 适合:

  • 文档问答。
  • 企业知识库。
  • 产品帮助中心。
  • 合同和制度查询。
  • 技术文档助手。
  • 内部流程和政策助手。

RAG 不适合解决所有幻觉。比如订单余额、库存状态、今天的数据指标,通常应该查数据库或业务 API,而不是放进向量库。

收益和成本判断

收益成本风险
引入私有和更新知识,降低常识补全入库、检索、权限、评估成本较高检索错会导致带引用的错误答案

RAG 的难点通常在工程细节,而不是模型调用。文档版本、删除失效、权限隔离、chunk 粒度、检索召回、上下文排序,都会影响幻觉。

方案选型表

问题RAG 设计重点说明
文档内容更新频繁version、updatedAt、索引重建避免旧知识进入上下文
多租户知识库tenantId、权限过滤检索前过滤,而不是生成后过滤
长文档问答层级 chunk、标题路径保留上下文结构
答案不在文档里拒答阈值、无答案样例不要强行回答
引用不准确段落定位、source 校验引用要能点回原文

第四层:工具校验

当事实来自业务系统时,工具比 RAG 更可靠。

订单状态、账户余额、库存、权限、日程、审批、运行测试、查询数据库、执行 SQL、调用风控规则,这些都应该由工具返回结果。

模型在这里的角色是:

  • 理解用户意图。
  • 选择需要调用的工具。
  • 生成工具参数候选。
  • 解释工具结果。
  • 在工具失败时说明状态。

模型不应该凭空声明工具结果。

场景分析

工具校验适合:

  • 客服订单查询。
  • 数据分析。
  • 代码助手。
  • 自动化工作流。
  • 预约、审批、支付、发票、库存等业务操作。

例如用户问“我上个月的消费是多少”,模型不应该直接估计,也不应该从历史聊天里猜。它应该调用账单工具,工具返回金额、币种、时间范围和数据更新时间,再由模型解释。

收益和成本判断

收益成本风险
事实来自系统,可靠性显著提高需要工具接口、鉴权、错误处理、状态展示工具参数错、工具失败、模型误读结果

工具校验的关键是状态机。前端和后端都要区分“模型打算调用”“工具正在执行”“工具成功”“工具失败”“用户已确认”“操作已完成”。

方案选型表

场景工具必要校验
订单状态order API用户身份、订单归属、状态码
数据分析SQL / metric API权限、指标口径、dry run
代码助手test / lint / build退出码、错误日志
日程助手calendar API时间冲突、参与人确认
权限修改admin API操作人权限、二次确认、审计

第五层:结构化输出

结构化输出解决的是“模型输出能不能被程序可靠消费”。

它不能保证事实正确,但能减少格式幻觉、字段缺失、枚举漂移和下游解析失败。

适合结构化输出的场景包括:

  • 表单填充。
  • 意图识别。
  • 工单分类。
  • 工具参数生成。
  • SQL 生成后的元信息。
  • 风险标签。
  • UI 组件渲染数据。

场景分析

自由文本很适合给人看,但不适合直接驱动系统。

如果模型要输出:

{
  "action": "refund",
  "orderId": "123",
  "amount": 99
}

那系统必须校验 action 是否是合法枚举、orderId 是否属于当前用户、amount 是否在可退款范围内。JSON parse 成功不代表业务正确。

收益和成本判断

收益成本风险
便于校验、重试、渲染和工具调用需要 schema、错误恢复、版本管理合法 JSON 里仍可能有错误事实

结构化输出应该和 schema 校验、业务规则校验一起使用。

方案选型表

输出类型推荐 schema后续处理
意图分类enum + confidence低置信度追问
工具参数typed object后端鉴权和业务校验
工单标签enum array人工可改
数据图表chart spec字段存在性和权限校验
风险判断level + reasons + evidenceIds高风险转人工

第六层:人工审核

人工审核适合错误成本高、自动校验不足、输出会影响真实权益的场景。

它不是把 AI 产品做弱,而是把 AI 放在合适的位置:让模型承担整理、草拟、检索、比对和提醒,让人承担最终判断和责任。

场景分析

应该考虑人工审核的场景:

  • 医疗建议。
  • 法律意见。
  • 投资和信贷建议。
  • 大额退款或补偿。
  • 权限变更。
  • 删除、提交、发布等不可逆操作。
  • 对外正式承诺。

人工审核可以分为几种形态:

  • 发送前确认。
  • 高风险命中后转人工。
  • 专家复核草稿。
  • 双人审批。
  • 抽样质检。
  • 事后审计。

收益和成本判断

收益成本风险
显著降低高风险错误外放增加人力和时延审核流程设计差会变成形式主义

人工审核要配合清晰的审核材料。不要只给审核人一段 AI 答案,还要给来源、工具结果、风险标签、用户上下文和模型不确定点。

方案选型表

场景审核触发审核材料
高额退款金额超过阈值或规则不确定订单、规则、历史沟通
法律文书草稿对外发送前原文、引用、修改 diff
医疗咨询涉及诊断或用药用户信息、风险提示、原始资料
权限修改涉及管理员或敏感资源操作参数、权限依据、审计记录
数据决策建议影响经营动作查询、指标口径、假设和限制

第七层:Eval 闭环

只要 AI 功能进入线上迭代,就需要 Eval。

原因很简单:Prompt 会改,模型会升级,知识库会更新,检索参数会调,工具接口会变化。没有 Eval,团队只能靠肉眼试几个问题判断质量。

Eval 的目标不是一次性证明“没有幻觉”,而是持续发现退化。

场景分析

Eval 特别适合:

  • 文档问答。
  • 客服回复。
  • 数据分析助手。
  • 代码生成。
  • 高风险场景的安全边界。
  • 任何频繁迭代的 AI 链路。

一个最小可用 Eval 可以从 30 到 50 条样例开始,覆盖高频问题、边界问题、历史失败、资料缺失、权限边界和安全风险。

收益和成本判断

收益成本风险
让质量变化可见,防止回归需要维护 case、runner、scorer、报告指标设计不当会误导团队

Eval 要尽量评估真实链路,而不是只评估裸模型。RAG、工具、结构化输出、UI 状态和拒答都应该进入评估视野。

方案选型表

评估目标评分方式示例
格式正确规则评分JSON parse、schema validate
引用正确规则 + groundingsource id 来自本次检索
关键事实覆盖规则评分mustInclude / mustNotInclude
开放式质量LLM-as-judge + 人工抽查是否完整、清晰、不过度承诺
安全边界红队样例越权、注入、高风险建议
线上退化用户反馈 + trace差评、转人工、重试率

一条实用升级路径

实际项目里,可以按下面路径渐进升级。

这条路径的好处是,每一步都对应一个真实问题,而不是为了架构完整而架构完整。

常见反模式

第一种反模式:只写“不要幻觉”。

这句话太抽象。模型需要具体规则:何时拒答、依据是什么、引用怎么标、工具失败怎么说、哪些问题必须转人工。

第二种反模式:把 RAG 用在所有事实问题上。

RAG 适合文档知识,不适合实时状态和业务操作。订单、余额、库存、权限、指标,应该优先用工具。

第三种反模式:结构化输出后就信任内容。

JSON 合法不等于事实正确。schema 只解决格式,业务规则和事实来源仍然要校验。

第四种反模式:人工审核没有上下文。

如果审核人看不到来源、工具结果和风险点,只能重新查一遍,审核成本会很高,也容易流于形式。

第五种反模式:Eval 只评估最终文本。

幻觉可能来自检索、工具、上下文、解析和 UI 状态。只看最终答案,会错过问题根因。

第六种反模式:一开始就追求完美 Eval。

Eval 可以从小评估集开始,先覆盖历史失败和高频问题。能稳定防回归,比指标体系漂亮更重要。

小结

降低幻觉是一条阶梯,而不是一个开关。

低风险场景可以从提示词边界、拒答和用户反馈开始,有时这已经足够。需要事实依据时,加引用和 RAG。涉及实时数据和操作时,让工具成为事实源。输出要进入系统时,用结构化输出和校验。错误成本高时,引入人工审核。功能进入持续迭代后,用 Eval 建立质量闭环。

真正成熟的 AI 应用,不是承诺模型永远正确,而是知道什么时候可以相信、什么时候需要验证、什么时候必须让人接管。