乐于分享
好东西不私藏

蚂蚁面试官:合规答错,先重训还是先查文档?

蚂蚁面试官:合规答错,先重训还是先查文档?
AI 落地面试深水区 · 第 14 课 · 翻车 case 篇 2/8

合规事故复盘题

上一课讲完文档权限能不能靠 prompt。这课换一道真事故题——AI 答了 7 天前合规已下架的费率,监管点名。复盘翻出 187 条已下架文档,向量库一条都没删。先重训模型,还是先查文档治理?

先把术语翻成人话

trace :一次问答的完整记录

CMS :合规系统,文档源头

metadata :向量库的状态标签

孤儿向量 :源头删了、向量库没删

黑名单 :命中关键词强制走人工

一、面试现场

面试官提问

"金融客服 AI 把一条已下架的费率口径答给用户,被监管点名。你来主导复盘——是先重训模型,还是先翻文档治理?"

蚂蚁 · 合规事故复盘面。候选人答了三分钟,思路是"模型幻觉,加 RLHF 微调"。面试官追了一句:"你看过这条 chunk 在 CMS 里的状态字段吗?"候选人卡住了。

这道题表面问"重训还是改文档",实际在考你能不能区分模型问题和数据问题——把责任推给模型,监管 1 小时止不了血;找对断点,1 小时就能下架。

直接回答 · 9 成是文档治理事故,不是模型幻觉。

二、大多数人怎么答的

典型翻车回答

"合规答错就是大模型幻觉,加 RLHF 微调或在 prompt 里写一句'请遵守合规'就行。"

这个回答错在方向。把过期口径还能召回的事故归到"模型幻觉",等于绕过了真正的责任人——文档生命周期没同步。截至 2026-05-15,主流监管口径仍要求 24 小时内能看到的系统层面动作;RLHF 微调周期长、不可逆、对监管不可解释,靠它修合规口径相当于用大锤砸钉子。

还有一层失误:"加一句 system prompt '请遵守合规' 就能避免"也不行。prompt 是建议不是约束,模型有概率"听话"。合规要的是确定性——已下架的内容物理上不能进入 retrieval 候选集,这是 metadata 状态过滤的事,不是 prompt 的事。

三、深度解析

把合规答错按"责任归属、链路断点、止血手段、长期防线"四个判断拆开看——这四个判断决定了你是 1 小时止血还是 1 周还在重训。

判断 1:合规答错 9 成不是模型幻觉,是文档治理事故

一句话:看 trace 里召回的 chunk 是不是真文档——是真文档而且原文里就有这句话,模型没编,是文档不该出现在候选集。

本次事故 trace 里:相似度 0.82 排第一、prompt 装配正常、答案直接复述了 chunk 原文。模型完全没幻觉,但内容已经过期 7 天。

我认为 · 把责任推给模型是绕开真正责任人——文档生命周期没同步,模型无非把它老实念了出来。

判断 2:CMS→向量库的"下架链路"必须接,光接"上架"是裸奔

一句话:大多数 RAG 项目只接了"上架同步",下架靠人工通知——人一忙就漏,监管不会等你想起来。

本次事故里翻 200 条已下架文档:187 条在 CMS 都标了"已下架",向量库一条都没删,metadata 里既没"是否生效"字段、也没"失效时间"字段。

关键在于 · 下架同步必须事件驱动 + 每小时定时兜底,不能依赖任何"人记得"的环节。

判断 3:黑名单兜底是事中止血、不是事前清理

一句话:query 命中"费率/合规口径"等高敏关键词,强制走人工或固定话术——改一份配置就全量铺开,1 小时上线监管能看到你在动。

但黑名单只挡得住"已知敏感词"的 query,挡不住用户换个问法绕过去,所以是兜底不是终局。

我的优先顺序是 · 第一小时黑名单止血、第一天清孤儿向量、第一周补状态字段、第一个月接反向工作流——越靠前越粗暴、越靠后越长效。

判断 4:metadata 必须带状态字段,检索时默认过滤

一句话:向量库不能只存 chunk 和 embedding,必须带三个状态字段——是否生效、生效时间、失效时间。

检索语句默认拼一句"只查生效中"——物理过滤模型根本看不到下架内容,prompt 劝阻模型看得到只是被建议。

我认为 · 合规要的是确定性,不是概率。能用 metadata 过滤的事,绝不交给 prompt。

四、面试官追问链

追问 1

"怎么证明这次真的是文档问题,不是模型自己编的?"

看 trace 里召回的文档来源就够。

