RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval

RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval

介绍

欢迎来到RAPTOR教程!RAPTOR是一种新颖的增强型检索语言模型,通过从文档中构建递归树结构,实现高效的上下文感知信息检索。这个教程将帮助你了解如何安装、使用和扩展RAPTOR,以便更好地利用这一强大的工具。

安装

在使用RAPTOR之前,请确保已安装Python 3.8或更高版本。接下来,克隆RAPTOR仓库并安装必要的依赖项:

sh 复制代码
git clone https://github.com/parthsarthi03/raptor.git
cd raptor
pip install -r requirements.txt

基本使用

设置RAPTOR

首先,设置你的OpenAI API密钥并初始化RAPTOR配置:

python 复制代码
import os
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"

from raptor import RetrievalAugmentation

# 使用默认配置初始化RAPTOR
RA = RetrievalAugmentation()

添加文档到树结构

将你的文本文档添加到RAPTOR进行索引:

python 复制代码
with open('sample.txt', 'r') as file:
    text = file.read()
RA.add_documents(text)

回答问题

现在你可以使用RAPTOR根据索引的文档回答问题:

python 复制代码
question = "How did Cinderella reach her happy ending?"
answer = RA.answer_question(question=question)
print("Answer: ", answer)

保存和加载树结构

将构建的树保存到指定路径:

python 复制代码
SAVE_PATH = "demo/cinderella"
RA.save(SAVE_PATH)

从保存的树中加载数据:

python 复制代码
RA = RetrievalAugmentation(tree=SAVE_PATH)
answer = RA.answer_question(question=question)

扩展RAPTOR

RAPTOR设计为灵活的,允许你集成任何模型用于摘要生成、问答(QA)和嵌入生成。以下是如何用你自己的模型扩展RAPTOR:

自定义摘要模型

要使用不同的语言模型进行摘要生成,可以通过扩展BaseSummarizationModel类来实现。实现summarize方法以集成自定义摘要逻辑:

python 复制代码
from raptor import BaseSummarizationModel

class CustomSummarizationModel(BaseSummarizationModel):
    def __init__(self):
        # 初始化你的模型
        pass

    def summarize(self, context, max_tokens=150):
        # 实现你的摘要逻辑
        summary = "Your summary here"
        return summary

自定义QA模型

对于自定义QA模型,扩展BaseQAModel类并实现answer_question方法。该方法应返回你的模型在给定上下文和问题时找到的最佳答案:

python 复制代码
from raptor import BaseQAModel

class CustomQAModel(BaseQAModel):
    def __init__(self):
        # 初始化你的模型
        pass

    def answer_question(self, context, question):
        # 实现你的QA逻辑
        answer = "Your answer here"
        return answer

自定义嵌入模型

要使用不同的嵌入模型,扩展BaseEmbeddingModel类。实现create_embedding方法,该方法应返回输入文本的向量表示:

python 复制代码
from raptor import BaseEmbeddingModel

class CustomEmbeddingModel(BaseEmbeddingModel):
    def __init__(self):
        # 初始化你的模型
        pass

    def create_embedding(self, text):
        # 实现你的嵌入逻辑
        embedding = [0.0] * embedding_dim  # 替换为实际嵌入逻辑
        return embedding

集成自定义模型到RAPTOR

实现自定义模型后,将它们集成到RAPTOR:

python 复制代码
from raptor import RetrievalAugmentation, RetrievalAugmentationConfig

# 初始化自定义模型
custom_summarizer = CustomSummarizationModel()
custom_qa = CustomQAModel()
custom_embedding = CustomEmbeddingModel()

# 创建包含自定义模型的配置
custom_config = RetrievalAugmentationConfig(
    summarization_model=custom_summarizer,
    qa_model=custom_qa,
    embedding_model=custom_embedding
)

# 使用自定义配置初始化RAPTOR
RA = RetrievalAugmentation(config=custom_config)

查看demo.ipynb,了解如何指定你自己的摘要/QA模型(如Llama/Mistral/Gemma)和嵌入模型(如SBERT),用于RAPTOR。

注意:更多示例和RAPTOR的配置方法即将发布。高级用法和附加功能将在文档和仓库更新中提供。


通过这篇教程,希望你能轻松上手RAPTOR,利用它进行高效的信息检索和处理。如果有任何疑问或建议,欢迎在RAPTOR的GitHub仓库中提出Issue。

相关推荐
fancy16616636 分钟前
力扣top100 矩阵置零
人工智能·算法·矩阵
元亓亓亓1 小时前
LeetCode热题100--240.搜索二维矩阵--中等
算法·leetcode·矩阵
明月看潮生2 小时前
青少年编程与数学 02-019 Rust 编程基础 09课题、流程控制
开发语言·算法·青少年编程·rust·编程与数学
oioihoii2 小时前
C++23 views::slide (P2442R1) 深入解析
linux·算法·c++23
yuhao__z2 小时前
代码随想录算法训练营第六十三天| 图论9—卡码网47. 参加科学大会,94. 城市间货物运输 I
算法·图论
June`3 小时前
专题三:穷举vs暴搜vs深搜vs回溯vs剪枝(全排列)决策树与递归实现详解
c++·算法·深度优先·剪枝
vlln3 小时前
适应性神经树:当深度学习遇上决策树的“生长法则”
人工智能·深度学习·算法·决策树·机器学习
冲帕Chompa4 小时前
图论part09dijkstra算法
算法·图论
·云扬·4 小时前
【PmHub后端篇】PmHub中基于Redis加Lua脚本的计数器算法限流实现
redis·算法·lua
周Echo周4 小时前
20、map和set、unordered_map、un_ordered_set的复现
c语言·开发语言·数据结构·c++·算法·leetcode·list