> For the complete documentation index, see [llms.txt](https://yeasy.gitbook.io/context_engineering_guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yeasy.gitbook.io/context_engineering_guide/di-er-bu-fen-he-xin-ji-shu-yu-ce-le/06_compress/6.2_summarization.md).

# 6.2 摘要与信息提取

## 6.2.1 抽取式方法

抽取式方法从原文中选择重要句子或段落，保持原文表述。

### 关键句提取

基于句子重要性评分选择关键句：

**TextRank 算法**

借鉴 PageRank 思想，根据句子之间的相似度构建图，计算每个句子的中心性分数。

**基于嵌入的方法**

1. 计算每个句子的嵌入向量
2. 计算句子与文档整体的相似度
3. 选择相似度最高的句子

### 关键片段提取

提取包含关键信息的文本片段：

* 包含实体的句子
* 包含数字和日期的句子
* 定义性语句

### 抽取式方法的优缺点

```
优点：
- 保持原文表述，准确性高
- 计算成本相对较低
- 可追溯到原文

缺点：
- 可能不够连贯
- 无法重组或精简表达
- 受限于原文的表述质量
```

## 6.2.2 生成式方法

使用语言模型生成新的精简表述。

### 大语言模型摘要

直接使用 LLM 生成摘要：

```
请将以下内容总结为不超过 200 字的摘要，保留关键信息：
[原始内容]
```

技巧：

* 明确指定输出长度
* 指明需要保留的信息类型
* 提供输出格式要求

### 递进式摘要

对于超长文档，采用递进压缩：

```mermaid
graph LR
    A["长文档"] --> B["分段摘要"]
    B --> C["摘要聚合"]
    C --> D["整体摘要"]
```

图 6-3：递进式摘要流程

1. 将文档分成多个段落
2. 分别生成段落摘要
3. 合并段落摘要
4. 可选：对合并结果再次摘要

### 多级摘要

生成不同详细程度的摘要，按需使用：

| 级别 | 长度        | 用途   |
| -- | --------- | ---- |
| 标题 | 10-20 词   | 快速索引 |
| 简述 | 50-100 词  | 概览   |
| 详情 | 200-500 词 | 深入了解 |

### 生成式方法的优缺点

```
优点：
- 表述更连贯流畅
- 能够重组和精简
- 可按需定制输出

缺点：
- 可能引入新的错误
- 需要额外的 LLM 调用成本
- 可追溯性较弱
```

## 6.2.3 信息提取

从文本中提取结构化信息，是另一种压缩形式。

### 实体提取

提取关键实体：人名、地名、时间、数值等。

```
输入：2026年3月，张三在北京发布了新产品，售价1999元。
输出：
- 人物：张三
- 地点：北京
- 时间：2026年3月
- 价格：1999元
```

### 关系提取

提取实体之间的关系：

```
输入：李四是A公司的CEO，该公司总部位于上海。
输出：
- (李四, 职位, A公司CEO)
- (A公司, 总部, 上海)
```

### 事实提取

提取关键事实点：

```
输入：[长篇报告...]
输出：
1. 2025年营收增长15%
2. 新增用户100万
3. 计划明年进入欧洲市场
```

## 6.2.4 最佳实践

**1. 根据场景选择方法**

不同的压缩方法适合不同场景，选错方法会导致效果大打折扣。需要精确引用原文（如法律、医疗场景）时使用抽取式，保证信息准确；需要流畅表达（如给用户的摘要）时使用生成式；需要结构化处理（如数据分析）时使用信息提取。常见错误是不加区分地使用同一种方法，导致需要引用时找不到原文，需要连贯时读起来支离破碎。

**2. 组合使用多种方法**

单一方法往往难以兼顾多个目标，组合使用能发挥各自优势。典型模式是：先用抽取式选出关键段落，再用生成式整合为连贯摘要；或者生成摘要的同时，附上结构化的关键事实列表。这样既保证信息的可追溯性，又提供流畅的阅读体验。组合时注意控制总长度，避免压缩后反而变长。

**3. 保留元信息以便追溯**

压缩后的内容应该能追溯到原始来源。记录摘要来自哪份文档、第几页或第几段；标注使用的压缩方法（抽取/生成/提取）和生成时间。这些元信息在调试问题时非常有价值——当输出不准确时，可以快速定位是原始数据问题还是压缩过程引入的偏差。元信息的存储成本很低，但排查问题时能节省大量时间。

**4. 建立质量验证机制**

压缩必然带来信息损失，需要验证损失是否在可接受范围内。建立定期抽样检查机制，人工对比压缩前后的内容，评估关键信息是否保留。更重要的是对比压缩前后的任务效果——如果压缩后模型的回答质量明显下降，说明压缩过度或方法不当。用 A/B 测试量化压缩对最终效果的影响，找到压缩率与质量的最佳平衡点。

**5. 多智能体场景下的上下文压缩与持久化执行**

在企业级多智能体系统中，上下文累积特别容易超出限制。实践中常见的模式是 **两部分编排**（Two-Part Orchestration）：

* **初始化智能体（Initializer Agent）**：接收用户的原始需求，进行查询理解、计划分解，并生成对下游智能体的结构化指令和压缩后的上下文
* **编码智能体（Coding/Execution Agent）**：专注于具体任务执行，工作上下文已被精心构建和压缩，避免冗余信息导致的上下文爆炸

**持久化执行与状态恢复**（Durable Execution Pattern）：

为了在长时间运行的智能体流程中提高可靠性，应该采取：

1. **步骤化执行**：将长任务分解为原子性的步骤，每步生成可持久化的输出（Step Artifacts）
2. **检查点保存**：在完成关键步骤后保存完整的执行状态，包括输入、中间结果、输出和元数据
3. **失败恢复**：如果执行中断（网络问题、模型超时等），可以从最后一个成功的检查点重新开始，而不需要重新计算前面的步骤
4. **可重放验证**：使用保存的工件重新执行同样的操作，验证结果的确定性和一致性

这种模式特别适合批量处理、数据管道或需要跨多个 API 调用的复杂工作流，既提高了成功率，也降低了因重复计算导致的成本浪费。
