RAPTOR 层次化知识组织:递归聚类与摘要树
RAPTOR 层次化知识组织:递归聚类与摘要树
学习目标
读完本章后,你将能够:
- 理解 RAPTOR 的核心思想与解决的问题
- 掌握聚类方法选择(GMM vs AHC)与树构建流程
- 分析 Psi-merge 树结构的设计动机
- 在自己的 RAG 系统中引入层次化知识组织
前置知识
- RAG 全链路可视化管线 — 检索与生成的基础流程
- 模板化文本切分策略 — 文档切分基础
- 向量嵌入与聚类算法基础概念
1. 为什么需要层次化知识组织
标准 RAG 管线将所有 chunk 扁平化存储在向量数据库中,面临两个问题:
- “大海捞针”问题:当文档库包含数千甚至数万个 chunk 时,即使使用向量检索,也可能因为 Embedding 质量或查询匹配度问题而遗漏关键信息
- 缺乏全局视角:每个 chunk 是孤立存储的,检索时只能拿到局部片段,缺少文档的高层摘要和全局上下文
RAPTOR(Recursive Abstractive Processing for Tree-Organized Retrieval) 通过递归聚类与摘要,构建一棵从具体到抽象的层次化知识树,使得检索既能定位到具体细节,也能获取高层概览。
2. RAPTOR 核心流程
关键步骤:
- Embedding:将叶子层所有 chunk 转为向量
- 降维(可选):使用 UMAP 将高维向量降到低维空间,提升聚类质量
- 聚类:按语义相似度将 chunk 分组
- 摘要:对每个簇内的 chunk 用 LLM 生成高层摘要
- 递归:对摘要节点重复上述步骤,直到只剩一个根节点
3. 聚类方法选择
RAPTOR 支持两种聚类方法:
| 方法 | 全名 | 原理 | 适用场景 |
|---|---|---|---|
| GMM | Gaussian Mixture Model | 假设数据由多个高斯分布混合生成,用 EM 算法估计参数 | 簇形状不规则、需要概率软分配 |
| AHC | Agglomerative Hierarchical Clustering | 自底向上,每次合并最近的两个簇 | 需要层次结构、不需要预设簇数量 |
GMM 的优势与局限
优势:
- 支持软聚类(一个 chunk 可以属于多个簇),更适合重叠语义
- 通过 BIC/AIC 自动选择最优簇数量
- 对噪声点更鲁棒
局限:
- 假设簇是椭圆形的,对非凸形状效果差
- 计算复杂度较高 O(n²),大数据集慢
AHC 的优势与局限
优势:
- 天然产生层次结构,与 RAPTOR 的树目标一致
- 不需要预设簇数量
- 可以选择不同的链接策略(单链接、全链接、Ward)
局限:
- 一旦合并不可撤销(贪心策略)
- 对噪声和离群点敏感
推荐策略:默认使用 GMM(语义聚类通常不是严格凸的),当需要严格控制树深度时使用 AHC。
4. Psi-merge 树结构
Psi-merge 是一种高效的树合并数据结构,基于 Union-Find(并查集) 算法:
核心设计:
- Union-Find 数据结构:维护叶子节点的合并关系,支持 O(α(n)) 的近似常数时间合并操作
- Ranked 合并:按聚类距离(rank)排序,优先合并距离最近的簇对
- Parent Chain:每个叶子节点维护一条到根的路径链,支持快速追溯层次关系
- 紧凑存储:用一维数组存储整个树结构,数组索引即节点 ID
优势:
- 树构建过程中无需频繁重建树结构
- 合并操作高效,适合大规模数据集
- 天然支持增量更新(新 chunk 加入时只需局部调整)
5. 检索策略
RAPTOR 的检索支持两种模式:
模式一:全局检索
在树的每一层都执行检索,然后将各层的结果合并:
- 将查询向量与树中每个节点的 Embedding 比较
- 按相似度排序,选择 Top-K 节点
- 如果选中的是摘要节点,可以向下展开获取其子节点的具体内容
模式二:路由检索
从根节点开始,沿树向下路由:
- 从根节点开始,比较查询与各子摘要的相似度
- 选择最相似的子树继续向下
- 到达叶子层后执行标准向量检索
对比:
| 维度 | 全局检索 | 路由检索 |
|---|---|---|
| 召回率 | 高(覆盖所有层) | 中(依赖路由准确性) |
| 速度 | 慢(全树扫描) | 快(O(树深度)) |
| 适用场景 | 复杂查询、多主题 | 单一主题查询 |
6. 缓存优化
RAPTOR 树构建过程中涉及大量重复计算,必须使用缓存:
| 缓存类型 | 缓存内容 | 缓存键 |
|---|---|---|
| Embedding 缓存 | chunk → 向量 | 文本内容哈希 |
| LLM 摘要缓存 | 簇内容 → 摘要 | 簇内 chunk ID 排序后的哈希 |
缓存失效条件:
- 原始 chunk 内容变更
- 新增或删除 chunk 导致聚类结果变化
- 聚类参数(簇数量、降维参数)变更
7. 问题与规避
| 陷阱 | 对策 |
|---|---|
| 聚类参数不当导致树质量差 | 使用 BIC/AIC 自动选择簇数量 |
| 深层树检索延迟高 | 使用路由检索替代全局检索 |
| 摘要质量差(LLM 幻觉) | 在摘要 prompt 中约束”仅基于提供的文本总结” |
| 树构建成本高 | 批量处理 + 缓存;增量更新而非全量重建 |
| 簇过大(摘要节点包含太多 chunk) | 限制最大簇大小,超过则二次聚类 |
8. 设计取舍
RAPTOR vs 扁平检索
| 维度 | RAPTOR 层次化 | 扁平检索 |
|---|---|---|
| 检索质量 | 高(有全局视角) | 中(仅局部匹配) |
| 构建成本 | 高(聚类 + LLM 摘要) | 低(仅 Embedding) |
| 存储成本 | 中(额外存储摘要节点) | 低 |
| 适用场景 | 大规模文档库、复杂查询 | 小规模、简单查询 |
推荐:当文档库超过 1000 个 chunk 或查询涉及跨文档推理时,引入 RAPTOR。
GMM vs AHC 聚类
已在第 3 节详细对比。简而言之:GMM 适合语义软聚类,AHC 适合严格层次。
参考来源
- RAPTOR 论文:https://arxiv.org/abs/2401.18059