|
ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);visibility: visible;">全面讨论了检索增强生成(RAG)、其向 GraphRAG 的演进、记忆在智能 Agent 中的关键作用以及构建复杂 Agent 系统的架构模式。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);visibility: visible;">1. 检索增强生成 (RAG) 和 GraphRAGingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);visibility: visible;">-RAG 的核心概念:RAG 解决了 LLM 并非无所不知的局限性,通过在生成响应之前向它们提供来自特定数据集的相关上下文来实现。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);visibility: visible;">- “检索增强生成(RAG)是一种有效的方法,可以让 AI 从您希望它使用的特定数据集提取信息。这个想法相对简单——虽然生成式 LLM 在其领域表现出色,但它们并非无所不知。因此,如果我们希望 LLM 根据文档中的特定信息生成响应,我们必须首先向它提供这些信息(上下文)。”ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);visibility: visible;">-朴素 RAG 的普及: 基本的 RAG,通常被称为“朴素 RAG”,主要依赖于语义(向量)搜索,已成为知识库搜索系统的标准。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);">- “RAG 解决了这个问题,并且几乎已成为我们今天看到的绝大多数知识库搜索系统的普遍解决方案。”ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);">-向量搜索作为朴素 RAG 的基础:大多数 RAG 系统中的“R”(检索)基于向量搜索,利用嵌入模型对查询和数据进行编码,以实现基于相似性的检索。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);">- “检索上下文的方法有很多,但迄今为止最常见的方法是对给定数据集进行语义搜索(向量搜索)。这就引出了术语‘朴素 RAG’,它仅仅是一个基本的问答系统,使用基于向量搜索的检索。”ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);">-朴素 RAG 的局限性:朴素 RAG 将数据条目视为独立的,缺乏对它们之间关系(超出语义邻近性)的明确表示。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);">- “需要注意的是,每个条目都是独立的。每个条目都具有可以用向量(嵌入)表示的意义。因此,朴素 RAG 只能访问每个条目的独立向量信息。这种数据表示方式无法表示数据点之间超出语义空间中其意义邻近性的任何关系。” -GraphRAG 的引入:GraphRAG 在检索过程中利用知识图谱,实现基于数据点之间关系的上下文检索。 - “例如,Graph RAG 允许根据数据库中数据点之间的关系来检索上下文。结合基于向量搜索的 RAG 和 Graph RAG 的混合 RAG 系统,我们不仅可以根据其上下文含义返回结果,还可以根据数据内的关系返回结果。” -GraphRAG 的优势:GraphRAG 提供了一个更具凝聚力和组织性的实体、关系和社区表示,允许基于上下文含义和数据关系进行检索。它支持结合图搜索和向量搜索的混合检索方法。 -GraphRAG 中的混合检索: GraphRAG 通过首先使用向量搜索识别相关实体,然后使用图遍历发现连接信息来促进混合检索。 -GraphRAG 的局限性:包括初始知识图谱构建的成本和工作量、高连接节点可能出现的扩展性问题,以及需要定期进行完全重新索引才能纳入新数据,这使得更新效率低于传统 RAG。 - “与传统 RAG 基于块的方法相比,GraphRAG 提供了更以实体为中心的索引和检索,提供了更丰富的实体和社区描述。然而,它面临着静态 LLM 生成摘要的挑战,这些摘要需要定期进行完全重新索引才能捕获新数据进入时的更新。这个索引管道可能会产生大量的 token 成本。” -何时使用 GraphRAG:在数据具有重要关系和相互依赖性(例如合同、研究论文或组织记录)时特别有价值。 - 当数据中充满了连接和相互依赖关系时,例如合同、研究论文或组织记录,它尤其强大。 2. Agent 中的记忆 AI Agent 的真正智能和自主性需要跨交互持续存在的记忆,使其能够学习、演进并保持上下文。这超出了上下文窗口和无状态 RAG 的局限性。 -当前 AI 缺乏真正记忆:尽管许多系统通过上下文窗口创造了“记忆的幻觉”,但大多数 AI 系统目前都是无状态的,缺乏记住过去交互或随时间调整的能力。 “不幸的是,这正是当今大多数 AI 系统的行为方式。它们很聪明,是的,但它们缺乏一个关键的东西:记忆。” - “由上下文窗口和巧妙的提示工程创造的这种记忆幻觉导致许多人认为 Agent 已经‘记住’了。实际上,今天大多数 Agent 都是无状态的,无法从过去的交互中学习或随时间进行调整。” -持久内部状态的重要性:真正的记忆涉及到构建一个持久的内部状态,该状态会演进并影响 Agent 的所有未来交互。 - “记忆不是仅仅存储聊天记录或在提示中填充更多的 token。它是在构建一个持久的内部状态,该状态会演进并影响 Agent 的每一次交互,即使是相隔数周或数月。” -记忆的三大支柱:状态(了解当前发生的事情)、持久性(跨会话保留知识)和选择(决定什么值得记住)定义了 Agent 中的记忆,从而实现了连续性。 - “定义 Agent 中记忆的三大支柱是:状态:了解当前正在发生的事情,持久性:跨会话保留知识,选择:决定什么值得记住。它们共同实现了我们以前从未有过的东西:连续性。” -上下文窗口的局限性:虽然有用,但大型上下文窗口是临时的、平坦的(没有优先级)、昂贵的(成本和延迟)、基于邻近性进行召回、反应式的,并且不提供个性化。 - “但这种方法由于某些限制而不足。调用具有更多上下文的 LLM 的主要缺点之一是它们可能很昂贵:更多 token = 更高的成本和延迟。” - 提供的表格清晰地对比了上下文窗口和记忆在多项功能(保留、范围、扩展、延迟、召回、行为、个性化)上的差异。 -RAG 与记忆的区别:RAG 在当前交互中检索外部知识以提供更好的答案,它是无状态的。记忆通过捕获用户偏好、过去的交互和结果来塑造未来的行为,从而提供连续性。 - “虽然 RAG(检索增强生成)和记忆系统都检索信息来支持 LLM,但它们解决的问题截然不同。” - “RAG 帮助 Agent 更好地回答问题。记忆帮助 Agent 更聪明地行事。” -系统层面的主要差异:与无状态 RAG 不同,记忆跟踪时间、跨会话维护状态、学习用户模型并根据过去的经验进行调整。 - 提供的表格在时间意识、状态性、用户建模和适应性方面突出了这些差异。 -记忆的类型:Agent 可以拥有短期(工作记忆用于对话连贯性)和长期记忆,长期记忆可以进一步分为事实记忆(偏好、风格)、情景记忆(特定的过去交互)和语义记忆(概括性知识)。 - “在基础层面,AI Agent 中的记忆有两种形式:短期记忆:在一次交互中保持即时上下文。长期记忆:跨多次交互和会话保留知识。” - 详细说明工作记忆、事实记忆、情景记忆和语义记忆的表格提供了每种类型的清晰示例。 -智能过滤和动态遗忘的重要性:有效的记忆系统需要优先处理和选择性地保留重要信息,同时随着时间的推移遗忘不相关的信息,以避免信息过载并保持专注。 - “智能过滤:并非所有信息都值得记住……动态遗忘:好的记忆系统需要有效地遗忘。” -记忆整合和跨会话连续性:高级记忆系统在短期和长期存储之间转移信息,并在不同的会话和时间段内保持上下文。 - “记忆整合:我们根据使用模式、新近度和重要性在短期和长期记忆存储之间移动信息……跨会话连续性:大多数 Agent 在会话结束时重置。” -记忆作为差异化因素:未来,记忆将成为 AI Agent 的关键差异化因素,将它们从一次性工具转变为持久的队友。 - “在一个所有 Agent 都可以访问相同模型和工具的世界中,记忆将成为差异化因素。不仅仅是做出响应的 Agent——那个能够记住、学习并与您一起成长的 Agent 将会获胜。” 3. Agent 架构 Agent 架构超越了简单的 LLM 交互,通过整合记忆、工具和推理来创建能够执行复杂任务的自主系统。这些架构可以是单 Agent 或多 Agent 的,具有用于协作的各种设计模式。 -Agent 架构的定义:由一个或多个具有记忆和工具访问权限的 Agent 组成,能够自主决策。 - “Agent 架构由一个或多个具有记忆和工具访问权限的 Agent 组成。” -AI Agent 的组成部分:通常包括一个 LLM(用于推理)、记忆(短期和长期)以及对工具(例如向量搜索、网页搜索、API)的访问。推理包括规划和反思。 - 展示 AI Agent 组成部分的图表清晰地显示了 LLM 在中心,与记忆和工具交互。 -Agent 架构中的向量数据库:用作 RAG 管道的工具(外部知识源)和记忆(存储过去的交互以便进行语义检索)。 - “向量数据库在 Agent 架构中可用于不同的目的……向量数据库最常被用作 Agent 的工具,作为检索增强生成(RAG)管道的一部分……向量数据库也可用于 Agent 架构中的记忆。” -单 Agent 与多 Agent 架构:单 Agent 系统使用一个 LLM 和工具解决任务。多 Agent 系统涉及多个专门的 Agent 协作。选择取决于任务复杂度和要求。 - “在构建 Agent 系统时,您可以构建单 Agent 或多 Agent 架构……通常,我们可能仍然有一个 Agent (LLM) 作为整个操作的负责人:主 Agent。” -多 Agent 系统中的模式:存在多种用于构建多 Agent 协作的设计模式,包括循环(迭代改进)、并行(同时工作)、顺序(一个 Agent 的输出作为下一个的输入)、路由器(中心 Agent 指导)、聚合器/合成器(收集和合成输出)、分层/垂直(主管-下属)和网络/水平(点对点通信)。 -朴素 RAG 作为非 Agent :朴素 RAG 被描述为一个单次处理过程,在查询处理、相关性验证和单次检索方面存在局限性。 - “朴素(非 Agent 式)RAG 架构通常由一个嵌入模型、一个向量数据库和一个生成式 LLM 组成。这种非 Agent 式的朴素方法是一个单次解决方案,它直接使用用户查询来检索额外信息,然后直接在提示中使用检索到的信息。” -单 Agent RAG 架构:通过引入一个能够推理查询、分解查询、将其路由到适当的知识源、转换查询以获得更好的检索结果以及在生成答案之前评估检索到的信息的 Agent 来改进朴素 RAG。也可以集成记忆。 - 说明单 Agent RAG 工作流程的图表展示了这些步骤,包括检查记忆、分解查询、路由、转换和评估检索。 -多 Agent RAG 架构:串联多个专门的 Agent 以处理复杂任务。示例包括分层(主管协调查询 Agent)、顺序(一个 Agent 的输出作为下一个的输入)、人机协作(需要人工输入)和具有共享工具的系统。 -通过工具使用进行记忆转换:Agent 可以设计成使用特定工具转换记忆中的数据(例如,总结过去的交互或丰富用户数据)。 - “由于过去的交互可以存储在充当记忆的向量数据库中,因此数据转换 Agent 也可以用于记忆。如果您想例如总结过去的交互,这会很有用。” -灵活性和定制性:Agent 架构根据特定用例的需求提供了无限的设计可能性。 - 总之,构建 Agent 架构的方法有很多……可能性是无限的。 本次讨论重点介绍了从基本 RAG 到利用数据关系的更复杂方法(如 GraphRAG)的演进。强调了记忆在构建真正智能和适应性 AI Agent 中的关键作用,并介绍了设计用于检索密集型应用的单 Agent 和多 Agent 系统的基本概念和架构模式。向量数据库作为知识源和记忆存储的集成是贯穿这些概念的重复主题。 |