设计一个合同审查助手:长文档、条款比对、风险标注

Q8-04场景设计 · 长文档审查与条款比对常见场景设计五步结构长文档缺失检测条款比对召回优先责任边界

谁在问:法务科技、金融、保险场景;面试官往往自己被「漏报」坑过,会往召回率方向压

口语化问法

  • 法务每天看几十份合同,想让 AI 先过一遍,你怎么做?
  • 一份合同六十页,怎么让模型看得全?
  • 怎么让它发现『这份合同少了违约责任条款』?

考察意图

这道题有一个隐藏的核心考点,能不能答出来直接决定分数:

RAG 擅长找「有什么」,不擅长发现「缺什么」。 而合同审查最要命的需求恰恰是「缺了哪一条」——缺失的条款在文档里根本不存在,检索不出不存在的东西。答不出这一点,说明没在这类场景真正做过。

其余三层:长文档怎么处理(不是简单切块)、召回率优先于精确率(漏报的代价远大于误报)、责任边界怎么划(法律场景的必答题)。

参考答案

图 2 · 60 分与 90 分差在哪:代价、演进、怎么验证

60

60 分答案(及格线)

把合同解析成文本,按条款切块建索引,用户提问时检索相关条款回答。风险标注可以预先定义一批风险点,让模型逐条判断有没有命中,命中就标出来并给出原文位置。再和标准模板做对比,找出不一样的地方。

方向对,但它是一个「检索式」方案——用它来找「合同里关于付款的约定是什么」没问题,用它来发现「这份合同没有约定违约金」就会漏。而后者才是法务真正怕的那件事。

90

90 分答案(有生产经验的回答)

① 先问四个问题:合同类型标准化程度多高——是同一套模板改改,还是每份都不一样?有没有现成的标准条款库或审查清单?审查目标是「找风险」还是「找与我方模板的偏离」——这两件事的做法完全不同。谁用——法务复核(可以容忍误报)还是业务自助(误报会让人不敢用)?

假设:以采购合同为主、有一份内部标准模板和一份三十条的审查清单、目标是辅助法务复核、量级每天几十份。

② 基线:不是 RAG,是「清单驱动的逐条核查」。 拿那三十条审查清单,把合同按条款结构切开,每一条清单项都对全文过一遍,输出三态:有 / 无 / 有但偏离,并给出原文位置。这套东西最土,但它天然能发现「缺失」——因为它是从清单出发去找证据,而不是从文本出发去检索。基线能到什么水平:标准化程度高的合同类型,常见条款的有无判断可以做得相当稳;不稳的是「偏离」的判断和非标条款。

③ 加挂,每样说代价

  • 检索只做辅助,不做主干解决什么:用户主动提问时(「违约金约定是多少」)用检索快。什么时候不该用:任何涉及「有没有」「全不全」的问题都不能用检索——检索的召回率在这里等价于漏报率
  • 结构化解析:先抽条款编号与层级,让「第 8.2 条」这种引用能被定位。代价:解析规则要按合同模板维护,非标合同解析质量会掉;配套:解析失败时必须显式降级并提示「本文档结构识别失败,已按整体扫描处理」,而不是静默按纯文本走。
  • 长文档处理:六十页放得进窗口不代表用得好——上下文越长,中段的信息越容易被漏掉。做法是分段逐条核查 + 全局摘要回填:每段独立判断,最后再用一份「已发现事实清单」做一次全局一致性检查(比如前面约定的付款周期和后面附件是否冲突)。代价:调用次数上去了,成本按段数线性增长;收益:这是唯一能稳定发现「前后矛盾」的做法。
  • 条款级比对(红线视图):和标准模板逐条对齐,输出「新增 / 删除 / 修改」。代价:对齐本身是个难题,条款顺序和措辞都可能变,纯文本 diff 不可用,要做语义对齐;不该用:没有标准模板的场景,比对无从谈起,此时只能做清单核查。
  • 风险分级与解释:每条标注要给风险等级 + 触发依据 + 原文位置代价:约束了输出自由度、会降低召回;但必须付——法务不会采纳一个说不出理由的标注。

④ 评测:这是本题最需要反直觉的一段——召回率优先。

  • 主指标是漏报率,不是准确率。因为漏掉一条风险条款的代价,可能是几十倍于「多标了三条让法务多看两分钟」。
  • 评测集要按条款类型分层(付款、违约、知识产权、争议解决、保密),因为不同类型的失败原因完全不同;每类的样本要包含缺失样本(人为删掉某条的合同),这是专门测「发现缺失」能力的。
  • 判分靠法务人工,判分成本高,所以评测集要小而精——几十份精标合同远胜几百份粗标。
  • 零成本信号里最有用的是复核修改率:法务把 AI 标注改掉的比例,以及法务额外补标的比例(后者直接就是漏报率的线上代理)。
  • 统计关同样适用:样本几十份的时候,指标波动很大,别拿单次结果下结论。

