【词汇专栏】Chain of Density:密度链——AI摘要的进化
·
Chain of Density:密度链——AI摘要的进化
一句话理解
Chain of Density(密度链,简称CoD) 是一种让AI生成更丰富摘要的技术——不是一次生成摘要,而是让摘要"逐步加密",越来越浓缩、信息量越来越大。
传统摘要(一次性):
"今天看了个新闻,AI有新发展,感觉挺有意思。"
Chain of Density(迭代式):
版本1:"今天AI领域有新动态,主要是模型能力提升。"
版本2:"OpenAI发布新模型,在多个基准测试上取得SOTA。"
版本3:"OpenAI GPT-4o在MMLU上达96分,超越人类专家水平,
在数学推理上提升23%,代码生成质量提升18%。"
为什么需要Chain of Density?
传统摘要的困境
| 问题 | 说明 |
|---|---|
| 问题1 | 长度固定,容易丢失信息——用户说"100字摘要" → 模型截断 → 关键信息被砍 |
| 问题2 | 不知道该保留什么——"重要"的定义因人而异,模型可能保留不重要的细节 |
| 问题3 | 一次性决策,容易出错——摘要只有一次机会,错了就没法补救 |
| 问题4 | 信息密度不均匀——开头详尽,结尾草草收场 |
Chain of Density的解决方案
核心洞察:与其一次性决定"保留什么",不如"逐步决定"
迭代式摘要流程:
原文 → 摘要V1 → 检查 → 摘要V2 → 检查 → V3
↓ ↓ ↓
"发生了什么" "谁、做了什么" "精确数据"
| 每次迭代 | 操作 |
|---|---|
| 1 | 审视当前摘要 |
| 2 | 发现遗漏的关键信息 |
| 3 | 用同等篇幅补充更重要的内容 |
| 4 | 长度不变,但信息更密集 |
技术原理
核心算法
def chain_of_density(document, num_iterations=5):
"""
Chain of Density 摘要生成
"""
# 第一版:完整但浅显的摘要
summary = generate_first_summary(document)
summaries = [summary]
entities_included = set(extract_entities(summary))
for i in range(num_iterations - 1):
# 分析当前摘要
current_summary = summaries[-1]
# 找出原文但不在摘要中的关键信息
missing_info = find_missing_entities(document, entities_included)
# 找出摘要中不太重要的信息(可以精简的)
less_important = find_less_important(current_summary)
if missing_info:
# 用同等篇幅补充更重要的信息
new_summary = enrich_summary(
current_summary,
add=missing_info[:2], # 添加2个重要信息
remove=less_important[:2] # 精简2个次要信息
)
# 更新已包含的实体
entities_included.update(extract_entities(new_summary))
summaries.append(new_summary)
return summaries
实体密度(Entity Density)
CoD的关键指标:Entity Density
Entity = 具体的、可识别的事物
- 人物:OpenAI、Google、Sam Altman
- 组织:公司、机构、政府
- 产品:GPT-4、DALL-E、Claude
- 事件:发布会、收购、发布
- 数字:具体的数据、日期、百分比
- 术语:专业名词、概念
公式:
Entity Density = 摘要中实体数 / 摘要字数 × 1000
| 对比示例 | 摘要 | 实体数 | 密度 |
|---|---|---|---|
| 低密度 | “今天OpenAI发布了新模型,性能很强。” | 2 | 67 |
| 高密度 | “OpenAI GPT-4o在MMLU上达96分,超越人类专家。” | 5 | 167 |
对比传统方法
摘要方法横向对比
| 方法 | 特点 | 优点 | 缺点 |
|---|---|---|---|
| Extractive | 直接提取原文句子 | 保留原话,不会出错 | 信息碎片化 |
| Abstractive | 生成式摘要 | 连贯通顺 | 可能产生幻觉 |
| Query-focused | 针对问题摘要 | 精准回答 | 需要指定问题 |
| Chain of Density | 迭代式浓缩 | 信息密度高 | 计算成本翻倍 |
具体对比
原文:
"2026年3月29日深夜,OpenAI发布了最新推理模型o3,这是继2024年
o1发布后的重大更新。o3在ARC-AGI基准测试中取得了87.5分,远超
之前o1的12分,也超过了人类平均水平的85分。OpenAI CEO Sam
Altman表示,这是'AI能力的重大飞跃'。"
传统摘要(50字):
"OpenAI发布新模型o3,在测试中表现优异。"
Chain of Density V1(50字):
"2026年3月,OpenAI发布推理模型o3,在基准测试中取得高分。"
Chain of Density V3(50字):
"OpenAI于2026年3月29日发布o3,ARC-AGI得分87.5分
(超人类85分),CEO Altman称其为'AI能力重大飞跃'。"
代码实现
基础实现
import anthropic
from typing import List
client = anthropic.Anthropic()
def chain_of_density_summary(document: str, iterations: int = 5) -> List[str]:
"""
生成Chain of Density摘要序列
"""
summaries = []
# 第一版:简洁但完整的摘要
first_summary = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=150,
messages=[
{
"role": "user",
"content": f"""为以下文章生成一个简洁但完整的摘要(100-200字),
涵盖主要事件、人物和数字:
{document}
摘要:"""
}
]
).content[0].text
summaries.append(first_summary)
# 后续版本:逐步增加密度
for i in range(iterations - 1):
next_summary = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=150,
messages=[
{
"role": "user",
"content": f"""你是一个信息密度优化专家。
当前摘要:
{summaries[-1]}
原文:
{document}
请生成一个同等长度但信息密度更高的摘要。
要求:
1. 添加原文中的关键人物、数字、日期
2. 删除或压缩不重要的细节
3. 保持语法通顺
新摘要:"""
}
]
).content[0].text
summaries.append(next_summary)
return summaries
带实体追踪的增强版
import re
from collections import Counter
def extract_entities(text: str) -> set:
"""
提取文本中的实体(简化版)
"""
entities = set()
# 数字
numbers = re.findall(r'\d+\.?\d*%?|\d{4}年', text)
entities.update(numbers)
# 大写开头的词组(人名、组织名)
capitalized = re.findall(r'[A-Z][a-z]+(?:\s+[A-Z][a-z]+)*', text)
entities.update(capitalized)
# 特定模式
models = re.findall(r'[A-Z]{2,}[-\d]*[A-Z]*', text)
entities.update(models)
return entities
def calculate_entity_density(text: str) -> float:
"""
计算实体密度
"""
entities = extract_entities(text)
words = len(text.split())
return len(entities) / words * 1000 if words > 0 else 0
def display_chain_of_density(document: str):
"""
展示Chain of Density的完整过程
"""
summaries = chain_of_density_summary(document)
print("=" * 60)
print("Chain of Density 摘要进化过程")
print("=" * 60)
for i, summary in enumerate(summaries):
density = calculate_entity_density(summary)
print(f"\n【版本 {i+1}】实体密度: {density:.1f}")
print("-" * 40)
print(summary)
print("\n" + "=" * 60)
print(f"密度提升: {calculate_entity_density(summaries[0]):.1f} → {calculate_entity_density(summaries[-1]):.1f}")
print("=" * 60)
实际应用场景
1. 新闻摘要
news_article = """
2026年3月29日深夜,OpenAI发布了全新推理模型o3,这是该公司继
2024年12月发布o1后的重大更新。o3在ARC-AGI基准测试中取得了
87.5分,远超之前o1的12分,也超过了人类平均水平的85分。这是
首次有AI系统在该测试中超越人类。
OpenAI CEO Sam Altman在社交媒体上表示,这是"AI能力的重大
飞跃"。他补充说,o3代表了"推理能力的新纪元"。
新模型分为两个版本:o3-high和o3-low。o3-high版本在复杂推理
任务上表现出色,每任务成本约2500美元;o3-low版本成本大幅
降低,每任务仅需17美元,适合日常应用。
业内专家分析认为,o3的发布将推动AI在各行业的应用加速落地。
"""
summaries = chain_of_density_summary(news_article)
# 输出5个版本的摘要,展示密度逐步提升
2. 论文快速概览
paper_abstract = """
本文提出了一种新的KV Cache压缩技术——ThinKV,专门用于优化
推理模型的长时间思考过程。推理模型如o1、o3在处理复杂任务
时会产生数百个Token的思考链,导致KV Cache爆炸性增长。
ThinKV通过检测思考过程中的关键决策点,只保留这些关键点的
KV表示,对中间过程使用隐式压缩。实验表明,ThinKV可以将
长思考场景下的显存占用减少60%,同时保持98%的推理准确性。
在MMLU、GSM8K、ARC-AGI等多个基准测试中,ThinKV优化后
的模型性能损失不超过2%,但显存使用从平均45GB降低到18GB。
"""
summaries = chain_of_density_summary(paper_abstract)
# 用于快速判断论文价值
3. 多文档对比分析
def compare_documents_chain_of_density(doc1: str, doc2: str) -> dict:
"""
对比两个文档,用CoD提取差异
"""
summaries1 = chain_of_density_summary(doc1)
summaries2 = chain_of_density_summary(doc2)
# 提取关键差异
entities1 = extract_entities(summaries1[-1])
entities2 = extract_entities(summaries2[-1])
unique1 = entities1 - entities2
unique2 = entities2 - entities1
return {
"doc1_unique": list(unique1),
"doc2_unique": list(unique2),
"doc1_density": calculate_entity_density(summaries1[-1]),
"doc2_density": calculate_entity_density(summaries2[-1]),
}
2026年最新发展
Chain of Density + Agent
新趋势:CoD作为Agent的记忆压缩机制
| 问题 | 说明 |
|---|---|
| Agent长期记忆问题 | 对话历史越来越长、Token成本爆炸、模型容易遗忘 |
CoD解决方案:
- 对话历史做CoD摘要
- 每次摘要都更浓缩
- 保留关键实体,丢弃细节
| 方案 | Token数 | 信息保留 |
|---|---|---|
| 原始对话 | 100K | 100% |
| 普通摘要 | 2K | 只保留30% |
| CoD摘要 | 2K | 保留70% |
CoD + RAG(检索增强生成)
融合方案:CoD优化RAG的上下文
1. 检索相关文档
2. 对每个文档做CoD摘要
3. 拼接高密度摘要作为上下文
4. 大模型基于压缩后的上下文回答
效果:
- 上下文Token减少70%
- 回答准确率保持95%以上
- 成本大幅降低
与其他提示词技术的关系
| 技术 | 核心思想 | 适用场景 |
|---|---|---|
| CoT | 展示思考过程 | 数学、推理任务 |
| ToT | 探索多条路径 | 创意、规划任务 |
| ReAct | 思考+行动循环 | Agent任务 |
| Self-Consistency | 多路径投票 | 复杂推理 |
| Chain of Density | 迭代压缩信息 | 摘要、总结任务 |
┌────────────────────────────────────────────────────────┐
│ │
│ 它们都是"让AI想得更好"的技术 │
│ │
│ CoT:先想后答(强调思考) │
│ CoD:先全后精(强调信息) │
│ │
│ 可以组合使用: │
│ CoT → CoD:先推理,再压缩成精华 │
│ │
└────────────────────────────────────────────────────────┘
常见问题
Q1:CoD适合所有类型的文本吗?
不是,不同文本效果不同:
| 文本类型 | 适合程度 | 原因 |
|---|---|---|
| 新闻报道 | ⭐⭐⭐⭐⭐ | 实体丰富,数据明确 |
| 论文摘要 | ⭐⭐⭐⭐ | 方法、结果容易提取 |
| 文学作品 | ⭐⭐ | 情感、意象难以量化 |
| 对话记录 | ⭐⭐⭐ | 实体多,但有时效性 |
| 法律文档 | ⭐⭐⭐⭐ | 条款、数字明确 |
Q2:迭代次数多少合适?
推荐:5次迭代
少于5次:
- 信息密度提升不够明显
- 最后一版可能仍有遗漏
多于5次:
- 边际效益递减
- 计算成本翻倍
- 可能过度压缩,失去可读性
例外:
- 简单新闻:3次足够
- 复杂论文:7-8次可能更好
Q3:CoD和普通摘要的主要区别是什么?
最核心的区别:迭代过程
普通摘要:
输入 → 一次性输出 → 结束
↓
不知道遗漏了什么
Chain of Density:
输入 → V1 → 检查遗漏 → V2 → 检查遗漏 → V3 → ... → VN
↓ ↓ ↓ ↓
"发生了什么" "补充人名" "补充数据" "最终精华"
总结
Chain of Density的核心价值:
- 迭代式摘要:逐步加密信息
- 实体密度:量化摘要质量
- 保留精华:不遗漏关键人物、数字、日期
- 可解释性:可以看到"浓缩"的过程
与其他技术的关系:
- 是CoT的"信息版"(CoT强调推理,CoD强调密度)
- 可与Agent结合,作为记忆压缩
- 可与RAG结合,优化检索上下文
- 适合新闻、论文、报告等实体丰富的文本
“让摘要不是’删减’,而是’精炼’!”
延伸阅读
| 相关文章 | 说明 |
|---|---|
| W16 思维链 | CoT与CoD的对比 |
| W15 提示词 | 提示词工程基础 |
| W03 RAG | RAG与CoD的结合 |
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)