大多数现有方法仅从检索语料库中检索短的连续块,限制了对整个文档上下文的整体理解。 RAPTOR(Recursive Abstractive Processing for Tree-OrganizedRetrieval)引入了一种新方法,即递归嵌入、聚类和总结文本块,从下往上构建具有不同总结级别的树。在推理时,RAPTOR模型从这棵树中检索,整合不同抽象级别的长文档中的信息。 RAPTOR(Recursive Abstractive Processing for Tree-Organized Retrieval)比传统的检索增强型 LM 性能与绝对准确度上提高 20%。
开源地址:
论文地址:
一、RAPTOR 检索树的构建过程
RAPTOR模型的精髓在于其树状结构的构建,这一过程通过精心设计的递归算法实现,形成了一个层次分明的多层级树形架构。这种结构不仅显著提升了模型对长文本信息的处理能力,更使得对复杂文本内容的理解和检索变得高效而精准。通过递归的方式,RAPTOR能够逐步细化文本信息的粒度,从而确保在多个层次上都能捕捉到关键信息,为后续的文本分析和应用奠定了坚实的基础。
下面我将对具体步骤进行详细的说明:
二、RAPTOR 的检索过程
这里有两种方式实现,基于 深度检索树(树遍历) 和 广度检索树(折叠树)
三、开源项目案例应用示例
# 安装,在使用 RAPTOR 之前,请确保已安装 Python 3.8+。克隆 RAPTOR 存储库并安装必要的依赖项:git cloneraptorpip install -r requirements.txt# 开始使用 RAPTOR,请按照以下步骤操作:# 首先,设置您的 OpenAI API 密钥并初始化 RAPTOR 配置:import osos.environ["OPENAI_API_KEY"] = "your-openai-api-key"from raptor import RetrievalAugmentation# Initialize with default configuration. For advanced configurations, check the documentation. [WIP]RA = RetrievalAugmentation()# 将您的文本文档添加到 RAPTOR 进行索引:with open('sample.txt', 'r') as file:text = file.read()RA.add_documents(text)# 现在可以使用 RAPTOR 根据索引文档回答问题:question = "How did Cinderella reach her happy ending?"answer = RA.answer_question(question=question)print("Answer: ", answer)# 将构造好的树保存到指定路径:SAVE_PATH = "demo/cinderella"RA.save(SAVE_PATH)# 将保存的树重新加载到 RAPTOR 中:RA = RetrievalAugmentation(tree=SAVE_PATH)answer = RA.answer_question(question=question)
总结
RAPTOR在RAG中的优化为我们提供了一个全新的视角和工具,使我们能够更高效地利用海量信息,更精准地检索和生成高质量的内容。随着技术的不断进步和完善,相信RAPTOR将在未来为我们带来更多惊喜和可能性。注意以上是我个人的理解,如果想深入了解可以阅读论文。
原文链接: