思想领袖

RAG 演化 – Agentic RAG 入门

mm

什么是 RAG(检索增强生成)?

检索增强生成(RAG)是一种结合大型语言模型(LLM)和外部数据检索的技术,以提高生成响应的质量和相关性传统的 LLM 使用其预训练的知识库,而 RAG 管道将在运行时查询外部数据库或文档,并检索相关信息以生成更准确和上下文丰富的响应。这在问题复杂、特定或基于特定时间范围时尤其有用,因为模型的响应是由最新的领域特定信息告知和丰富的。

当前 RAG 景观

大型语言模型彻底改变了我们访问和处理信息的方式。然而,仅仅依赖内部预输入知识可能会限制其答案的灵活性,特别是对于复杂的问题。检索增强生成解决了这个问题,允许 LLM 从外部来源获取和分析数据以产生更准确和有见地的答案。

信息检索和自然语言处理的最新发展,特别是 LLM 和 RAG,开启了新的效率和复杂性边界。这些发展可以从以下几个方面来评估:

  1. 增强信息检索:RAG 系统中信息检索的改进非常重要。最近的工作开发了各种向量、重新排名算法、混合搜索方法来提高精确搜索的准确性。
  2. 语义缓存:这是降低计算成本而不牺牲一致性响应的主要方法之一。它意味着当前查询的响应将被缓存,附带其语义和语用上下文,这进一步促进了更快的响应时间和一致的信息传递。
  3. 多模态集成:除了基于文本的 LLM 和 RAG 系统外,这种方法还涵盖了视觉和其他模态的框架。它允许访问更广泛的源材料,并产生越来越复杂和准确的响应。

传统 RAG 架构的挑战

虽然 RAG 正在演化以满足不同的需求,但仍然有一些挑战存在于传统的 RAG 架构中:

  • 摘要:总结大型文档可能很困难。如果文档很长,传统的 RAG 结构可能会忽略重要信息,因为它只获取前 K 个片段。
  • 文档比较:有效的文档比较仍然是一个挑战。RAG 框架通常会导致不完整的比较,因为它从每个文档中随机选择前 K 个块。
  • 结构化数据分析:处理结构化数值数据查询(如确定员工下次休假的时间)很困难。这些模型不适合精确地检索和分析数据点。
  • 处理多部分查询:回答多部分问题仍然受到限制。例如,发现整个组织中所有区域的共同休假模式很困难,因为它受到 K 个块的限制,限制了完整的研究。

转向 Agentic RAG

Agentic RAG使用智能代理来回答需要仔细规划、多步骤推理和集成外部工具的问题。这些代理执行熟练研究人员的任务,灵活地在多个文档中导航,比较数据,总结发现,并生成全面、准确的响应。

在经典的 RAG 框架中引入代理的概念,以提高系统的功能和能力,导致了 Agentic RAG 的产生。这些代理执行超出基本信息检索和生成的额外任务和推理,以及编排和控制 RAG 管道的各个组件。

三种主要的 Agentic 策略

路由器根据查询类型将查询发送到相应的模块或数据库。路由器使用大型语言模型动态决定哪个上下文请求属于哪个引擎,以提高准确性和效率。

查询转换是指将用户的查询重写以最佳地匹配所需的信息,或者反之,将数据库提供的信息转换为用户可以理解的形式。这可能包括重写、扩展或将复杂问题分解为更简单的子问题。

这还需要子问题查询引擎来应对使用多个数据源回答复杂查询的挑战。

首先,将复杂问题分解为针对每个数据源的更简单的问题。然后,收集所有中间答案,并合成最终结果。

Agentic RAG 层

  • 路由:问题被路由到相关的知识库处理,基于相关性。例如,当用户想要获取某类书籍的推荐时,查询可以被路由到包含这些类别书籍知识的知识库。
  • 查询规划:这涉及将查询分解为子查询,并将它们发送到各自的管道。代理为所有项目(如年份)生成子查询,并将它们发送到各自的知识库。
  • 工具使用:语言模型与 API 或外部工具交互,了解这将涉及什么,通信将在哪个平台上进行,以及何时需要这样做。例如,给定用户对特定日期天气预报的请求,LLM 与天气 API 交互,确定位置和日期,然后解析 API 返回的结果以提供正确的信息。
  • 反应和错误纠正 是一个迭代的思考和行动过程,涉及规划、使用工具和观察。例如,要设计一个完整的度假计划,系统将考虑用户的需求,通过调用 API 来获取路线、旅游景点、餐厅和住宿的详细信息。然后,系统将检查结果的正确性和相关性,生成一个与用户提示和时间表相关的详细旅行计划。
  • 动态查询规划:代理执行多个动作或子查询并行,然后聚合这些结果。例如,如果要比较两家公司的财务结果并确定某个指标的差异,代理将同时处理两家公司的数据,然后聚合发现;LLMCompiler 是一种这样的框架,实现了函数的高效并行调用。

