一句话定义:分层树索引器(Hierarchical Tree-Structured Indexer)是一类注意力(attention)加速设计——把长上下文组织成一棵多层树,查询时从树顶逐层筛选,只对少数相关分支做真正的注意力计算,从而把平方级的成本压到接近线性。
它是怎么工作的
先把上下文按语义或固定长度切成小块(chunk / segment),这些小块就是树的叶子。然后把相邻几个小块的表示压缩成一个"摘要"向量,作为它们的父节点;父节点再往上压缩,一层层收敛到根节点。整棵树相当于一份多分辨率的目录:根节点代表全文大意,越往下越具体。
来一个查询(query)时,先拿它跟根节点和上层的摘要打分,选出得分最高的若干分支(top-k),只沿这些分支往下走,直到命中叶子;最后只在命中的叶子里做完整的注意力计算,其余部分直接跳过。
打个比方:你去图书馆找一本讲园艺的书。笨办法是把馆里每一本书都翻一遍——这就是标准注意力的平方级成本,每个 token 都要和所有 token 比一遍。聪明办法是先看楼层索引,再找分类牌,最后走到具体书架。每层只做淘汰,不做细读,路径长度是对数级的。
成本账大致是这样:n 个 token 分成块后,树高约 log n,每层只对少量候选打分,总开销大约落在 O(n log n) 或 O(n·k) 这个量级,而全注意力是 O(n²)。上下文越长,差距越悬殊。
和相邻概念的区别
| 机制 | 谁决定"看哪里" | 成本量级 | 是否需要额外索引 |
|---|---|---|---|
| 全注意力 | 全都看 | O(n²) | 不需要 |
| 固定稀疏注意力(滑窗、块稀疏) | 位置规则,写死 | O(n·w) | 不需要 |
| 线性注意力 / 核方法 | 用近似替换 softmax | O(n) | 不需要 |
| 分层树索引器 | 按相关性逐层筛选 | 约 O(n log n) | 需要建树 |
| 检索增强(RAG) | 模型外的向量库 | 与上下文长度解耦 | 需要外部索引 |
关键差别在"筛选依据":固定稀疏注意力是按位置猜,树索引是按内容算;而 RAG 是在模型外面先检索一次再把结果塞进上下文,树索引则发生在模型内部、逐层进行。两者可以叠加使用。
代价与注意事项
摘要是压缩,压缩就会丢信息,所以这类方法本质是近似而非无损。常见补救是留一条"保底通道":最近的若干 token 始终全看,或保留少量全局 token 不走筛选。另外树要建、要存,索引结构还得跟 KV 缓存(KV cache)一起管理,工程复杂度明显高于普通注意力。
对从业者和普通人的意义
做长文档问答、代码库级理解、超长多轮对话的团队,值得把这类分层思路纳入选型——它是把"上下文长度"这道成本墙往后推的主要方向之一。普通人能感知到的是:模型可以"通读"更厚的材料,而不是先被你切成几段再分别喂进去。但它仍会漏,关键结论还是要人工核对。具体实现细节与效果,以各家官方文档和技术报告为准。
