# 6.2 摘要与信息提取

## 6.2.1 抽取式方法

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

### 关键句提取

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

**TextRank 算法**

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

**基于嵌入的方法**

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

### 关键片段提取

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

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

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

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

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

## 6.2.2 生成式方法

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

### 大语言模型摘要

直接使用 LLM 生成摘要：

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

技巧：

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

### 递进式摘要

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

{% @mermaid/diagram content="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调用的复杂工作流，既提高了成功率，也降低了因重复计算导致的成本浪费。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/context_engineering_guide/di-er-bu-fen-he-xin-ji-shu-yu-ce-le/06_compress/6.2_summarization.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
