使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT,以实现更智能的 AI
传统的检索增强生成(RAG)系统在生成具备上下文感知的答案方面表现出色。然而,它们往往存在以下不足:
-
精确性不足:单次推理可能会忽略复杂查询中的细微差别。
-
理解不够深入:若没有迭代过程,输出结果可能无法全面解决多方面的问题。
RAG简介
检索增强思考(RAT)通过引入模仿人类思维过程的推理循环,弥补了这些差距。这使得它在以下应用场景中具有极高价值:
-
复杂问题解答
-
特定领域的AI助手
-
研究密集型工作流程
RAT详解
如下图所示,RAT的工作步骤如下:
-
用户输入:与RAG一样,用户提出问题。例如:“我如何提高我的生产力?”
-
知识检索:系统从知识库(如文档、文章)中检索与问题相关的信息片段。例如:检索到的内容可能包括关于时间管理、生产力技巧的文章,或者像任务优先级排序这样的工具介绍。
- 推理循环(迭代优化)
-
初始思考:推理大语言模型(LLM)基于检索到的信息片段和用户问题开始工作,生成初始思考或推理内容。例如:“专注于有效进行任务优先级排序”。
- 迭代:系统将这个思考结果反馈回检索和推理过程中。每次迭代都会优化检索到的上下文,并生成更细致入微的推理。
-
迭代2:“将任务分解成更小的部分,并根据紧急程度和重要性对它们进行优先级排序”。
-
迭代3:“实施时间块管理,并消除干扰以进行深度工作”。
-
-
-
最终思考:在完成指定的迭代次数后(或者当推理趋于稳定时停止),系统会产生一个最终思考结果,这是对问题经过深入思考后得出的详细理解。最终思考:“要提高生产力,可以使用艾森豪威尔矩阵对任务进行优先级排序,将它们分解成更小的部分,并利用时间块管理来专注工作”。
-
增强生成:经过优化的推理(最终思考结果)会被传递给负责生成答案的LLM。这个LLM将推理结果与原始问题相结合,生成最终便于用户理解的答案。最终答案:“要提高你的生产力,可以先使用艾森豪威尔矩阵对任务进行优先级排序。将它们分解成易于管理的步骤,并利用时间块管理来保持专注”。
为何使用RAGLight来实现RAT?
RAGLight是一个功能多样的框架,它通过为检索、推理和生成工作流程提供模块化组件,简化了RAG和RAT管道的实现过程。凭借预构建的集成功能和可扩展的设计,你可以专注于提升AI的能力,而无需从头开始开发。
以下是如何使用RAGLight设置RAT和RAG管道,以及关键参数和定制选项的详细解释。
设置RAT管道
from raglight.rat.simple_rat_api import RATPipeline
from raglight.models.data_source_model import FolderSource, GitHubSource
from raglight.config.settings import SettingsSettings.setup_logging()pipeline = RATPipeline(knowledge_base=[FolderSource(path="<path to your folder with pdf>/knowledge_base"),GitHubSource(url="https://github.com/Bessouat40/RAGLight")
], model_name="llama3", reasoning_model_name="deepseek-r1:1.5b", reflection=1)pipeline.build()response = pipeline.generate("How can I create an easy RAGPipeline using raglight framework? Give me the the easier python implementation")print(response)
理解RAGLight参数
- knowledge_base:定义知识来源的列表。RAGLight支持:
-
FolderSource:指向包含文档(如PDF、文本文件)的本地文件夹路径。
-
GitHubSource:要包含在知识库中的GitHub仓库的URL。你可以组合多个文件夹和仓库,以创建一个全面的知识库。
-
-
model_name:用于最终生成的LLM的名称。RAGLight目前支持从Ollama拉取到本地的模型。你可以将“llama3”替换为其他模型,如“deepseek-r1:1.5b”,或者任何与Ollama兼容且已拉取到本地的模型。也可以使用推理模型。
-
reasoning_model_name(RAT特定):指定在RAT管道中用于迭代推理的模型。你必须选择推理模型。实际上,RAGLight目前只支持像deepseek-r1:1.5b这样的deepseek模型。
-
reflection(RAT特定):定义要执行的推理迭代次数。每次迭代都会优化检索到的上下文和推理逻辑。增加迭代次数可以进行更深入的推理,减少迭代次数则可以加快处理速度。
- pipeline.build :此函数用于处理知识库、生成嵌入向量,并初始化向量存储。
-
工作原理:解析知识库来源(如文件夹、GitHub仓库);使用指定模型为所有文档创建嵌入向量;将嵌入向量存储在向量存储中以供检索。
-
- pipeline.generate:根据用户的查询和从知识库中检索到的上下文生成响应。
-
工作原理:将用户查询转换为嵌入向量;从向量存储中检索相关文档或片段;(对于RAT管道)使用推理模型迭代优化响应;生成最终具有上下文感知的响应。
-