返回 AIPA 笔记
AIPA Day 71

SAR 规则模板基线 — 先建「愚蠢但确定」的对照系

SAR 规则模板基线 — 先建「愚蠢但确定」的对照系

2026-08-24
sar-narrativedeterministic-baselineeval-floor5w1h

日期: 2026-08-24 阶段: Phase 3 - AML 调查 Copilot 标签: #sar-narrative #deterministic-baseline #eval-floor #5w1h

核心问题

P3 的主交付是 SAR 叙述的 LLM 化(Day 72-73)。但今天先停下来回答一个反直觉的问题:为什么不能直接上 LLM 生成 SAR,而要先花一天把「规则模板生成器」做扎实?

P1 已经把规则模板生成器(src/aml/sarDraft.tsgeneratedBy: 'rule-template')落到了仓库里——它按 FinCEN 5W1H 结构把规则引擎的证据链拼成中文段落,没有一个字是模型生成的。今天的任务不是写新代码,而是把这个模板生成器正式确立为「基线(baseline)」,并回答三件事:

  1. 为什么必须先有基线? 没有基线,LLM 生成的 SAR「好」是相对于什么说的?「好 80 分」如果不知道一个确定性系统能拿几分,这个 80 分毫无意义。
  2. 基线怎么量化? 把规则模板在 66 案金标上跑出一组确定性指标(槽位覆盖率、引用一致性、可读性下限),作为 Day 73 LLM 对照的「分数线」。
  3. 三组 evals 怎么每日跑防退化? 基线本身也会因为代码改动而退化——把它纳入 CI 日跑。

这对 AML 合规是底线问题:监管要求 SAR 可审计、可复现。一个确定性的模板基线天然满足复现性(同输入同输出,无温度、无采样),它是 LLM 系统的「安全网」——当 LLM 出问题时,可以瞬间降级回模板,不会让案件卡死。

关键内容

A. 为什么必须先有「愚蠢但确定」的基线:评测的参照系问题

LLM 评测领域 2026 年的共识是 「deterministic gates the judge」(确定性闸门把守 judge),而不是「LLM 取代规则」。FutureAGI(2026-02 发布、2026-05 更新)的实测口径:确定性检查在 LLM judge 触发之前就能拦住 30%-60% 的生产失败——断裂的 JSON、缺失的引用、格式错误的工具调用、策略违规。原话:「don't replace the judge: gate it.」

把这条搬到 SAR 场景,得到一个更强的论断:规则模板不只是「便宜的预筛」,它是 LLM 必须打败的对照组(control arm)。 逻辑链:

没有基线时:              有基线时:
LLM SAR 评分 = 82/100     规则模板基线 = 78/100
  ↑ 这个 82 好不好?        LLM SAR     = 82/100
  无从判断                  ↑ LLM 净增益 = +4 分(且要付 token 成本 + 幻觉风险)
                            ↑ 这 +4 是否值得?可以决策了

反直觉洞察①(先有"愚蠢但确定"的基线,LLM 才有参照系):工程直觉是「LLM 更强,直接上 LLM,模板是临时凑数的」。错了。模板基线的价值恰恰在于它笨——它笨得确定、笨得可复现、笨得永不幻觉。 它给出的是「一个不犯事实错误的系统能达到的可读性/完整性下限」。LLM 若连这个笨基线都打不过(尤其在事实忠实维度),就证明 LLM 的「流畅」是用幻觉换来的——这正是 Day 73 要量化的核心风险。没有基线,你永远不知道 LLM 的提升是真本事还是「把话说漂亮了但编了数据」。

这与 Day 17 judge 校准的精神同源:Day 17 说「judge 这个评测器本身也要被评测」;今天说「LLM 生成器的好坏,要相对于一个确定性生成器来评测」。两条都是拒绝绝对分数、坚持相对参照

B. SAR 5W1H 槽位填充算法:模板生成器在做什么

模板生成器不是字符串拼接那么简单——它是一个结构化槽位填充(slot filling)状态机,每个槽位的值都强制来自规则引擎的证据链(assessment.hits[].evidenceTxIds),无任何自由文本。FinCEN SAR 叙述指引(112003 监管文档,经典监管基准)规定叙述须覆盖 5W1H:who/what/when/where/why + how(method of operation)。Abrigo(2024-10)的工程化拆解给出每个槽位应填的数据点:

槽位FinCEN/FFIEC 要求填什么模板取值来源(确定性)
Who主体身份、账号、风险标记c.parties[subjectPartyId]riskFlags
What触发 SAR 的交易/活动citedTxs(证据交易,按 dayOffset 排序)
When一次性 or 模式 + 时间线minDay/maxDay、窗口天数
Where分支/渠道/对手t.channelcounterpartyName
Why为何可疑(简洁)assessment.hits[].description + 得分
How手法/模式如何形成TYPOLOGY_METHOD[topTypology] 固定段

槽位填充算法(伪代码,对应 draftSar() 实现):