Agentic RAG 和 LLMaIndex

LLMaIndex 代表了 RAG 管道的一个非常高效的实现。该库通过为工具提供方便的数据处理和检索接口,以及与各种数据源的接口,填补了将结构化组织数据集成到生成式 AI 模型中的空白。LLMaIndex 的主要组件如下所述。

LlamaParse 解析文档。

Llama Cloud 是一个针对企业服务的 RAG 管道,具有最小的手动劳动量。

使用多个 LLM 和向量存储,LLMaIndex 提供了一种在 Python 和 TypeScript 中构建应用程序的集成方式,具有 RAG。其特性使其成为公司希望利用 AI 进行数据驱动决策的强大骨干。

Agentic RAG 与 LLMaIndex 的关键组件

让我们深入了解 Agentic RAG 的一些成分以及它们如何在 LlamaIndex 中实现。

1. 工具使用和路由

路由代理根据提示类型选择最合适的 LLM 或工具。这导致了上下文敏感的决策,例如用户是否想要概述或详细摘要。例如,LlamaIndex 中的 Router Query Engine 动态选择工具以最大化对查询的响应。

2. 长期上下文保持

虽然记忆的主要任务是保持多次交互的上下文,但 Agentic RAG 中的记忆代理始终保持对交互的意识,导致一致且上下文丰富的响应。

LlamaIndex 还包括一个具有对话记忆的聊天引擎,可以进行上下文对话和单次查询。为了避免 LLM 上下文窗口的溢出,记忆必须在长时间讨论中严格控制,并且必须被总结以保持对话的连贯性。

3. 子问题引擎用于规划

通常,需要将复杂的查询分解为更小、可管理的任务。子问题查询引擎是 LlamaIndex 作为代理使用的核心功能之一,通过将大查询分解为更小的查询,依次执行,然后合并以形成一个连贯的答案。代理能够逐步调查查询的多个方面,代表了多步骤规划而非线性规划的概念。

4. 反思和错误纠正

反思代理生成输出,然后检查输出的质量以进行必要的纠正。这项技能对于确保准确性和输出的预期结果至关重要。感谢 LlamaIndex 的自我反思工作流程,代理将审查其性能,通过重试或调整不符合某些质量水平的活动。由于它是自我纠正的,Agentic RAG 对于需要可靠性的企业应用程序来说是可靠的。

5. 复杂代理推理:

树形探索适用于代理需要调查多个可能路径以实现某个目标的情况。与顺序决策相比,树形推理使代理能够同时考虑多种策略,并根据实时更新的评估标准选择最有前途的策略。

LlamaCloud 和 LlamaParse

LlamaCloud 是 LlamaIndex 环境中的一个重大飞跃,提供一系列针对企业级上下文增强的托管服务,适用于 LLM 和 RAG 应用程序。该解决方案使 AI 工程师能够专注于开发关键业务逻辑,同时减少数据处理的复杂过程。

另一个可用的解析引擎是 LlamaParse,它与 LlamaIndex 中的摄取和检索管道集成。它是处理复杂、半结构化文档(其中包含嵌入对象,如表格和图表)的重要组成部分。另一个重要的构建块是托管的摄取和检索 API,它提供了多种方式来轻松加载、处理和存储来自大量来源的数据,例如 LlamaHub 的中央数据存储库或 LlamaParse 输出。此外,它支持各种数据存储集成。

结论

Agentic RAG 代表了信息处理的转变,通过引入更智能的代理。Agentic RAG 可以与过程或不同的 API 结合使用,以提供更准确和精细的结果。例如,在文档摘要中,Agentic RAG 将评估用户的目的,然后生成摘要或比较详细信息。当提供客户支持时,Agentic RAG 可以准确、个性化地响应越来越复杂的客户询问,不仅基于其训练模型,还基于可用的记忆和外部来源。Agentic RAG 强调了从生成模型到更精细的系统的转变,这些系统利用其他类型的来源来实现强大和准确的结果。然而,作为现在的生成和智能模型,Agentic RAG 正在寻求更高的效率,因为越来越多的数据被添加到管道中。它是从生成模型转向更精细的系统的转变,这些系统利用其他类型的来源来实现强大和准确的结果。然而,作为现在的生成和智能模型,这些模型和 Agentic RAG 正在寻求更高的效率,因为越来越多的数据被添加到管道中。

Chaitanya Pathak 是一位经验丰富的技术高管,专门从事生成式 AI 的产品化。拥有十多年企业软件和产品管理经验,他目前担任 Analyttica 的 LEAPS 首席产品和技术官。Chaitanya 开发了一种综合框架,目前正在申请专利,该框架可以将 AI 技术转化为可扩展、市场就绪的产品,跨多个行业,赋予产品和技术领导者带来有意义的影响。