简介:知识库规模扩大后,传统扁平化RAG常面临召回不准、上下文割裂与Token开销高的问题。本文系统对比传统扁平RAG索引与RAPTOR递归树形摘要索引两类方案,从索引结构、信息粒度、构建成本、Token消耗、更新运维等维度拆解核心差异,给出典型场景选择、选型判断依据与迁移注意事项,帮助你在两条技术路线之间做出贴合自身业务的决策。
RAG(Retrieval Augmented Generation,检索增强生成)已经成为大模型应用接入外部知识的标配架构。但随着知识库从几十篇文档增长到成千上万篇,传统RAG链路的短板会逐渐暴露:
常见的应对方式是在查询侧不断“加码”:查询改写、多路召回、重排序、多轮检索……每增加一层,系统复杂度、延迟和LLM调用成本都会上升,架构也随之变得脆弱。
RAPTOR(Recursive Abstractive Processing for Tree-Organized Retrieval,递归抽象处理的树形组织检索)提供了另一个方向的思路:不在查询侧做加法,而是在索引构建侧做“预投资”,通过聚类与摘要把知识库组织成层次化的树结构,让知识库本身变得更“聪明”。
因此,本文对比的对象是两类RAG索引方案:
离线阶段将文档切分为固定长度或语义边界的文本块,逐块生成向量并存入向量库;查询阶段将用户问题向量化,按相似度召回top-k片段,拼入上下文交给LLM生成答案。所有被检索的对象都是原始文本块,索引结构是“一层平铺”。
检索时不再只在叶子层找答案,而是在全树所有层级的节点上做相似度召回:细节类问题可能命中叶子,综述类问题可能直接命中高层摘要。
方案A的索引是片段的扁平集合,片段之间除相似度外没有显式的组织关系。方案B在片段之上构建了多级抽象,形成“细节→主题→全局”的层级,片段之间有了从属与聚合关系。这一结构性差异是后续所有差异的根源。
方案A只能召回与问题向量相近的细粒度片段。方案B同时具备叶级细节、中间层主题概括与根级全局视角。对于“这份资料整体讲了什么”“这几类方法有什么共性”这类需要跨片段综合的问题,树形结构天然占优。
方案A若想覆盖更全面的信息,往往需要增大top-k或多轮检索,上下文长度随之膨胀,直接推高Token消耗与延迟。方案B的高层摘要本身是“压缩后的信息”,很多问题只需召回少量高层节点即可覆盖大范围语料。在该方案的原始实验中,多数问题可以在较高层级的节点上得到满足,上下文Token消耗显著下降,部分评测中节省幅度可达70%左右。需要强调的是,实际收益与语料结构、问题类型强相关,不能默认套用这一数字。
方案A建索引只需一次向量化,成本低、速度快,新增文档可增量插入。方案B的构建过程要反复调用LLM生成摘要并执行聚类,构建成本与耗时明显更高;当底层文档变化时,还可能触发对应子树的重建,更新链条更长。
方案A召回的是原文,答案更容易溯源到具体段落。方案B的高层节点是LLM生成的摘要,存在摘要偏差、细节丢失的可能,且摘要误差会随递归向上传播。工程上需要保留“摘要→原始片段”的溯源映射来缓解。
方案A组件成熟、链路简单,排障路径清晰。方案B多了聚类参数调优、摘要质量抽检、树结构维护、局部重建调度等工作,对团队的数据处理与评估能力要求更高。
示意性伪代码对比:
# 方案A:扁平索引chunks = split(docs)vectors = embed(chunks)index.add(vectors, chunks)# 方案B:RAPTORnodes = split(docs) # 叶节点tree = nodeswhile len(nodes) > threshold:clusters = soft_cluster(nodes) # 语义软聚类nodes = [llm_summarize(c) for c in clusters] # 上层摘要tree += nodes# 检索:在 tree 全部层级的节点向量上统一做相似度召回
| 维度 | 方案A:传统扁平RAG | 方案B:RAPTOR树形索引 |
|---|---|---|
| 索引结构 | 扁平片段集合 | 叶-枝-根层次树 |
| 可召回粒度 | 仅原始片段 | 片段 + 多级摘要 |
| 构建成本 | 低(仅向量化) | 高(聚类 + 多次LLM摘要) |
| 查询期Token消耗 | 覆盖面越大消耗越高 | 高层摘要命中时显著降低 |
| 细节类问题 | 表现稳定 | 依赖叶层,表现相当 |
| 全局/综述类问题 | 易碎片化 | 天然聚合,表现更优 |
| 增量更新 | 简单,直接插入 | 可能触发子树重建 |
| 溯源能力 | 直接对应原文 | 需额外维护摘要→原文映射 |
| 工程复杂度 | 低 | 中到高 |
| 适用语料 | 小规模、高频更新 | 大规模、主题关联强、相对稳定 |
选型不应基于“哪个更先进”,而应基于以下条件的判断:
无论选择哪种方案,都可以基于通用的大模型服务、向量检索与知识库类能力搭建,例如在百度智能云等平台上组合使用通用的模型调用、向量数据库与文档处理能力即可实现两类方案,避免与特定实现深度绑定。
传统扁平RAG与RAPTOR树形索引的差异,本质上是“把复杂性放在查询时”与“把复杂性放在构建时”的路线之争。前者轻、快、易更新,但在大规模语料上容易遇到召回碎片化与上下文膨胀;后者用一次性的聚类与摘要投入,换来多粒度的知识组织与更低的查询期Token消耗,但需要承担构建成本、更新链路与摘要质量治理。没有绝对更优的方案,只有与语料规模、问题分布、成本预算和溯源要求相匹配的选择。对多数团队而言,从扁平索引起步、在规模与问题复杂度上升后引入树形摘要层形成混合检索,是一条风险可控、收益可量化的演进路径。