Agentic RAG 与图任务编排

news2024/11/17 1:39:46

一个朴素的 RAG 系统流程是这样的:先由用户提出问题,然后系统基于用户提问进行召回,对召回结果进行重排序,最后拼接提示词后送给 LLM 生成答案。

图片

一部分简单场景下,朴素的 RAG 已经可以满足用户意图明确的场景的要求,因为答案已经包含在检索出来的结果中,只要交给 LLM 即可。然而在更多的情况下用户意图并不明确,无法直接通过检索找到答案,例如一些针对多文档的总结类提问需要进行多步推理 (Reasoning) 等等。这类场景就需要引入 Agentic RAG ,也就是在问答的过程中引入任务编排机制。

Agentic RAG,顾名思义,是基于 Agent 的 RAG。Agent 与 RAG 关系紧密,两者互为基石。Agentic RAG 和简单 RAG 的最大区别在于 Agentic RAG 引入了 Agent 的动态编排机制,因此可以根据用户提问的不同意图,引入反馈和查询改写机制,并进行“多跳”式的知识推理,从而实现对复杂提问的回答。

下面,我们先通过两个高级 RAG 来看看 Agentic RAG 的工作原理。首先是 Self-RAG (参考文献[1]),它的工作流程如下:

图片

Self-RAG 是一种引入了反思机制的 RAG。从知识库中检索出结果后,它会评估结果是否与用户提问相关。如果不相关,就要改写查询,然后重复 RAG 流程直到相关度评分达到要求。实现 Self-RAG 需要实现以下两大组件:

  1. 一套基于 Graph 的任务编排系统。

  2. 在 Graph 内执行的必要算子:比如在 Self-RAG 中,评分算子就至关重要。在原始论文中, 是需要自己训练一个打分模型来针对检索结果评分;在实际实现中也可以采用 LLM 进行评分,这样可以简化系统开发并且减少对各类环节依赖。

Self-RAG 是相对初级的 Agentic RAG,RAGFlow 中也已提供了相关实现。实践证明,Self-RAG 对于较复杂的多跳问答和多步推理可以明显提升性能。

再来看看另一种 Agentic RAG — Adaptive RAG (参考文献[2])。它可以根据用户提问的不同意图采用对应的策略:

  1. 开放域问答:直接通过 LLM 产生答案而无需依赖 RAG 检索。

  2. 多跳问答:首先将多跳查询分解为更简单的单跳查询,重复访问 LLM 和 RAG 检索器来解决这些子查询,并合并它们的答案以形成完整答案。

  3. 自适应检索:适用于需要多步逻辑推理的复杂问题。复杂的问答往往需要从多个数据源综合信息并进行多步推理。自适应检索通过迭代地访问 RAG 检索器和 LLM,逐步构建起解决问题所需的信息链。

如下图所示,Adaptive-RAG 的工作流程与 Self-RAG 类似,只是在前面增加了一个查询分类器,就提供了更多种对话的策略选择。

图片

从以上两种 Agentic RAG 例子可以看出,这类高级 RAG 系统都需要基于任务编排系统上提供以下功能:

  1. 复用已有的 Pipeline 或者子图。

  2. 与包含 Web Search 在内的外部工具协同工作。

  3. 可以规划查询任务,例如查询意图分类,查询反馈等等。

任务编排系统类似的实现主要有 Langchain 的 ️LangGraph 和 llamaIndex;Agent 的开发框架包括 AgentKit、Databricks 最新发布的 Mosaic AI Agent Framework 等等。任务编排系统需要基于图(Graph)来实现,图中的节点和边定义了应用的流程和逻辑。节点可以是任何可调用的算子,也可以是其他可运行组件(比如链接起来的多个算子或者 Agents),每个节点执行特定的任务。边定义了节点间的连接和数据流。图需要具备节点的状态管理功能,从而根据节点的跳转而不断更新状态。需要注意的是,这种基于图的任务编排框架并不是一个 DAG (Directed Acyclic Graph), 而是一个需要引入循环的编排系统。环是提供反思机制的基础,对于 Agentic RAG 的编排至关重要。没有反思机制的 Agent 只能提供类似工作流这样的任务编排而无法实现更高级的多跳和多步推理机制,没法真正像人类那样去思考性地解决问题。在吴恩达给出的四种 Agent 设计模式(参考文献[3])中:反思被放在头一个,其他三个都是工作流相关,分别是工具、规划,和多 Agent 协同。反思被单列出来是因为思考和推理都必须基于它来进行,而 Agentic RAG 正是反思机制在 RAG 的体现。