function fillSlots(case, assessment):
    citedTxIds = dedupe(flatten(assessment.hits.map(h => h.evidenceTxIds)))
    citedTxs   = case.transactions
                   .filter(t => citedTxIds.has(t.id))
                   .sortBy(t => t.dayOffset)         # When 的时间线强制有序

    assert ∀ section: section.body 中每个数值
           都能 trace 回 citedTxs 或 assessment   # 不变式:零自由数值

    sections = [
       fill("引言",  who=subject, what=alertReason, amount=Σ citedTxs),
       fill("Who",   subject, accounts, riskFlags),
       fill("What/When/Where", citedTxs, [minDay,maxDay], channels),
       fill("Why",   assessment.hits, scores, threshold),
       fill("How",   TYPOLOGY_METHOD[assessment.topTypology]),  # 查表,非生成
       fill("总结",  recommendation(topTypology, citedTxIds.length)),
    ]
    return { sections, generatedBy:'rule-template', citedTxIds }

关键不变式:叙述里出现的每一个金额、日期、交易 ID,都能反向追溯到 citedTxsassessment——这是模板「永不幻觉」的机械保证,也是 Day 72 LLM 版要用「引用锚点」去逼近、却无法 100% 保证的性质。Abrigo(2024-10)的两条最佳实践也内建进模板:「先讲可疑活动、不堆机构历史」(引言段直接进 alertReason)、「交易按时间顺序、简洁」(sortBy(dayOffset))。

反直觉洞察②(FinCEN 2025 改口"质量优于数量",对模板反而是利好):FinCEN 2025-10 SAR FAQ(MoFo 2025-10-14 解读)把口径从「填满所有字段」转向「质量优先、给执法可操作信息」。直觉以为这对死板模板不利(模板不会「分析」)。恰恰相反——「质量优于数量」意味着叙述要短、要准、要可操作,而模板的强项正是「准」(零幻觉、每个数据点可追溯)。模板的弱项是「分析洞察」——而这正好划出了 LLM 唯一应该被允许增值的窄口子:在不碰事实的前提下补充模式解读。这条边界是 Day 72 prompt 设计的纲领。

C. 三组 evals 每日跑防退化:基线指标与 CI 日跑

基线确立后,要把它的指标钉死,否则后续代码改动(改模板措辞、改证据筛选)可能悄悄让基线退化,而 LLM 对照的「分数线」跟着浮动,比较就失真了。三组 evals 每日跑(CI gate,呼应 Day 19 阻断式 eval gate):

eval 组指标基线目标值(v1 设计门)退化即报警
① 槽位覆盖6 槽位(5W1H+How)非空率有证据案件 = 100%任一槽位空→fail
② 引用一致性叙述引用的 txId ⊆ 证据集1.0(无幻觉引用)<1.0→fail(出现证据外引用)
③ 可读性下限段落数 / 平均段长 / 必含关键词6 段、含「BSA/CTR/类型学名」缺结构→fail

引用一致性(②)的判定算法是集合包含检查,纯确定性、亚毫秒:

function citationConsistency(draft, assessment):
    evidence = Set(flatten(assessment.hits.map(h => h.evidenceTxIds)))
    cited    = Set(draft.citedTxIds)
    # 模板的引用必须是证据集的子集(不能引用证据外的交易)
    phantom  = cited \ evidence            # 集合差:幻觉引用
    return { consistent: phantom.size == 0, phantomIds: phantom }

对模板而言,②永远 = 1.0(因为 citedTxIds 直接由 assessment 推导,结构上不可能产生 phantom)——这正是基线的意义:它把「引用一致性」的天花板(1.0)和地板(1.0)合二为一,给 Day 73 的 LLM 版定下一条硬线:LLM 的引用一致性只要 < 1.0,就在这个维度上输给了模板。

FutureAGI(2026-02)的分层评测三段在这里落地:确定性 floor(每请求都跑,亚毫秒)→ 分类器 triage → LLM judge。本项目的①②③就是「确定性 floor」,跑在每次 CI;LLM judge(Day 17 已校准 κ≥0.6)只评模板和 LLM 都难以确定性量化的语义维度(如「分析洞察是否到位」)。

反直觉洞察③(基线也会退化,且退化最隐蔽):团队往往只盯着 LLM 的指标波动,默认「规则系统是稳定的」。但模板的退化最隐蔽——有人改了证据筛选逻辑、或调了 TYPOLOGY_METHOD 措辞,槽位覆盖悄悄从 100% 掉到 95%,而你还在拿这个退化后的基线当 LLM 的「分数线」,于是 LLM 看起来「进步了」其实是基线退步了。基线必须和被测系统享受同等的 CI 监控待遇。 这就是①②③每日跑、而非「一次测完锁死」的原因。

设计要点/决策表

