思想领袖
RAG 演化 – Agentic RAG 入门
什么是 RAG(检索增强生成)?
检索增强生成(RAG)是一种结合大型语言模型(LLM)和外部数据检索的技术,以提高生成响应的质量和相关性。 传统的 LLM 使用其预训练的知识库,而 RAG 管道将在运行时查询外部数据库或文档,并检索相关信息以生成更准确和上下文丰富的响应。这在问题复杂、具体或基于特定时间范围时特别有用,因为模型的响应是由最新的领域特定信息告知和丰富的。
当前 RAG 景观
大型语言模型彻底改变了我们访问和处理信息的方式。然而,仅仅依赖内部预输入知识可能会限制其答案的灵活性,特别是在复杂问题的情况下。检索增强生成解决了这个问题,允许 LLM 从其他可用的外部来源获取和分析数据,以产生更准确和有见地的答案。
信息检索和自然语言处理的最新发展,特别是 LLM 和 RAG,开启了新的效率和复杂性边疆。这些发展可以从以下几个方面来评估:
- 增强信息检索:RAG 系统中信息检索的改进非常重要,以便高效地工作。最近的工作开发了各种向量、重新排名算法、混合搜索方法来提高精确搜索。
- 语义缓存:这是减少计算成本而不牺牲一致性响应的主要方法之一。这意味着当前查询的响应将被缓存,附带其语义和语用上下文,这又促进了更快的响应时间和一致的信息交付。
- 多模态集成:除了基于文本的 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 返回的信息以提供正确的信息。
- ReAct 是一个思考和行动的迭代过程,结合规划、使用工具和观察。例如,要设计一个端到端的旅行计划,系统将考虑用户的需求并通过调用 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 查询引擎就是这样的方法,它动态地选择工具以最大化对查询的响应。
2. 长期上下文保留
虽然记忆的主要工作是保留多次交互的上下文,但 Agentic RAG 中的记忆代理始终保持对交互的意识,从而产生连贯和上下文丰富的响应。
LlamaIndex 还包括一个具有记忆的聊天引擎,用于上下文对话和单次查询。为了避免 LLM 上下文窗口的溢出,这种记忆必须在长时间讨论中严格控制,并减少为总结形式。
3. 子问题引擎用于规划
通常,需要将复杂的查询分解为更小、更易于管理的任务。子问题查询引擎是 LlamaIndex 作为代理使用的核心功能之一,通过将大查询分解为更小的查询,顺序执行,然后合并以形成一个连贯的答案。代理执行多步骤规划的能力代表了与线性规划相比的多方面查询方法。
4. 反思和错误纠正
反思代理生成输出,但然后检查输出的质量以进行必要的纠正。这项技能对于确保准确性和输出的预期结果至关重要。感谢 LlamaIndex 的自反工作流,代理将审查其性能,通过重试或调整不符合某些质量水平的活动。由于它是自我纠正的,Agentic RAG 对于需要可靠性的企业应用程序来说是可靠的。
5. 复杂的代理推理:
树形探索适用于代理需要调查多个可能路径以实现某个目标的情况。与顺序决策相比,树形推理使代理能够同时考虑多种策略,并根据实时更新的评估标准选择最有前途的策略。
LlamaCloud 和 LlamaParse
具有针对企业级上下文增强的 LLM 和 RAG 应用的广泛托管服务,LlamaCloud 是 LlamaIndex 环境中的一个重大飞跃。该解决方案使 AI 工程师能够专注于开发关键业务逻辑,同时减少数据处理的复杂过程。另一个可用的解析引擎是 LlamaParse,它与 LlamaIndex 的摄取和检索管道集成。它构成了处理复杂、半结构化文档的重要组成部分,包括表格和图表等嵌入对象。另一个重要的构建块是托管的摄取和检索 API,它提供了多种方式来轻松加载、处理和存储来自大量来源的数据,例如 LlamaHub 的中央数据存储库或 LlamaParse 输出。此外,它支持各种数据存储集成。
结论
Agentic RAG 代表了信息处理的转变,通过将更多的智能融入代理本身。Agentic RAG 可以与各种过程或 API 结合,以提供更准确和精细的结果。例如,在文档摘要的情况下,Agentic RAG 将评估用户的目的,然后创建一个摘要或比较详细信息。当提供客户支持时,Agentic RAG 可以根据用户的训练模型、可用内存和外部来源准确、个性化地回答越来越复杂的客户询问。Agentic RAG 强调了从生成模型到更精细的系统的转变,这些系统利用其他类型的来源来实现强大的和准确的结果。然而,鉴于它们现在的生成和智能能力,这些模型和 Agentic RAG 正在追求更高的效率,因为越来越多的数据被添加到管道中。