Agentic RAG 代表了信息处理方式的变革,为 Agent 本身引入了更多的智能。结合了工作流的 Agentic RAG 也有更广阔的应用场景。比如:在文档摘要中,Agentic RAG 会首先确定用户的意图是要求摘要还是要求对比细节。如果是前者,就通过 Agent 先获取每块内容的摘要再获取整体的摘要;如果是后者,就需要进一步路由,通过检索提取相应数据点,再把相关数据传递给 LLM。在客户服务支持中,Agentic RAG 可以理解客户更加复杂的提问,从而可以提供更加个性化的准确回复。在文献助手中,Agentic RAG 可以综合更多的文献、数据和研究结果,让使用者具备更全面的理解;在法律和医疗助手中,Agentic RAG 可以帮助理解和解释复杂的领域知识,提供更准确地见解;在内容生成应用中,Agentic RAG 可以帮助生成更高质量的、上下文相关的企业级长文档。

RAGFlow 将从 v0.8.0 开始原生支持基于图的任务编排系统,并支持以无代码的方式进行编辑;另一方面, RAGFlow 也在不断完善各类查询规划算子以简化 Agentic RAG 以及基于 Agentic RAG 的各类 Agent 应用的开发过程,真正从端到端解决企业级 RAG 应用的各类痛点。RAGFlow 一直在快速演进,欢迎关注、star,并积极参与到我们的项目中来!

项目地址:https://github.com/infiniflow/ragflow

参考文献:

  1. Self-RAG: Learning to retrieve, generate, and critique through self-reflection, arXiv preprint arXiv:2310.11511

  2. Adaptive-RAG: Learning to adapt retrieval-augmented large language models through question complexity, arXiv preprint arXiv:2403.14403

  3. https://www.deeplearning.ai/the-batch/issue-242/


END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1839359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

柒拾肆- 如何通过数据影响决策(五)- 时序数据

什么是好? 对于 单一时序指标 来说(如最简单的 销售、日活顾客数、订单数 等 ),在决策时该怎样 看 呢? 或者换句话说,数据 应该怎样 表达 才能让决策者做出 更全面 的决策呢? 一、目前的方式 …

Jenkins+K8s实现持续集成(二)

部署前呢,要先把jenkins搭建好。 同时呢已经有了k8s的环境。 基于以上两步已经有了的情况,继续要实现jenkinsk8s持续集成,需要先准备四个文件: Dockerfile首先要准备好一个Dockerfile文件,用于构建Docker镜像的文本…

广州回顾 | 打破Oracle与IvorySQL之间的壁垒,听听IvorySQL企业级应用

6月15日,IvorySQL 社区携手中国开源软件联盟 PostgreSQL 分会首次走进广州并成立 IvorySQL 广州用户组,非常感谢 PG分会 筹办了此次线下交流活动,这也让 IvorySQL 社区有机会在线下与广州的小伙伴们一起见面聊聊天。 与一群志同道合的人相聚&…

c#音乐播放器续(联网下载)

音乐播放器 0.前言1.关于本地音乐播放2.使用iTunes Search API进行联网下载歌曲2.1 控件2.2 函数实现2.2.1 控件2:搜索歌曲2.2.2 控件3:下载歌曲 2.3 主界面 3.拓展 0.前言 书接上文,我们已经实现了一个能够播放本地音乐的音乐播放器&#x…

kubernetes 核心概念

1 kubernetes核心概念 1.1 Pod Pod是可以在Kubernetes中创建和管理的、最小的可部署的计算单元。 Pod就像豌豆荚一样,其中包含着一组(一个或多个)容器;这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod就像一台物理…

用c语言实现通讯录

目录 静态简易通讯录 代码: 功能模块展示: 设计思路: 动态简易通讯录(本质顺序表) 代码: 扩容模块展示: 设计思路: 文件版本通讯录 代码: 文件模块展示&#x…

运维篇-配置高级

黑马程序员Spring Boot2 文章目录 1、临时属性1.1 命令行中使用临属性1.2 开发环境设定临时属性 2、配置文件分类3、自定义配置文件 1、临时属性 1.1 命令行中使用临属性 使用jar命令启动Sprigboot工程师可以使用临时属性替换配置文件中的属性临时属性添加方式:ja…

数据结构——排序(期末总结)

1. 插入排序 1.1 直接插入排序 思想 假设第一个元素是已经排好序的元素&#xff0c;从第二个元素开始依次插入操作&#xff0c;大的放后面&#xff0c;小的放前面。 代码 void insert(int a[], int n) {int i, j, key;for (i 2; i < n; i){key a[i];j i - 1;while (j…

