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:科研论文多粒度摘要¶
- 上传 30 页论文,解析分块为 15 块
- Map 并行生成块摘要,Reduce 合并为 5 章节摘要
- Refine 生成全文总览 + 一句话摘要
- 提取关键信息:方法、数据集、指标、结论
- 输出:一句话「本文提出 XX 方法在 YY 数据集上提升 ZZ%」+ 详细摘要 + 关键信息表,均可溯源
流程2:招标文件风险视角摘要¶
- 上传 80 页招标文件,用户选择「风险视角」
- 摘要 Prompt 注入风险关注点(资质门槛、违约条款、付款条件)
- 生成风险摘要 + 风险项清单(含条款编号溯源)
- 法务人员快速定位高风险条款
部署与优化建议¶
- 部署架构:解析与摘要异步队列;Map 阶段并行度高,需 GPU 弹性扩容。
- 性能优化:Map 并行度 = 块数;长上下文模型减少 Refine 轮次。
- 成本控制:短文档直接单次生成不走 Map-Reduce;关键信息提取与摘要合并一次调用。
常见问题与解决方案¶
- 中段信息丢失 → 分层摘要 + Refine 回看全文;对关键章节提高摘要粒度。
- 数字/结论幻觉 → 数值类强制原文校验;结论句必须引用来源。
- 摘要冗余 → Refine 阶段显式去重指令 + 冗余度指标监控。
扩展方向¶
- 多文档综述:跨多篇文档生成主题综述。
- 问答式摘要:用户提问驱动摘要(「这篇论文的创新点是什么」)。
- 摘要微调:按领域微调摘要模型提升专业度。