跳转至

09 - 文档摘要生成

项目背景与目标

某研究院每日产出与接收大量长文档:科研论文、技术报告、行业白皮书、招标文件、合同,单篇动辄 50-200 页。研究人员花费大量时间阅读筛选,决策者难以快速获取要点。传统抽取式摘要仅能拼凑原文句子,难以提炼跨章节结论与隐含关系。企业希望构建长文档自动摘要系统,支持「分块摘要 + 全文总览 + 关键信息结构化提取」,输出可控长度、信息保真、可溯源的高质量摘要,将单篇 100 页文档阅读提炼时间从 2 小时降至 5 分钟。

核心目标: 1. 支持 200 页以上长文档摘要,信息保真度 ≥ 90% 2. 多层次摘要(一句话/段落/章节/全文) 3. 关键信息结构化提取(实体、数字、结论、待办) 4. 摘要可溯源到原文位置

预期价值:加速文献调研、辅助决策、降低阅读门槛、文档资产可检索。

需求分析

用户角色与场景 - 研究人员:论文快速筛选、综述撰写 - 决策者:报告快速浏览、关键数据获取 - 法务/采购:合同/招标文件要点提取 - 文档管理员:批量摘要生成建索引

功能需求列表 - 多格式文档解析(PDF/Word/扫描件) - 分层次摘要(一句话/摘要段/章节摘要/全文总览) - 关键信息提取(实体、数值、结论、风险、待办) - 自定义摘要视角(技术视角/商业视角/风险视角) - 摘要与原文位置溯源(点击跳转) - 批量摘要与多文档对比摘要 - 摘要质量评估(覆盖率、冗余度)

非功能需求 - 性能:100 页文档摘要 < 3 分钟 - 准确性:关键数字与结论零幻觉 - 可用性:99% - 安全:涉密文档私有化处理

约束条件:扫描件需 OCR;公式图表需特殊处理。

技术选型说明

层次 技术选择 选型理由
文档解析 Unstructured + Marker 保留结构、公式、表格
LLM Qwen2.5-72B 长上下文 128K 上下文,单次处理大段
Agent 框架 LlamaIndex 文档处理与摘要链成熟
编排 Map-Reduce + Refine 分块并行 + 增量精炼
后端 Python + Celery 异步处理长文档
部署 K8s + GPU 私有化

架构设计

flowchart TD
    DOC[长文档] --> PARSE[结构化解析]
    PARSE --> CHUNK[语义分块]
    CHUNK --> MAP[分块摘要 Map]
    MAP --> RED[全局归约 Reduce]
    RED --> REF[Refine 精炼]
    REF --> OUT{输出层}
    OUT --> S1[一句话摘要]
    OUT --> S2[摘要段]
    OUT --> S3[章节摘要]
    OUT --> S4[全文总览]
    OUT --> KE[关键信息结构化]
    OUT --> SRC[溯源映射]

采用 Map-Reduce-Refine 范式:分块并行摘要(Map)→ 归约合并(Reduce)→ 增量精炼去冗余(Refine)。输出层按需求生成多粒度摘要与结构化信息,并维护摘要到原文位置的映射表实现溯源。

关键模块实现思路

模块1:结构化解析与分块

  • 思路:用 Marker/Unstructured 解析 PDF 保留标题层级、表格、公式、图注;按章节语义分块,块带「章节路径/页码」元数据;表格与公式独立成块。
  • 关键点:分块边界尽量与章节对齐,避免割裂论证逻辑。

模块2:Map-Reduce-Refine 摘要

  • 思路:
  • Map:每块生成 100-200 字摘要,并行执行。
  • Reduce:按章节合并块摘要,生成章节摘要。
  • Refine:用全文上下文对章节摘要做精炼,去除重复、补充跨章关系,生成全文总览。
  • 关键点:长上下文模型可减少 Map 层数,但完全单次生成易丢中段细节,分层仍必要。
  • 示意:
    def summarize(doc):
        chunks = semantic_chunk(doc)
        block_summs = parallel_map(summarize_block, chunks)
        section_summs = reduce_by_section(block_summs)
        overview = refine(section_summs, doc.meta)
        return {overview, section_summs, block_summs}
    

模块3:关键信息结构化提取

  • 思路:LLM 按预设 schema 提取实体(人/机构/产品/术语)、数值(金额/指标/年份)、结论、风险、待办;每项标注来源块 ID。
  • 关键点:数值类必须原文逐字校验,避免数字幻觉;提取 schema 可按文档类型配置(合同 schema vs 论文 schema)。

模块4:溯源与质量评估

  • 思路:摘要每句关联来源块 ID,前端点击跳转原文;质量评估指标:覆盖率(原文关键信息被摘到的比例)、冗余度(摘要内重复)、压缩比。
  • 关键点:溯源是可信度保障,无来源句标记为「补充说明」。

核心流程详解

流程1:科研论文多粒度摘要

  1. 上传 30 页论文,解析分块为 15 块
  2. Map 并行生成块摘要,Reduce 合并为 5 章节摘要
  3. Refine 生成全文总览 + 一句话摘要
  4. 提取关键信息:方法、数据集、指标、结论
  5. 输出:一句话「本文提出 XX 方法在 YY 数据集上提升 ZZ%」+ 详细摘要 + 关键信息表,均可溯源

流程2:招标文件风险视角摘要

  1. 上传 80 页招标文件,用户选择「风险视角」
  2. 摘要 Prompt 注入风险关注点(资质门槛、违约条款、付款条件)
  3. 生成风险摘要 + 风险项清单(含条款编号溯源)
  4. 法务人员快速定位高风险条款

部署与优化建议

  • 部署架构:解析与摘要异步队列;Map 阶段并行度高,需 GPU 弹性扩容。
  • 性能优化:Map 并行度 = 块数;长上下文模型减少 Refine 轮次。
  • 成本控制:短文档直接单次生成不走 Map-Reduce;关键信息提取与摘要合并一次调用。

常见问题与解决方案

  • 中段信息丢失 → 分层摘要 + Refine 回看全文;对关键章节提高摘要粒度。
  • 数字/结论幻觉 → 数值类强制原文校验;结论句必须引用来源。
  • 摘要冗余 → Refine 阶段显式去重指令 + 冗余度指标监控。

扩展方向

  • 多文档综述:跨多篇文档生成主题综述。
  • 问答式摘要:用户提问驱动摘要(「这篇论文的创新点是什么」)。
  • 摘要微调:按领域微调摘要模型提升专业度。