⑤ 演进:出现「某几类标准合同的漏报率长期为零且样本足够」→ 才考虑对这几类做「低风险自动放行」;出现「非标合同占比上升」→ 该扩清单和模板库,不是换模型。退路:一旦线上出现一次真实漏报,对应条款类型立刻退回全人工复核。

追问链

图 1 · 五层追问树:面试官会往哪儿挖
追问全绕着一个缺口:RAG 找得到「有什么」,找不到「缺什么」

  1. 六十页合同放不进上下文,放进去效果也不好,怎么办?

    期望放得进不等于用得好 —— 长上下文非均匀衰减,中段最易漏,而合同的关键条款常在中段。① 分段逐条核查;② 各段事实汇成短清单做跨段冲突检查(付款周期、生效日期、附件与正文);③ 按条款结构切,固定长度会把「除非…否则…」切成两半
    信号说得出「中段最易漏」「除非/否则被切断」→ 读过真实合同;只说「上长上下文模型就行」→ 没做过
  2. 怎么发现「这份合同缺了违约责任条款」?

    期望检索找不到不存在的东西,只能清单驱动穷举:从「应该有什么」出发逐条找证据。① 清单分级(必备 / 建议 / 场景相关);② 判定输出三态(有 / 无 / 有但不完整),二态会把「约定了但没写金额」判成「有」;③「无」要说明在哪些位置、用哪些同义表述找过
    信号明确说出「必须清单穷举」→ 这是本题分水岭;答「让模型通读全文总结缺什么」→ 没意识到长文档上极不可靠
  3. 误报太多,法务说「还不如我自己看」,怎么办?

    期望调阈值降的是召回,而召回正是这个场景的主指标。① 先看误报结构:集中在少数条款就修那几类规则,均匀分布是模型能力问题;② 改呈现不改阈值 —— 按风险等级折叠,高风险默认展开;③ 一键忽略并记住,把法务反馈变成规则;④ 只对线上证明几乎从不被采纳的那类调阈值,且单独跟踪其漏报
    信号第一反应「调阈值」→ 不理解代价不对称;提出「先改呈现再改阈值」→ 做过给专业用户的产品
  4. 这个系统怎么评?用准确率吗?

    期望准确率不行 —— ① 主指标是漏报率,误报率只是辅指标;② 评测集要人为构造缺失样本,否则测不出「发现缺失」的能力;③ 按条款类型分层,难度差异极大;④ 判分贵,评测集小而精;⑤ 线上拿法务补标率当漏报的零成本代理;⑥ 几十份样本波动大,先过统计关
    信号主动说「主指标是漏报率」→ 理解了这个场景的代价结构;提出「构造缺失样本」→ 真设计过评测集
  5. 法务总监问「如果它漏了一条,公司损失几百万,责任算谁的?」

    期望先定位不先谈技术:辅助复核不替代复核,输出是「待核查清单」不是「审查结论」,写进文案与报告抬头 → ② 每条标注带原文位置与依据,并记录清单版本与模型版本 → ③ 高风险类型、金额超阈值强制全人工复核,写进流程不靠自觉 → ④ 签字的是法务,责任仍在复核人,这也是为什么不做自动放行 → ⑤ 反问「哪几类合同、多大金额以下您接受 AI 预标 + 抽查」
    信号全程讲技术措施不讲定位 → 没做过 toB 法务产品;把责任转成「范围与阈值由业务方共同定」→ 能推动落地
一句「检索不出不存在的东西」就把做过法务产品的人挑出来 —— 第 2 层是分水岭,考的是清单穷举;第 5 层考把责任问题转成范围与阈值,而不是拍胸脯或甩锅。

评分要点

  1. 明确指出 RAG 找不到「缺失」,基线用清单驱动的逐条穷举
  2. 长文档处理用分段核查 + 全局一致性回填,并说得出中段衰减
  3. 切块按条款结构而非固定长度,知道条件句被切断的危害
  4. 条款比对做语义对齐,并承认无标准模板时比对不成立
  5. 评测以漏报率为主指标,且评测集含人为构造的缺失样本
  6. 误报问题先改呈现方式再考虑阈值,不牺牲召回
  7. 线上用法务补标率做漏报的零成本代理
  8. 责任问题从产品定位 + 可核查性 + 强制人工范围三层回答

常见错误

用检索式 RAG 做主干无法发现缺失条款,本题最大的失分点
「用长上下文模型一次读完」忽略中段衰减,长合同上不可靠
按固定长度切块条件句被切断,条款语义被破坏
主指标用准确率 / F1代价结构搞反了,漏报远比误报严重
误报多就调高阈值直接牺牲召回,把主要风险放大
评测集里没有缺失样本测不出这个场景最核心的能力
承诺「不会漏」法务场景不可信,且埋责任雷
完全不谈产品定位和人工兜底范围责任边界讲不清,项目推不动

关联学习