要点决策理由
上 LLM 前先确立规则模板为 baseline无基线则 LLM 分数无参照系(FutureAGI「gate the judge」)
基线生成方式纯规则槽位填充,零自由文本复现性 + 零幻觉,满足 SAR 可审计要求
槽位结构FinCEN 5W1H + How监管指引(112003)+ Abrigo 工程拆解
引用一致性目标模板恒 = 1.0结构上 citedTxIds ⊆ evidence,给 LLM 定硬线
evals 频率①②③每日 CI 跑基线也会退化,须与被测系统同等监控
LLM judge 用在哪仅评确定性测不了的语义维度分层评测:确定性 floor 先拦 30-60%
降级路径LLM 故障→瞬时回退模板模板确定性=安全网,案件不卡死

对本项目的落地

  • src/aml/sarDraft.ts 正式标注为 baseline:在文件头注补一行「本模板是 P3 LLM 版的对照基线(control arm),其指标①②③是 Day 73 LLM 对照的分数线」。generatedBy: 'rule-template' 字段保留为基线标识,LLM 版将新增 generatedBy: 'llm' 与之区分(同一 SarDraft 接口,便于 A/B 对照)。
  • 新建 src/aml/__tests__/sarBaseline.test.ts:对 66 案金标逐案跑①槽位覆盖、②引用一致性(实现 C 节 citationConsistency 集合包含检查)、③可读性下限(段落数/关键词正则)。断言模板②恒 = 1.0;任一案①<100% 或②<1.0 即 fail,阻断 merge(接 Day 19 CI gate)。
  • 基线指标固化进 evalBaseline.ts:把模板在 66 案上的①②③聚合值写入 evalBaseline 的基线快照(与 P1 已有的规则 recall/FPR 同模式存放),Day 73 LLM 对照直接读这个快照做差值(LLM 净增益 = LLM 分 − 模板基线分)。
  • 诚实标注:模板基线为已实现态(P1 落地);①②③的 CI 日跑为 W-本周新增;LLM 对照(Day 73)、降级路径(LLM 故障回退模板)为后续计划态,不谎称已接生产。模板的「How」段为查表固定文案,不具备 LLM 的模式解读能力——这是基线的已知上限,写进文件头注。

参考资料

  1. FinCEN — Guidance on Preparing A Complete & Sufficient Suspicious Activity Report Narrative(SAR 叙述须覆盖 who/what/when/where/why + how;method of operation 重要性)112003 监管文档 (2003-11,经典监管基准)
  2. Abrigo — Mastering SAR narratives: Examples & best practices(5W1H 各槽位填什么数据点;先讲可疑活动、交易按时间顺序、留存 5 年、执法为主要读者)(2024-10)
  3. FinCEN / Morrison Foerster — FinCEN Streamlines SAR Guidance: New FAQs(2025-10 改口「质量优于数量、给执法可操作信息」;结构化 $10,000 附近不必然报 SAR)(2025-10-14)
  4. FutureAGI — Deterministic LLM Evaluation Metrics (2026): The Eval Floor(确定性检查在 judge 前拦 30-60% 失败;「deterministic gates the judge / don't replace the judge: gate it」;schema/regex/exact-match/citation-validity 五类确定性检查)(2026-02-15,2026-05-20 更新)
  5. 本仓库 src/aml/sarDraft.ts(规则模板槽位填充实现)、src/aml/evalBaseline.ts(基线快照口径)、docs/aipa/day19-blocking-ci-eval-gate.md(CI gate)、docs/aipa/day17-judge-calibration.md(评测器也要被评测)(2026-06)

SOTA 检查 (2026-06-11)

  • 「确定性基线 gate LLM judge」是 2026-06 评测主流:FutureAGI(2026-02/05)、Confident AI、Evidently 口径一致——「deterministic floor → classifier triage → LLM judge」三层分摊是当前 SOTA 评测架构,确定性基线作为 LLM 的对照组未见被取代。
  • 是否仍是 SOTA:✅ 是。规则模板作为「control arm」在受监管文本生成(SAR/合规报告)场景,2026 仍是必备对照——监管要求复现性与可审计,确定性模板天然满足,LLM 必须证明净增益才有部署理由。
  • FinCEN 指引时效:SAR 叙述 5W1H 结构源自 2003-11 监管文档(仍现行有效);2025-10 FAQ(MoFo 解读)的「质量优于数量」转向是最新口径,已纳入本笔记「质量优先反而利好模板的'准'」论断;W3 须复查 FinCEN 是否有 2026 进一步更新。
  • 过时认知警示:「LLM 更强所以直接上 LLM、跳过规则基线」是过时工程直觉——2026 的教训是「没有确定性参照系,LLM 的提升无法与幻觉风险做权衡」;本笔记反直觉洞察①即针对此。
  • 待跟踪:Day 73 拿到 LLM 对照实测后,若 LLM 在引用一致性维度 < 1.0(输给模板),需在 prompt(Day 72 引用锚点)层加固;若 FinCEN 2026 出新 SAR 字段要求,回填①槽位覆盖的目标集。
  • WebSearch 验证关键词:「deterministic LLM eval floor gate the judge 2026」「FinCEN SAR narrative 5W1H guidance 2025」