SCI绘图【1】-不同颜色表示密度和差异--密度图

参考资料&#xff1a;密度图&#xff08;Density Plot&#xff09; - 数据可视化图表 - 数字孪生百科 密度图是快速观察变量数值分布的有效方法之一。通常情况下&#xff0c;会根据两个变量将平面绘图区域分为非常多的子区域&#xff0c;之后以不同颜色表示落在该区域上样本的…

【Linux】—MySQL安装

文章目录 前言一、下载官方MySQL包二、下载完成后&#xff0c;通过xftp6上传到Linux服务器上三、解压MySQL安装包四、在安装目录下执行rpm安装&#xff0c;请按顺序依次执行。五、配置MySQL六、启动MySQL数据库七、退出&#xff0c;重新登录数据库 前言 本文主要介绍在Linux环境…

内网渗透什么意思,怎么做好安全防范?

在当前高度数字化的世界中&#xff0c;企业和组织使用内网&#xff08;即内部网络&#xff09;来处理各种敏感数据与关键业务活动。然而&#xff0c;内网同样面临各种网络安全威胁&#xff0c;内网渗透就是其中一种。了解内网渗透的具体含义&#xff0c;并采取相应的安全防范措…

新火种AI|实属罕见!四大AI顶流同台,有哪些关键信息值得关注?

作者&#xff1a;小岩 编辑&#xff1a;彩云 在有着“AI春晚”之称的2024年智源大会上&#xff0c;非常难得的一幕出现了&#xff1a;当下国内的四大AI顶流公司——月之暗面&#xff0c;百川智能&#xff0c;智谱AI&#xff0c;面壁智能齐聚一堂&#xff0c;十分罕见的同台了…

注塑件检测视觉检测中可能遇到的外观缺陷

机器视觉检测注塑件不良特征有哪些&#xff1f;按照检测需求一般分为两类&#xff1a;外观缺陷和尺寸缺陷。但由于注塑件的工艺特点及原材料特性&#xff0c;注塑件外观缺陷在生产过程中出现的概率于频率远远大于尺寸缺陷。 注塑件检测视觉检测中可能遇到的外观缺陷 1、色差&a…

【Linux】 yum学习

yum介绍 在Linux系统中&#xff0c;yum&#xff08;Yellowdog Updater, Modified&#xff09;是一个用于管理软件包的命令行工具&#xff0c;特别适用于基于RPM&#xff08;Red Hat Package Manager&#xff09;的系统&#xff0c;如CentOS、Fedora和Red Hat Enterprise Linux…

油猴hook+内存爆破

hook方式 说明&#xff1a;来回翻页发现只有请求体的token需要逆向&#xff0c;而这个请求体是在params里&#xff0c;拼接到url里&#xff0c;可以直接用油猴hook url里的关键字token。 正常步骤 hook代码 // UserScript // name hookparams // namespace htt…

【Pmac】PMAC QT联合开发中各种可能遇到的坑

目录 1. 错误 C2027 使用了未定义类型“PCOMMSERVERLib::DEVUPLOAD”2. 输入了正确的pmac的ip地址&#xff0c;没有显示可选的pmac设备3. Pmac DTC-28B无读数 使用QT编写PMAC上位机程序时&#xff0c;利用QT中的dump工具可以将pcommserver.exe转化为pcommserverlib.h和pcommser…

【面试实战】# 并发编程之线程池配置实战

1.先了解线程池的几个参数含义 corePoolSize (核心线程池大小): 作用: 指定了线程池维护的核心线程数量&#xff0c;即使这些线程处于空闲状态&#xff0c;它们也不会被回收。用途: 核心线程用于处理长期的任务&#xff0c;保持最低的线程数量&#xff0c;以减少线程的创建和…

科学技术创新杂志科学技术创新杂志社科学技术创新编辑部2024年第12期目录

科技创新 基于均质与细晶化的高性能限动芯棒生产工艺优化与实践 吕鹏昊;刘松; 1-4 大地电磁测深法在水文地质勘察中的应用研究 熊俊杰;毛卫东; 5-8 电石乙炔法制取聚氯乙烯生产工艺分析 龚志平; 9-12《科学技术创新》投稿&#xff1a;cnqikantg126.com 地面三维…

【LeetCode:394. 字符串解码 + 栈 | 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

VUE3实现个人网站模板源码

文章目录 1.设计来源1.1 网站首页页面1.2 个人工具页面1.3 个人日志页面1.4 个人相册页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1…