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的结合

本文收录于「AI词汇专栏」
相关阅读:W16 思维链 · W15 提示词

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