25年1月来自Penn State U和谷歌云的论文“Chain of Agents: Large Language Models Collaborating on Long-Context Tasks”。
解决有效处理长上下文的挑战已成为大语言模型 (LLM) 的关键问题。出现了两种常见策略:1)减少输入长度,例如通过检索增强生成 (RAG) 检索相关块,以及 2)扩展 LLM 的上下文窗口限制。但是,这两种策略都有缺点:输入减少不能保证覆盖所需信息的部分,而窗口扩展则难以专注于解决任务的相关信息。为了缓解这些限制,提出 Chain-of-Agents (CoA),这是一种新框架,它通过自然语言利用多智体协作,实现跨长上下文任务的各种 LLM 的信息聚合和上下文推理。CoA 由多个工作者智体组成,它们依次通信以处理文本的不同分段部分,然后是一个管理者智体,它将这些贡献合成为连贯的最终输出。 CoA 通过交替阅读和推理来处理整个输入,并通过为每个智体分配一个短上下文来缓解长上下文焦点问题。对 CoA 在问答、总结和代码完成等各种长上下文任务上进行了全面评估,结果表明,与 RAG、全上下文和多智体 LLM 的强大基线相比,CoA 的性能显著提升了 10%。
尽管 LLM 在各种场景中都表现出色,但它们在涉及长上下文的任务上却举步维艰 [8, 63, 57]。许多应用场景都需要极长的上下文,例如问答 [85, 22, 69]、文档和对话摘要 [25, 93, 91, 90, 12] 和代码补全 [20, 43],其中输入包含整本书 [32, 33] 和长篇文章 [16]。
为了应对长上下文任务的挑战,人们探索两个主要方向,如表所示:减少输入和窗口扩展。减少输入会在输入到下游 LLM 之前缩短输入上下文的长度。截断方法 [1, 67] 直接截断输入。检索增强生成 (RAG) [81] 通过嵌入相似性检索最相关的块,扩展了这一方向。然而,由于检索准确度低,LLM 可能会收到不完整的上下文来解决任务,从而影响性能。窗口扩展通过微调扩展 LLM 的上下文窗口以使用整个输入 [13, 44, 48]。例如,Claude-3 [5] 直接允许为每个输入读取 200k 个tokens。然而,当窗口变长时,LLM 很难专注于解决任务所需的信息,从而遭受上下文利用率低下的问题,例如“迷失在中间”问题 [37, 3, 42]。
多智体 LLM。多智体 LLM 已成为一个热门话题 [21]。大量研究集中在社会模拟 [52, 53] 和框架 [35] 上。基于它们的成功,一些研究探索游戏设置 [39, 74, 82, 83, 47]、世界大战 [23]、经济市场 [36, 76]、推荐系统 [88] 和流行病 [19]。另一些研究则推进问题解决,重点是通过多智体辩论 [18, 80, 10, 66] 和讨论 [11, 58] 来推理短文本,以解决推理 [18, 66]、力学问题 [49]、论文评审 [84]、知识图谱构建 [86] 和代码智能 [70, 24] 中的不同任务。 LongAgent [92] 利用树结构在长输入上下文中进行多跳 QA,兄弟工作智体之间不进行通信,而 CoA 利用链结构,允许通信单元在工作智体之间流动。
LLM 的长上下文建模。减少输入:RAG 被广泛用于解决基于长上下文查询的任务 [81, 2]。结合强大的检索器 [79, 41, 73],LLM 有望处理开放域中的长上下文问题。先前的研究在预训练 [26, 72]、微调 [34]、推理 [87] 或直接集成 [28, 61] 期间增强 LLM。此外,还提出一些 token 级检索方法 [38]。Longllmlingua [27] 从长提示中删除 token,以将长上下文提示压缩到所需的预算。窗口扩展:由于 GPU 的发展,LLM 的上下文窗口越来越长。例如,上下文窗口从 1024(GPT-2 [56])、2048(GPT-3 [7])增加到 128k(GPT-4 [50])。此外,最新版本的 Claude-3 [5] 支持 200k 上下文窗口。为了节省 LLM 训练的成本,提出一些持续学习或微调方法来扩展预训练 LLM 的上下文窗口 [46, 55, 44, 48]。例如,位置插值 [13] 修改旋转位置编码 [64],并将 LLaMA [68] 的上下文长度扩展到 32k。与上述工作不同,CoA 不会减少输入长度或延长 LLM 的窗口长度,而是利用多智体协作和通信来获得完整的感受野。
最近,一些研究采用文本分块算法来划分和处理长文本输入。值得注意的是,RecurrentGPT [95] 采用链式结构以逐块的方式生成长输出,保持故事情节的连续性。WalkMaze [9] 利用集中式树结构,无需同级智体之间的通信,在长输入上下文中进行单跳问答。与这些工作不同,CoA 专注于具有链式结构和同级智体间通信的长输入任务。
复杂任务推理。以前关于复杂推理的工作主要集中在将复杂问题分解为子问题,以逐步解决它们。[54] 用无监督模型分解问题,然后用另一个模型分别回答。分解提示 [30] 利用一些预定义的模块对每个分解后的子问题进行分类,然后根据需要进一步分解。此外,分解还用于人机交互 [77] 和提示器训练 [71]。最近,许多针对 LLM 的研究已经提出,例如思想链 [75]、从最少到最多提示 [94] 和 Pearl [65]。然而,提示的长度不超过单个智体的上下文限制。
受上述挑战的启发,本文提出一个新框架,智体链 Chain-of-Agents (CoA),其灵感来自人类在有限的大脑工作记忆约束下交错阅读和处理长上下文的方式 [15]。CoA 的关键思想是利用多智体通信来实现跨不同 LLM 的信息聚合和上下文推理能力。如图所示,CoA 包含两个阶段。在第 1 阶段,负责不同长上下文块的一系列工作者智体协作并汇总证据以回答给定的查询。为此,工作者智体按顺序读取和处理,每个智体都从前一个工作者智体接收消息,并将有用的更新信息传输到下一个。在第 2 阶段,管理者智体从最后一个工作者智体接收完整证据并生成最终响应。
CoA 是一个无需训练、与任务无关且高度可解释的框架,它通过交错读取处理来处理整个“感受野”,并通过为每个智体分配一个短上下文来缓解长上下文聚焦问题。与输入减少不同,LLM 需要从减少的输入开始处理低感受野(“读取然后处理”),CoA 中的工作者智体在读取所有输入之前开始处理每个块(“交错读取处理”),解决了输入减少所面临的问题,例如通用摘要或段落计数 [6]。与上下文扩展不同,CoA 利用通信能力,而不是试图将许多 token 馈入 LLM。对于复杂任务来说,这是一种更自然的解决方案,因为假设每个 LLM 都有其限制,并且总会有超出其限制的复杂上下文任务。与全上下文相比,CoA 还通过将时间复杂度从 n^2 降低到 nk(其中 n 是输入 token,k 是 LLM 的上下文限制)来提高成本效益。
为了制定任务,将长上下文样本表示为 (x, y, q),其中 x 是 n 个 token 的输入,y 是 m 个 token 的输出,q 是可选查询。给定一个具有 k 个 token(通常 k ≪ n)作为上下文窗口限制的 LLM,目标是使用有限的输入上下文窗口生成 y。因此,将每个源文本 x 划分为块 x = {c/1,c/2…c/l},以便每个块可以完全输入到 LLM 智体主干模型中。
第 1 阶段:工作者智体:段理解和链式通信
在第 1 阶段,CoA 包含一系列 l 个工作者智体。每个工作者 W/i 输入源文本 x 中的块 c/i、查询 q、工作者智体的特定任务指令 I/W 以及从前一个智体传递的消息(表示为“通信单元”CU/i−1)的连接。通信是单向的,从工作者智体 i − 1 传递到 i。工作者智体处理它们并输出消息 CU/i 给下一个工作者,表示为:CU/i =LLM/W/i(IW, CU/i−1,c/i,q)。
工作者智体生成的 CU 因任务而异。对于问答,CU 包含管理者回答问题的证据。对于总结,CU 包含先前文本的摘要。对于代码完成,CU 包含带有函数/类名称和说明的代码摘要。在不同任务上的有效性证明了 CoA 的灵活性。
CoA 中多步的工作者通信,将模型上下文扩展到完整的接受域,这意味着无论输入有多长,最后一个工作者都可以读取完整的输入。因此,通过调整工作者智体的数量,CoA 可以扩展到不同长度的输入。
上图的左侧强调了工作者之间协作通信的必要性,以有效解决复杂的长上下文推理任务。1) 虽然给定 c/1 时问题无法回答,但 W/1 会生成可用于回答问题的相关证据;2) 利用前一位工作者的部分答案,W/2 进一步推理当前源以完成跨智体的完整推理链并生成解释推理链;3) W/3 在块 3 中未找到相关信息,它直接重写 CU/2,将正确答案作为 CU/3 的第一个token,而不添加任何不相关的信息。这表明,如果工作者是独立的(例如树结构通信),那么当第一步的答案由另一个工作者持有时,不可能回答第二步。
第 2 阶段:管理者智体:信息集成和响应生成
在第 2 阶段,经过工作者智体的多个信息提取和理解步骤,管理者智体产生最终解决方案。当工作者智体在长上下文源中提取相关信息时,管理者智体综合“工作者智体链”末端积累的相关信息以生成最终答案。具体而言,给定管理者的指令 I/M 和查询 q ,管理者智体使用来自上一个工作者 CU/l 的积累知识并生成最终答案Response:Response = LLM/M (I/M , CU/l, q) 。
使用单独的 LLM 作为管理者智体的好处是分解分析长上下文源中的块(“工作者智体”)和生成最终答案(“管理者智体”)的职责,以便每个智体都能最大限度地履行其职责。
如下所示算法伪代码的总结:
实验设置如下。
数据集。对三种任务类型的九个长上下文数据集进行了实验:
• 问答。考虑 LongBench [6] 和 SCROLL [60] 中的五个 QA 数据集。HotpotQA [85] 是一个基于 Wikipedia 的多步 QA 数据集。它需要跨多个段落进行推理才能找到答案。MuSiQue [69] 是一个多步 QA 数据集。它比 HotpotQA 困难得多,因为它在一个样本中包含更多跳转、无法回答的问题和更难分散注意力的内容。NarrativeQA [31] 是一个针对整本书或电影脚本的 QA 数据集。答案可以是抽象的或提取的、是/否和无法回答的。Qasper [17] 是一个针对 NLP 论文的问答数据集。它还包含提取、抽象、是/否和无法回答的问题。QuALITY [51] 是一个基于故事和文章的数据集,每个样本都有多项选择题。模型需要在选项中选择正确的答案。
• 总结。从 SCROLLS 中选择两个总结数据集。QMSum [93] 是一个基于查询的总结数据集,由来自学术和工业产品等多个领域的会议记录组成。GovReport [25] 是一个通用总结数据集,包含美国政府问责局发布的长篇报告。还使用一个数据集进行长篇上下文记忆任务。BookSum [33] 是一个用于长篇叙述总结的数据集集合,包括小说、戏剧和故事。用 BookSum 数据集的书籍级别分区进行实验。
• 代码完成。选择从 GitHub 存储库收集的 RepoBench-P [43],模型需要根据长代码库生成下一行代码。
LLM。在所有实验中总共使用六个 LLM 作为 CoA 的主干。PaLM 2 [4] 是一系列模型,具有从左到右的密集解码器专用语言模型,该模型在 7800 亿个token的高质量语料库上进行预训练。用 text-bison@001 和 text-unicorn@001 进行实验,最大上下文窗口为 8k。Gemini 1.0 [67] 是 Google 提出的 LLM 系列。用 gemini-ultra 进行实验。Gemini 的输入限制为 32k 个tokens。Claude 3 [5] 是 Anthropic 开发的大型语言模型系列。该系列包括三个按能力升序排列的模型:claude-3-haiku、claude-3-sonnet 和 claude-3-opus。这些模型能够在上下文窗口中使用 200k 个tokens,为长上下文任务提供了强大的基线。尽管该框架可以灵活地使用不同类型的 LLM 作为工作者和管理者,但如果未指定,对每个 W/i 和 M 使用相同的模型。
基线。选择基线的原则,是从减少输入和窗口扩展中找到最强大和最典型的方法。第一个基线是 Vanilla。它直接消耗 token,直到 LLM 的上下文窗口被充分利用,这意味着如果使用 Claude 3,则窗口 LLM 为 200k。另一个是检索增强生成 (RAG)。在此用最先进的检索器 [79]。按照 [81],首先将源文本分割成 300 个单词的块,然后使用检索器对其进行重新排序。然后将前 n 个块输入下游 LLM,直到上下文窗口被充分利用。GovReport 数据集最初不包含查询,本文创建一个伪查询“整个政府报告的摘要是什么?”作为要重新排序的查询。
为了评估 CoA 与可能的多智体方法相比的性能,构建两种方法。与 CoA 类似,也使用类似的指令将每个块 c/i 分配给 W/i 以生成 CU/i。在这些方法中,工作智体是并行且独立的,而 CoA 是顺序的。多智体投票(合并)每个智体根据 c/i 直接生成答案 a/i。对所有答案 a/i 应用多数投票来决定最终答案。多智体分层结构(分层)。受 [9] 的启发,提出一个分层框架,其中通信在工工作者 W/i 和管理者 M 之间形成树结构。对于每个工作者,它首先判断 c/i 是否包含有用信息。如果为真,则生成一个通信单元 CU/i。然后,所有 CU/i 都被发送给管理者 M 以得出最终答案。此外,在每种方法末尾附加一个整数 L,以清楚地提醒 LLM 的窗口大小限制。例如,“CoA(8K)”是指 CoA 中使用的窗口大小为 8K 的基本 LLM。