3. 幻觉类型学

在金融RAG系统中,幻觉检测的第一步不是“判断真假”,而是“判断错在哪一类”。类型学决定了检测器的特征工程、评测指标与修复策略。若把“营收数字写错”和“引用了不存在的监管条款”都笼统归为“幻觉”,后续的阈值、召回与人工复核成本都会失控。本节建立一套面向金融场景的幻觉分类框架,并给出可落地的判定流程。

核心原理:两条正交轴决定幻觉类型

金融RAG的幻觉可以从两条正交轴理解:错误来源轴(是模型内部知识错误,还是对给定上下文的偏离)与错误对象轴(事实、数值、时间、引用、逻辑)。两条轴交叉,形成六类高频幻觉。事实性幻觉指模型生成了与客观世界不符的陈述,例如“某银行2023年净利润为500亿元”而实际为300亿元;忠实性幻觉指回答与检索到的上下文不一致,即使上下文本身正确,模型仍“自由发挥”;上下文冲突指检索片段之间互相矛盾,模型未识别冲突而强行给出单一结论;数值错误包括单位、量级、百分比、同比环比计算错误;时间错位指把旧数据当新数据、把预测当已发生事实;金融特有幻觉则包括虚构金融产品条款、混淆监管口径、错误归因市场事件、编造交易对手或评级。

金融RAG幻觉类型学:双轴分类与检测信号 错误来源轴 错误对象轴 内部知识 上下文偏离 事实 数值 时间 引用/逻辑 事实性幻觉 虚构实体/事件 数值错误 单位/量级/计算 时间错位 旧数新用/预测当事实 金融特有幻觉 条款/监管/归因 忠实性幻觉 偏离检索上下文 上下文冲突 多源矛盾未识别 引用错误 张冠李戴/无出处 逻辑矛盾 前后不一致 检测信号:实体核验 · 数值比对 · 时间戳校验 · 上下文一致性 · 引用溯源

方法流程:从回答到类型标签的四步判定

落地时建议采用“先抽取、再比对、后归类”的流水线,避免直接让大模型输出类型标签导致不稳定。第一步,结构化抽取:从回答中抽取实体、数值、时间、引用片段和结论句。第二步,证据对齐:将每个抽取单元与检索上下文及外部知识库对齐,计算支持度。第三步,冲突检测:若多个上下文片段对同一事实给出不同值,标记为上下文冲突;若回答与上下文不一致,标记为忠实性幻觉。第四步,类型归因:根据错误对象轴分配具体标签,并输出置信度。

# 幻觉类型判定伪代码
def classify_hallucination(answer, contexts, kb):
    units = extract_units(answer)          # 实体/数值/时间/引用
    labels = []
    for u in units:
        support = align(u, contexts, kb)
        if support.conflict:
            labels.append(("上下文冲突", support.confidence))
        elif not support.in_context and support.in_kb is False:
            labels.append(("事实性幻觉", support.confidence))
        elif not support.in_context and support.in_kb is True:
            labels.append(("忠实性幻觉", support.confidence))
        elif u.type == "number" and not support.value_match:
            labels.append(("数值错误", support.confidence))
        elif u.type == "time" and not support.time_match:
            labels.append(("时间错位", support.confidence))
        elif u.type in ("clause", "regulation", "rating"):
            labels.append(("金融特有幻觉", support.confidence))
    return aggregate(labels)

案例与场景:六类幻觉在金融问答中的真实表现

以下清单覆盖高频场景,便于在评测集中构造负样本。

类型典型问法幻觉表现检测信号
事实性幻觉某公司董事长是谁?编造人名或任职时间实体库无此记录
忠实性幻觉根据这份年报,营收多少?上下文写300亿,回答写500亿回答与上下文数值不一致
上下文冲突两家券商研报目标价?忽略分歧,只给单一目标价多片段数值矛盾未标注
数值错误同比增长多少?把绝对增量当增长率单位/公式校验失败
时间错位最新监管要求是什么?引用已废止的旧版办法时间戳早于生效日
金融特有幻觉该理财产品保本吗?虚构“保本条款”产品合同无此表述
注意:上下文冲突与忠实性幻觉常被混淆。前者是“证据之间打架”,后者是“回答偏离证据”。检测器若只做回答与单片段比对,会漏掉多源冲突;若只做多源一致性,又会放过模型自由发挥。

误区与复盘:类型学落地中的三个常见坑

误区一:把类型标签交给生成模型直接输出。大模型倾向于把所有错误都标成“事实性幻觉”,因为该词最泛化。正确做法是用规则+小模型做初筛,再让大模型做归因复核。误区二:忽略金融术语的领域性。“评级下调”与“展望负面”在金融中是不同事件,若类型学不区分,评测会把正确回答判为幻觉。误区三:只统计总数不统计类型分布。事实性幻觉高说明知识库覆盖不足;忠实性幻觉高说明检索上下文利用能力弱;数值错误高说明后处理计算模块缺失。类型分布直接指向修复优先级。

复盘建议:每周抽样100条幻觉样本,按六类打标,计算类型占比与置信度分布。若“金融特有幻觉”占比超过20%,应优先补充监管条款与产品合同的结构化知识库,而非继续调大模型温度参数。

掌握类型学后,下一阶段的检测器设计才能有的放矢:事实性幻觉靠知识库核验,忠实性幻觉靠上下文蕴含判断,数值错误靠计算校验,时间错位靠时间戳过滤,金融特有幻觉靠领域本体与规则引擎。类型学不是学术分类,而是金融RAG可信度工程的施工图。