微信扫码
与创始人交个朋友
我要投稿
一部分简单场景下,朴素的 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 需要实现以下两大组件:
在 Graph 内执行的必要算子:比如在 Self-RAG 中,评分算子就至关重要。在原始论文中, 是需要自己训练一个打分模型来针对检索结果评分;在实际实现中也可以采用 LLM 进行评分,这样可以简化系统开发并且减少对各类环节依赖。
Self-RAG 是相对初级的 Agentic RAG,RAGFlow 中也已提供了相关实现。实践证明,Self-RAG 对于较复杂的多跳问答和多步推理可以明显提升性能。
多跳问答:首先将多跳查询分解为更简单的单跳查询,重复访问 LLM 和 RAG 检索器来解决这些子查询,并合并它们的答案以形成完整答案。
自适应检索:适用于需要多步逻辑推理的复杂问题。复杂的问答往往需要从多个数据源综合信息并进行多步推理。自适应检索通过迭代地访问 RAG 检索器和 LLM,逐步构建起解决问题所需的信息链。
如下图所示,Adaptive-RAG 的工作流程与 Self-RAG 类似,只是在前面增加了一个查询分类器,就提供了更多种对话的策略选择。
与包含 Web Search 在内的外部工具协同工作。
可以规划查询任务,例如查询意图分类,查询反馈等等。
任务编排系统类似的实现主要有 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 的体现。
Adaptive-RAG: Learning to adapt retrieval-augmented large language models through question complexity, arXiv preprint arXiv:2403.14403
https://www.deeplearning.ai/the-batch/issue-242/
END
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-08-13
2024-05-10
2024-05-28
2024-04-26
2024-04-12
2024-04-25
2024-05-06
2024-07-25
2024-05-14