RAPTOR:递归摘要与树形检索的结合,提升RAG检索性能

RAPTOR:递归摘要与树形检索的结合,提升RAG检索性能

随着 LLM 技术的发展,RAG 的价值也来越明显,可以视作 LLM 应用、落地的一个主要方向。RAG通过结合检索系统和生成模型,在生成回答时先从外部知识库种检索相关信息,辅助 LLM 进行更准确的生成。知识的粒度是多样的、零散的。如何从知识库中精准地检索到相关的知识片段是一个极具挑战性地问题。

概述

在目前构建 RAG 系统的流程中,基本都会涉及到对文档进行分块(有没有不需要进行分块的方法呢?)。现行的方式主要是通过滑动窗口进行分块,调一调分块的大小等。私以为,如何进行分块是一个很重要的问题。

目前检索增强的方法中的一个主要缺点,也是论文主要想解决的问题:检索到的主要是一些短的、连续的块。对于需要阅读整个文档才能回答的问题,检索到的块是不能包含足够的信息的。

论文的出发点很好,也是现在很多 RAG 系统的关键问题。分块的大小、如何分块是一个依赖于用户输入的问题。有些查询,只需要某个、某些块就可以回答,或者只需要块中的某句话就可以回答。而且,文本一般是涵盖多个主题的 ,并且具有层次化的结构

且看作者的解决方法 ------ 作者设计了一个树结构的索引和检索系统 RAPTOR(Recursive Abstractive Processing for Tree-Organized Retrieval),捕捉文本的多尺度,不同层次的信息。通过对文本块进行总结,向 LLM 提供不同层次的信息。

RAPTOR方法介绍

RAPTOR 在文本块的基础上,构建了一个递归的树结构,树中的节点标识不同粒度的语义信息。

基本流程:

  • 分块与嵌入。
    • 按 100 的大小对文本进行分块,如果一个句子长度超过 100,则直接将句子作为一个文本块,保证块内语义的一致性。(如何断句也很重要!)
    • 对文本块进行 embedding。
  • 递归的构建 RAPTOR 树。文本块及其 embedding 作为树的叶子节点。
    • 通过聚类把相似的块聚在一起。
    • 利用语言模型为簇内的文本生成总结,并为总结生成 embedding,也作为树的一个节点。
    • 递归执行上述过程。
  • 查询。即如何检索相关的块。文中提供了两种策略:
    • Tree Traversal Retrieval。遍历树的每一层,剪枝并选择最相关的节点。
    • Collapsed Tree Retrieval。评估整个树中每个节点的相关性,找到最相关的几个。

RAPTOR 树构建流程:

RAPTOR 树的两种查询策略:

整个流程很简洁,方法也很直观。其中比较重要的环节不言而喻:聚类。

文中选择了软聚类的方式:每个节点可以从属于多个簇。直接上来看,如果簇作为话题,那么每个文本块并不是只属于每个话题的,选择软聚类也是很直观的。文中的聚类算法是基于 GMM 聚类的,且聚类前通过 UMAP(Uniform Manifold Approximation and Projection ) 对文本表征进行了降维。论文对聚类的过程进行了一些改造,并通过 BIC(Bayesian Information Criterion)来选择最优簇数,一些细节可以参考原文。

总结

我认为,论文想解决的问题是很关键的,也是构建 RAG 系统中一个必须要考虑的问题。论文的思路很直观,和笔者在相关的实践中可以说是不谋而合。对于一个查询,在不考虑性能和其他问题的条件下,最理想的块应该是文本中与查询最相关的那段话、几句话甚至一句话(这就有点像抽取式的文本摘要了)。 如何找到能够恰好包含答案的文本块是一个很有挑战性的工作,期待找到更好的方案。


相关推荐
叶庭云11 小时前
AI 知识库与 Agent 能力构建工具全景调研报告
rag·企业级·ai agent·上下文工程·ai 知识库问答·agent 工作流编排·智能知识库管理
Beth_Chan14 小时前
Generative AI: RAG, AI Agents & Deployment
ai·aigc·agent·rag·genai·mcp·generative ai
Tadas-Gao15 小时前
基于规范驱动开发的下一代软件工程范式:从理论到实践
驱动开发·架构·系统架构·大模型·llm·软件工程
Together_CZ16 小时前
Index-ASR Technical Report——Index-ASR 技术报告
llm·语音识别·多模态·自然语言·asr·技术报告·index-asr
ZaneAI21 小时前
🚀 Vercel AI SDK 使用指南: 消息元数据 (Message Metadata)
llm·agent
ZaneAI21 小时前
🚀 Vercel AI SDK 使用指南:手动读取 UI 消息流 (Reading UI Message Streams)
llm·agent
查无此人byebye21 小时前
【超详细解读(GPU)】基于DiT的MNIST扩散模型(DDPM)完整实现
python·深度学习·nlp·transformer·多分类
乌萨奇53721 小时前
【2025考研复试】深度学习扩展知识:从ViT到多模态,以及简历项目挖掘策略(第11章复盘)
人工智能·深度学习·考研·计算机视觉·nlp·多模态
utmhikari1 天前
【测试人生】LLMAgent在变更风险防控垂类应用的思考
ai·大模型·llm·agent·产品经理·稳定性·变更风险
XLYcmy1 天前
智能体大赛 技术架构 核心驱动层
人工智能·算法·机器学习·llm·prompt·agent·qwen