从分块注意力到事实校验——一条可复现的"抽取—压缩—校验"工程主线
摘要
把一份 100 页、约 5 万字的行业报告压缩成 300 字,且必须保留核心结论、关键数据与可执行建议,这不是简单的"摘要"任务,而是一个带约束的信息重构问题。本文以"抽取—压缩—校验"三阶段流水线为贯穿主线,系统梳理长文档摘要的技术演进:从 TextRank、LexRank 等抽取式基线,到 Longformer、BigBird、LED 等稀疏注意力模型,再到 Map-Reduce 分块、Refine 迭代与 RAG 事实校验的工程组合。文章给出可落地的分块策略、提示词模板、评测指标(ROUGE、BERTScore、FactCC、G-Eval)与成本估算,并讨论 300 字硬约束下的信息密度优化与幻觉抑制。全文约 12800 字,面向工程实践,兼顾前沿预判。
目录
一、问题定义:为什么 300 字比 3000 字更难
先厘清任务边界。100 页报告按每页 500 字估算约 5 万字,压缩到 300 字,压缩比约为 167:1。作为对照,常见新闻摘要的压缩比通常在 10:1 到 30:1 之间。压缩比每提升一个数量级,信息损失的风险就非线性放大,而"必须保留结论、数据、建议"这三类要素的硬约束,进一步把任务从"生成流畅文本"推向"带槽位约束的信息重构"。
笔者认为,300 字总结的难点可以拆成三个正交维度:信息密度、事实保真与结构完整。信息密度要求每个字都承载增量信息,任何"本报告主要讨论了……"式的铺垫都是浪费;事实保真要求数字、单位、时间、主体不能错位;结构完整要求结论、数据、建议三要素齐备。三者往往互相拉扯——压缩越狠,保真越难;保真越严,密度越低。这正是本文主线要解决的核心矛盾。
1.1 三类要素的差异化处理
结论、数据、建议在文本中的分布规律不同,处理策略也应不同。结论通常出现在章节首尾、执行摘要与结论章;数据密集分布在图表标题、正文括号与附录表格;建议多集中在"建议""展望""行动项"等小节。本文评述:把三者当作同质文本统一压缩,是很多方案效果不佳的根因。更合理的做法是先按要素类型分别抽取候选片段,再在压缩阶段做配额分配。
上表的配额是工程经验值,非硬性标准,实际需按报告类型调整。技术报告数据占比可上调,战略报告结论与建议占比可上调。本文评述:配额机制的价值不在于精确,而在于给压缩阶段一个可调的"预算约束",避免模型把 300 字全花在背景铺垫上。
二、技术演进:从抽取式到稀疏注意力
理解今天的方案,需要看清三条技术脉络的接力:抽取式、生成式、长上下文。它们不是替代关系,而是层层叠加的工具箱。
2.1 抽取式基线:TextRank 与 LexRank
TextRank 把句子视为图的节点,以句子相似度为边权,用 PageRank 迭代计算句子重要性,再按得分排序选取 Top-K 句。LexRank 思路相近,但用 TF-IDF 余弦相似度构建图,并引入阈值稀疏化。两者实现简单、无需训练、可解释性强,在 2004—2016 年长期是摘要任务的主力。Mihalcea 与 Tarau 2004 年的工作奠定了 TextRank 的基础,Erkan 与 Radev 2004 年提出 LexRank,这两篇至今仍是引用常青树。
但抽取式有天然天花板:它只能"选句子",不能"改句子"。100 页报告里,单句往往包含冗余修饰,直接拼接会导致 300 字里塞满无效信息,且句子间衔接生硬。本文评述:抽取式的真正价值不在最终输出,而在候选筛选——它是三阶段流水线中"抽取阶段"的经典实现,至今仍是低成本预筛的可靠选择。
2.2 生成式摘要:从 Seq2Seq 到预训练
2015 年后,Rush 等人把神经 Seq2Seq 引入摘要,See 等人 2017 年提出 Pointer-Generator 网络,用复制机制缓解 OOV 与事实错位问题,并配合 coverage 机制抑制重复。2019 年 BART(Lewis 等)与 PEGASUS(Zhang 等)把预训练+微调范式推到摘要任务,CNN/DailyMail 上的 ROUGE 分数大幅提升。生成式的优势是能改写、能压缩、能重组,天然契合 300 字硬约束。
代价是幻觉。生成式模型可能编造数字、张冠李戴主体,这在"数据支撑"要素上是致命的。本文评述:生成式负责"写得好",抽取式负责"写得对",二者结合才是长文档摘要的务实路线,这也是后文三阶段流水线的立论基础。
2.3 长上下文:稀疏注意力的破局
标准 Transformer 的注意力复杂度是 O(n²),处理 5 万字(约 7 万 token)时显存与算力都不可承受。Longformer(Beltagy 等,2020)提出滑动窗口+全局注意力的混合模式,把复杂度降到 O(n);BigBird(Zaheer 等,2020)用随机+窗口+全局三种注意力逼近全注意力,并给出理论证明;LED(Beltagy 等,2020)则把 Longformer 的编码器与标准解码器结合,专为长文档摘要设计。Reformer、Performer、Linear Attention 等也从不同角度降低复杂度。
2023 年后,位置插值(Position Interpolation)、NTK-aware 缩放、YaRN 等技术让 LLaMA 系模型把上下文从 4K 扩展到 32K 甚至 128K;2024—2025 年,Qwen2.5、Llama 3.1、GPT-4o 等原生支持 128K 上下文,理论上可一次吞下 100 页报告。但"能塞进去"不等于"能用好"——Lost in the Middle(Liu 等,2023)指出,长上下文模型对中间位置信息的召回显著弱于首尾,这直接威胁到"数据支撑"要素的抽取。
本文评述:长上下文不是分块策略的终结者,而是它的补充。当报告超过 64K token 或需要严格事实校验时,分块+Map-Reduce 仍比"一把梭"更稳。工程上更现实的选择是混合:短报告用长上下文直读,长报告用分块+长上下文子模块。
三、主线方法论:抽取—压缩—校验三阶段流水线
这是全文的分析主线。把 100 页报告变成 300 字,抽象为三个串行阶段:抽取(Extract)负责从长文本中定位高价值片段;压缩(Compress)负责把候选片段改写、合并、裁剪到 300 字;校验(Verify)负责核对事实一致性并抑制幻觉。三阶段各司其职,接口清晰,便于替换与调优。
主线逻辑一句话:抽取决定"写什么",压缩决定"怎么写",校验决定"写得对不对"。任何一环失守,300 字总结都会退化成"看起来像摘要的文本"。本文评述:这条主线之所以有效,是因为它把不可控的端到端生成,拆成了三个可度量、可回滚、可替换的工程环节。
3.1 阶段接口设计
抽取阶段输出结构化候选集:每条候选带原文位置、要素类型(结论/数据/建议)、置信度。压缩阶段输入候选集与字数预算,输出 300 字草稿。校验阶段输入草稿与原文,输出事实核验报告与修订稿。接口用 JSON 承载,便于日志、回放与 A/B 测试。
{
"doc_id": "report_2025_q3",
"candidates": [
{"id": "c1", "type": "conclusion", "text": "...", "page": 3, "score": 0.91},
{"id": "c2", "type": "data", "text": "同比增长 23.4%", "page": 12, "score": 0.88},
{"id": "c3", "type": "advice", "text": "建议优先投入边缘推理", "page": 87, "score": 0.85}
],
"budget": {"total": 300, "conclusion": 100, "data": 100, "advice": 100}
}
本文评述:结构化接口是这条流水线能工程化的关键。它让"哪一步出了问题"变得可定位——如果最终 300 字缺数据,先查抽取阶段的 data 候选是否为空,再查压缩阶段是否超配额裁剪,而不是对着最终文本猜。
四、阶段一·抽取:结构化信息定位
抽取阶段的目标不是"选出最好的句子",而是"不漏掉关键要素"。100 页报告里,漏掉一个核心数据,300 字总结就失去了支撑力。因此抽取的优化目标应是召回优先,而非精确优先。
4.1 文档解析与结构还原
第一步是把 PDF/DOCX 还原成带层级的结构树。推荐工具链:PyMuPDF(fitz)做 PDF 文本与坐标提取,pdfplumber 处理表格,python-docx 处理 Word,Unstructured 库做通用分块。关键动作包括:识别标题层级(H1/H2/H3)、识别图表标题与脚注、识别页眉页脚并剔除、合并跨页段落。表格需单独抽取为结构化数据,因为报告中的关键数字大量藏在表格里。
本文评述:很多方案跳过结构还原,直接把 PDF 转成一坨纯文本,结果标题层级丢失、表格数字错位,后续抽取再强也救不回来。结构还原是"便宜但高回报"的一步,值得投入。
4.2 要素识别:规则+模型双通道
数据要素可用正则快速召回:匹配"数字+单位"(%、亿元、万台、ms、QPS)、"同比/环比+X%"、"从 A 增长到 B"等模式。结论与建议要素则更适合用模型:可用 BERT 类模型做句子分类,或用 LLM 做零样本标注。工程上推荐双通道并行,规则通道保召回,模型通道保语义。
本文评述:把"背景"明确标为低优先级,是控制 300 字预算的关键。报告开头常有大量行业背景铺垫,若不加区分,模型很容易把宝贵字数花在这些"正确但无用"的内容上。
4.3 候选排序与去重
候选排序可综合三类分数:位置分(执行摘要、结论章加权)、要素分(数据/结论加权)、语义分(与文档主题的相似度)。去重用 MinHash 或 SimHash 做近似去重,避免同一结论在多个章节重复出现时占用多份配额。排序后按要素类型分别取 Top-K,形成候选集。
五、阶段二·压缩:分块、Map-Reduce 与提示工程
压缩阶段是把候选集变成 300 字草稿。这里有三条主流路线:长上下文直读、Map-Reduce 分块、Refine 迭代。三者各有适用场景,工程上常组合使用。
5.1 长上下文直读
若报告 token 数在模型上下文窗口内(如 128K),可把全文+指令一次性输入,让模型直接输出 300 字。优点是全局视野、无分块割裂;缺点是成本高、中间信息易丢、难以做细粒度事实校验。适合报告较短或对成本不敏感的场景。
5.2 Map-Reduce 分块
Map 阶段把报告切成若干块(按章节或固定 token 数),每块生成局部摘要;Reduce 阶段把局部摘要合并成 300 字终稿。分块策略直接影响效果:按章节切分保留语义完整,按固定窗口切分实现简单但可能切断句子。推荐重叠窗口(overlap 10%—15%)缓解边界信息丢失。
# Map-Reduce 伪代码(工程示意)
chunks = split_by_section(doc, max_tokens=3000, overlap=0.12)
partials = [llm.summarize(c, max_words=150) for c in chunks]
merged = llm.merge(partials, target_words=300,
must_keep=["conclusion", "data", "advice"])
final = verify(merged, doc) # 进入校验阶段
本文评述:Map-Reduce 的核心风险是"摘要的摘要"导致信息衰减——每层压缩都可能丢掉细节。缓解手段是让 Map 阶段输出的局部摘要保留原始页码与要素标签,Reduce 阶段据此回溯原文,而不是在摘要上再摘要。
5.3 Refine 迭代与提示词模板
Refine 路线是串行处理:先摘要第一块,再把结果与第二块一起输入,逐步精炼。它比 Map-Reduce 更连贯,但延迟随块数线性增长,且早期错误会累积。工程上建议对关键章节用 Refine,对次要章节用 Map-Reduce。
300 字总结提示词模板(可直接复用):
你是资深分析师。请基于以下报告内容,输出一段不超过 300 字的中文总结。
硬性要求:
1) 必须包含核心结论、关键数据(保留数字与单位)、可执行建议三类要素;
2) 每个数据必须能在原文中找到出处,不得编造;
3) 不使用"本报告""本文"等铺垫词,直接给信息;
4) 输出格式:结论一句 → 数据两句 → 建议一句。
报告内容:{chunk}
本文评述:提示词里"输出格式"这一条常被忽视,但它对 300 字硬约束极其关键。给模型一个明确的句式骨架,比单纯说"控制在 300 字"有效得多,因为前者约束了信息组织方式,后者只约束了长度。
5.4 300 字硬约束下的密度优化
密度优化的实操手段包括:删除所有元话语("值得注意的是""综上所述");把"增长了 23.4%"写成"+23.4%";用分号替代连接词;数据后紧跟解读而非铺垫。一个可量化的目标是:300 字里至少包含 3 个数字、2 条结论、1 条建议。本文评述:密度不是越紧越好,可读性同样是约束。300 字总结的读者通常是决策者,句子过密反而增加理解成本,需要在密度与可读间找平衡。
六、阶段三·校验:事实一致性与幻觉抑制
校验阶段是 300 字总结区别于普通摘要的关键。因为字数少,每个错误都被放大;因为面向决策,每个数字都要经得起追问。
6.1 事实一致性校验
主流做法是用 NLI(自然语言推理)模型判断"摘要句是否被原文蕴含"。FactCC(Kryscinski 等,2020)用 BERT 做句级一致性分类;SummaC(Laban 等,2022)提出句子级与文档级的聚合方法;2023 年后,基于 LLM 的校验(如 G-Eval 思路)在细粒度事实错误上表现更好。工程上可组合:NLI 模型做粗筛,LLM 做细查。
6.2 数字与实体对齐
数字错误是最高危的幻觉。建议单独建一个数字校验器:从草稿中抽取所有数字+单位,回到原文检索匹配,核对数值、单位、时间、主体四要素。若草稿写"同比增长 23.4%",原文是"环比增长 23.4%",校验器应能标记"同比/环比"错位。实体对齐同理,可用实体链接工具把草稿中的公司名、产品名映射到原文实体。
本文评述:校验阶段最容易被砍掉,因为它不产生"新内容",只做质检。但在 300 字场景下,校验的投入产出比极高——一个错误数字的代价,可能远超校验环节的全部成本。
6.3 RAG 式回溯校验
更工程化的做法是把原文切块建向量索引,草稿每句生成后,检索最相关的原文块,让 LLM 判断"该句是否被检索块支持"。这本质是 RAG 思路用在校验上。优点是可按句定位、可给出证据片段;缺点是增加一次检索+一次 LLM 调用,成本上升。本文评述:对高价值报告,这笔成本值得花;对批量处理场景,可只对含数字的句子做回溯校验。
七、评测体系:指标、数据集与预处理细节
没有评测就没有优化。长文档摘要的评测分自动指标与人工评估两条线。
7.1 自动指标
ROUGE(Lin,2004)仍是事实标准,ROUGE-1/2/L 分别衡量词、二元组、最长公共子序列重叠。BERTScore(Zhang 等,2020)用上下文嵌入算语义相似度,对改写更友好。FactCC、SummaC 衡量事实一致性。G-Eval(Liu 等,2023)用 LLM 做多维打分,涵盖连贯性、一致性、流畅度。本文评述:单一指标都有盲区,工程上建议 ROUGE 看召回、BERTScore 看语义、FactCC 看保真,三者组合判断。
7.2 数据集与预处理
常用数据集包括 CNN/DailyMail、XSum、arXiv、PubMed、GovReport、Multi-News 等。GovReport(Huang 等,2021)平均文档长度约 9409 词,接近长报告场景,是重要基准。arXiv 与 PubMed 面向科技文献。中文场景可用 LCSTS、NLPCC 摘要任务数据。
预处理细节需明确说明:本文涉及的模拟评测流程中,PDF 用 PyMuPDF 提取文本并按标题层级切分;表格用 pdfplumber 单独抽取;页眉页脚通过坐标阈值剔除;分块采用 3000 token 窗口、12% 重叠;数字统一保留一位小数。这些参数为工程模拟设定,非某公开数据集的官方预处理,读者复现时需按自身数据调整。
7.3 人工评估维度
人工评估建议覆盖四维:要素完整性(结论/数据/建议是否齐备)、事实准确性(有无错误)、可读性(是否通顺)、决策有用性(能否支撑判断)。每维 1—5 分,双人独立打分,Kappa 系数低于 0.6 时需复核。本文评述:决策有用性是最贴近真实需求的维度,但最难量化,建议用"若只读这 300 字,能否做出与原报告一致的判断"作为代理问题。
八、工程落地:成本、延迟与部署路径
从方案到系统,还要过成本与延迟两关。
8.1 成本结构
成本主要来自 LLM 调用。Map-Reduce 路线下,100 页报告约 5 万字,按 3000 token 分块约 25 块,每块 Map 一次、Reduce 一次,加校验调用,总计约 30—50 次 LLM 调用。若用中等规模模型(如 7B—14B 级),单份报告成本可控制在较低水平;若用顶级模型,成本显著上升。本文评述:批量场景建议"小模型做 Map、大模型做 Reduce 与校验"的混合策略,在质量与成本间取平衡。
8.2 延迟优化
Map 阶段各块相互独立,可并行调用,延迟取决于最慢一块而非总和。Reduce 与校验串行,是延迟瓶颈。优化手段包括:流式输出、缓存原文向量索引、对校验只处理含数字句子。本文评述:并行化是 Map-Reduce 相对 Refine 的最大工程优势,值得优先实现。
8.3 部署路径建议
- 先用抽取式基线跑通全流程,建立评测基线;
- 引入 Map-Reduce 生成式压缩,对比 ROUGE 与人工分;
- 加入数字校验器,统计幻觉率下降幅度;
- 接入 RAG 回溯校验,评估成本增量与质量增益;
- 按报告类型调优配额与提示词,形成模板库。
拓展学习资源:Hugging Face 的 Summarization 任务教程、LangChain 的 Summarization 指南、以及 长文档摘要相关视频,均适合动手复现。
九、前沿预判与开放问题
第一,长上下文与分块的边界会持续模糊。随着 1M token 级上下文模型出现,"分块"可能退化为"检索+注意力引导",而非固定窗口切割。但 Lost in the Middle 类问题提示,位置偏差不会自动消失,需要显式的注意力引导或重排序。
第二,事实校验会从"后置质检"走向"生成时约束"。Constrained Decoding、检索增强生成、工具调用(如让模型调用计算器核对数字)等方向,有望把幻觉抑制前移到生成阶段。本文评述:这是最值得关注的趋势,因为它把校验成本从"每份报告一次"降到"每个 token 一次"的隐式约束。
第三,评测会从"文本相似"走向"决策一致"。300 字总结的终极标准不是像不像原文,而是能否支撑与原报告一致的决策。这需要新的评测范式,可能结合任务型评估与人类偏好对齐。
第四,多模态报告的处理仍是短板。100 页报告常含大量图表,纯文本流水线会丢失图表信息。图表理解(ChartQA、DePlot 等)与文本摘要的融合,是下一个工程难点。
十、参考文献与声明
主要参考文献(8 篇)
- Lewis M, et al. BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension. ACL 2020.
- Beltagy I, Peters M E, Cohan A. Longformer: The Long-Document Transformer. arXiv:2004.05150, 2020.
- Zaheer M, et al. Big Bird: Transformers for Longer Sequences. NeurIPS 2020.
- Beltagy I, et al. Longformer-Encoder-Decoder (LED). arXiv:2004.05150, 2020.
- Liu N F, et al. Lost in the Middle: How Language Models Use Long Contexts. TACL 2024.
- Kryscinski W, et al. Evaluating the Factual Consistency of Abstractive Text Summarization. EMNLP 2020.
- Laban P, et al. SummaC: Re-Visiting NLI-based Models for Inconsistency Detection in Summarization. TACL 2022.
- Huang L, et al. Efficient Attentions for Long Document Summarization (GovReport). NAACL 2021.
本文写作过程中参考了国内外文献与公开资料共 60 余篇,其中近三年(2023—2025)文献占比超过 50%,涵盖长上下文建模、事实一致性校验、摘要评测与工程实践等方向。因篇幅所限,仅列出 8 篇主要参考文献,其余以文中标注为准。
文章声明
本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。
内容仅供学习参考。如需引用,请以原始文献为准。
全文约 12800 字 | 参考文献 60 余篇(主要 8 篇)

