如何采用金字塔方法(Pyramid Method)评估摘要事实覆盖率?
解读
在国内大模型落地场景中,摘要事实覆盖率直接决定生成内容能否通过监管合规审查、客户验收以及线上 A/B 测试。面试官问“金字塔方法”,并不是想听“把摘要拆成三层”这种字面解释,而是考察候选人能否用分层粒度、逐层召回、可追溯可量化的思路,把“事实”从原文到摘要的“不丢失、不幻觉”做成可落地的工程指标,并嵌入 LLMOps 闭环。回答时必须体现:
- 对中文语料特点的适配(缺主语、指代、行政术语);
- 对百亿模型推理成本的敏感(不能全量上 GPU 做 entailment);
- 对监管留痕的要求(每一条事实必须能回溯到原文片段及政策依据)。
知识点
- 金字塔方法核心:自顶向下三层——主题级(Topic)→命题级(Proposition)→原子事实级(Atomic Fact),粒度逐层变细,覆盖率逐层累加。
- 原子事实抽取:用中文 UIE+SPO 方案(Subject-Predicate-Object)把长句拆成<主语,谓词,宾语>三元组,解决中文省略主语问题;再用指代消解把“该政策”“其”还原为实体。
- 对齐算法:
- 粗召回:SimCSE 中文句向量 + HNSW 索引,毫秒级从原文捞候选片段;
- 精匹配:DeBERTa-v2 中文蕴含模型微调“事实级 NLI”任务,输出“蕴含/中立/矛盾”概率,阈值 0.82 以上才计为“覆盖”;
- 幻觉检测:对摘要中无法对齐的原子事实,标记为新增幻觉(Hallucination),单独计入“幻觉率”指标。
- 覆盖率公式:
Coverage = |A∩B| / |A|,其中 A 为原文原子事实集合,B 为摘要可对齐集合;同时输出分层覆盖率(Topic/Proposition/Atomic)供运营侧逐层下钻。 - 工程落地:
- 离线阶段:用 Spark 批处理把千万级文档预抽成原子事实,存MongoDB+向量字段,建事实图谱;
- 在线阶段:摘要生成后,Kubernetes 微服务异步调用金字塔评估接口,100 字摘要 200 ms 内返回三层覆盖率;
- 持续监控:Prometheus 上报Atomic-Coverage<0.95或Hallucination>0.03即触发告警,自动回滚模型版本并推送人工复核工单。
- 合规留痕:每条原子事实写入区块链存证(长安链 BSN 节点),确保监管可随时抽查“摘要—事实—原文”三元组。
答案
“我在上一家公司负责政务热线工单摘要,采用金字塔方法评估事实覆盖率的完整流程如下:
第一步,原子事实抽取。用自研中文 UIE 模型把原文拆成 SPO 三元组,平均 300 字工单可拆 18 条原子事实;针对中文缺主语,加了政务实体词典补全指代。
第二步,三层金字塔对齐。主题层用 TextRank 提取关键词,命题层用 OpenIE 抽整句,原子层用 SPO。对摘要同样抽三层,然后逐层做向量召回+NLI 精排,阈值 0.82。
第三步,指标计算。Atomic Coverage 达到 96.4%,Proposition 92%,Topic 100%;同时幻觉率 1.7%,满足市政客户≤2% 的 SLA。
第四步,LLMOps 闭环。评估服务封装成 RESTful,每次摘要生成后 200 ms 内返回覆盖率;GitLab CI 自动把指标写入 Prometheus,低于阈值即回滚并@责任人。
第五步,合规留痕。所有原子事实及其对齐结果写入长安链,监管抽查时可直接出示哈希值,证明摘要无政治事实遗漏。”
拓展思考
- 如果原文是长文档 2 万字以上,金字塔方法如何在不牺牲精度的情况下把耗时控制在 1 s 内?
→ 可引入滑动窗口+层次摘要策略:先用LED 中文长文本模型做段落级摘要,再在段落摘要上跑金字塔,避免一次性抽 2 万字的原子事实。 - 当业务要求**“只关注政策数字类事实”(如补贴金额、截止日期)时,如何改造金字塔?
→ 在原子事实层增加正则+量化词性规则**过滤,仅保留含“数字+量词+单位”的三元组,Coverage 只计算这类事实,既减少算力又贴合业务。 - 若出现**“反向幻觉”——原文没有但摘要补充了背景知识且正确——是否强制判为幻觉?
→ 国内监管目前“零容忍新增事实”,即使正确也需标注为外部知识注入**,走人工审核通道;技术上可把该类标记为Attributed-Unknown,单独 bucket,不纳入 Coverage 分母,保证指标严格合规。