如果 AI 引用的是真实文档而且原文里就有这句话,模型没编——是文档不该出现在候选里。反过来,如果检索根本没召回这条文档、答案却出现了这个口径,那才是模型幻觉。

判断方法 · trace 必须留 5 件东西——用户问题、召回的文档 id、文档片段原文、拼出来的 prompt、最终回答。少一项都没法定位。

追问 2

"黑名单兜底和 prompt 写'请遵守合规',哪个更可靠?"

黑名单可靠得多,三个理由:

① 位置——黑名单在检索之前判断,命中关键词的 query 根本不进 RAG 链路;prompt 是模型输入,模型有概率忽略。

② 可审计——黑名单命中率是确定性数字;prompt 是否生效只能靠抽样审。

③ 速度——黑名单 1 小时上;prompt 改完要跑回归才能上线。

定位方法 · 黑名单 + metadata 状态过滤 + prompt 时间锚点("以下材料截至 X 时间,以最新合规口径为准")三件套并行。

追问 3

"怎么向监管证明,这次事故不会再发生?"

三个数字盯每天:

① 下架到失效的延迟——CMS 标了下架到向量库不再召回,平均要几分钟(目标 5 分钟以内)。

② 孤儿向量数——源头已下架、向量库还在的,每小时核对一次(目标 0)。

③ 合规回归集通过率——准备 50 条"已下架文档对应的高危 query",每天跑一遍,必须 100% 不召回过期内容。

修复路径 · 三个数接到日报、阈值告警走值班;指标稳定 30 天,防线才算立住。

五、合规事故 4 步扛压实战

场景 · 金融客服 AI 周一上午 9:47 被监管点名,单条 trace 触发全链路复盘。下面是从止血到长效防线的完整 4 步动作。

第一步 · 第一小时上黑名单止血 · 把"费率""合规口径""利率"等高敏关键词丢进黑名单,命中的 query 强制走人工或固定话术。改一份配置就全量铺开。1 小时内监管能看到你在动。

第二步 · 第一天清孤儿向量 · 拉一份 CMS 已下架文档清单(这次是 187 条),反向到向量库批量删除对应向量。这一步把事故的物理根源消掉。4 小时内可以清完。

第三步 · 第一周补 metadata 状态字段 · 给向量库加三个字段——是否生效、生效时间、失效时间,把历史数据回填一遍。检索时默认拼一句"只查生效中"。这是结构性修复,不靠任何人记得。

第四步 · 第一个月接反向工作流 · 跟合规部门约定,他们在 CMS 下架文档时直接调一个接口触发"向量库删除"——事件驱动,不依赖人工通知,再加每小时定时核对兜底。真正的长效防线。

↳ 复盘数字

本次事故时间线(数据来源:内部事故复盘):监管反馈到根因定位 90 分钟,黑名单全量上线 1 小时,孤儿向量批量清理 4 小时,metadata 加字段 + 同步任务上线 2 周。事后 60 天,孤儿向量数稳定为 0,无重复事故。

六、本课总结

一句话总结

合规答错 9 成是文档治理事故、不是模型幻觉;第一小时黑名单止血、第一天清孤儿向量、第一周补 metadata 状态字段、第一个月让合规反向触发——四档动作做完,防线就立住。

面试锦囊

先说 · 排查顺序是文档治理在前、模型行为在后;90% 事故停在 CMS→向量库下架链路没接。

再说 · 时间窗顺序——第一小时黑名单、第一天清孤儿、第一周补字段、第一个月接反向工作流;越靠前越粗暴、越靠后越长效。

最后补 · 三个数字证明防线立住——下架到失效 5 分钟内、孤儿向量数 0、合规回归集每日 100% 通过。

判断清单

□ trace 里有没有留全 5 件东西(问题/文档 id/原文/prompt/回答)?
□ 向量库 metadata 是否有 是否生效/生效时间/失效时间 三个字段?
□ 检索语句默认是否过滤掉"非生效"的文档?
□ CMS 下架时是否有事件触发到向量库?是否还有定时核对兜底?
□ 下架延迟、孤儿向量数、合规回归通过率,三个数是否进了日报?
□ 黑名单兜底是否能 1 小时内全量铺开?

别再踩的坑

□ 把合规答错归到"模型幻觉"——错过文档治理这个真正责任人。
□ 只删 CMS 不删向量——孤儿向量是定时炸弹。
□ 用 prompt"请遵守合规"代替 metadata 过滤——建议不是约束。
□ 黑名单当唯一防线——它是兜底,不是事前清理。

下一道面试题

快手面试官:换 embedding 模型,旧向量怎么办?

相关学习资料