现有的大模型(LLMs),尽管在语言理解和复杂推理任务上取得了显著进展,但在处理这些超长文本时却常常力不从心。它们在面对超过10万令牌的文本输入时,常常会出现性能严重下降的问题,这被称为“中间丢失”现象。这一问题不仅限制了LLMs在实际应用中的有效性,也对计算资源提出了巨大的挑战。
本文将介绍一种创新的解决方案——LONGAGENT,这是由复旦大学的研究团队提出的一种基于多代理协作的方法,它成功地将语言模型的上下文窗口扩展到128k令牌,显著提升了长文本处理的能力。与传统的单模型处理方式相比,LONGAGENT通过分散任务给多个代理,不仅降低了单个模型的计算负担,还通过代理间的协作和信息共享,有效解决了长文本中的信息丢失和处理延迟问题。这一突破性进展,为长文本的高效处理和深入理解打开了新的大门,预示着在处理大规模文本数据方面的一个新时代的到来。
方法
LONGAGENT通过将长文本分割成多个小块,分配给不同的成员处理,然后由领导者协调这些成员,共同完成对长文本的深入理解和分析。在这一过程中,领导者的作用至关重要。它不仅需要理解用户的查询意图,还要组织成员之间的讨论,监督成员间的沟通,以解决由于模型幻觉导致的意见冲突,并最终汇总信息,推导出回答。这一机制有效地扩展了模型的处理能力,使其能够处理超过100k令牌的长文本,同时保持了高效的计算效率。
图1展示了LONGAGENT协作方案的工作原理。说明了LONGAGENT如何处理长文本并生成最终响应。
-
文本分割:输入的长文本(图左)首先被分割成若干个小块(chunks),这些文本块随后被分配给不同的成员(members)进行处理。
-
领导者接收指令:领导者(Leader)接收到用户指令(图右),这些指令通常是一个问题或一个需要模型执行的任务。
-
子问题分解:领导者将用户指令分解为最简单的子问题(sub-problems),这样做可以帮助各个成员更清晰地理解他们需要解决的具体任务。
-
成员讨论:领导者召集成员进行讨论,每个成员根据自己的文本块内容提供信息。这个讨论过程可能涉及多轮对话,以确保从各个成员那里收集到所有必要的信息。
-
解决子问题:在讨论过程中,成员们协作解决每一个子问题,领导者负责监督这个过程,并确保所有子问题都能得到妥善解答。
-
最终响应生成:一旦所有子问题都得到了答案,领导者将这些答案综合起来,进行推理,形成对原始用户指令的最终响应。
这个协作方案的优势在于它能够有效地利用多个代理的集体智慧来处理复杂的长文本任务,同时通过领导者的协调来解决成员之间可能存在的信息冲突,从而提高整体的回答质量和准确性。
为了构建一个能够有效处理特定长文本任务的代理团队,LONGAGENT采用了专家模型的概念。这些专家模型在特定任务上表现出色,能够提供更准确和可靠的响应。研究团队通过使用提示(prompt)或微调(fine-tuning)的方法,构建了这些专家模型。在任务开始时,领导者会根据任务描述选择合适的专家模型来实例化团队成员。
在处理用户查询时,领导者需要协调各个成员,以获取和整合相关信息。领导者会根据历史对话状态和用户查询,决定下一步的行动,这可能包括发起新一轮的对话、解决成员间的冲突,或是得出最终答案。这一协作推理过程可能涉及多轮对话,直到领导者认为已经收集到足够的信息来推导出用户查询的答案。
由于模型幻觉的存在,成员可能会提供与文档内容不符的错误答案。为了解决这一问题,LONGAGENT引入了成员间的通信机制。当领导者发现成员间存在冲突的答案时,它会识别出这些冲突,并要求相关成员共享文本块,并通过直接交互来消除幻觉性的回答。这一策略被证明是简单而有效的,大多数经历幻觉的成员在收到包含正确答案的文本块后,能够纠正它们最初的错误回答。
图2展示了LONGAGENT如何通过分步骤的协作和推理过程,有效地处理长文本并生成准确的回答。这种多代理协作方法不仅提高了处理长文本的效率,而且通过减少单个模型处理大量信息的负担,提高了整体的准确性和可靠性。
-
成员选择(Step 1):领导者根据任务描述构建一个定制化的代理团队。这意味着领导者会根据特定任务的需求,选择或实例化具有相应专业能力的成员。例如,如果任务是回答基于给定段落的问题,领导者可能会选择问答(QA)专家模型作为团队成员。
-
协作推理(Step 2 & 3):领导者组织团队成员从文档中收集信息并解决冲突。这个过程可能涉及多个回合,领导者会持续监控对话状态,根据成员的回答和提供的证据来指导信息搜集的方向,并解决成员之间可能出现的意见不一致。
-
冲突解决:在收集信息的过程中,如果成员之间出现答案冲突,领导者需要识别这些冲突并采取措施解决。这可能包括让成员共享他们的文本块,以便直接比较和验证信息,从而纠正由于模型幻觉产生的错误答案。
-
最终响应生成(Step 4):当领导者认为已经收集到足够的信息来生成对用户查询的最终回答时,会结束讨论过程,并导出最终响应。这个响应是团队协作的结果,综合了所有成员提供的信息和证据。
LONGAGENT如何通过多代理协作和精心设计的通信机制,有效地扩展了语言模型在长文本处理上的能力。这种方法不仅提高了处理长文本的准确性,还通过分块处理降低了计算成本,为长文本的深入分析和理解提供了新的可能。
实验
为了全面评估LONGAGENT在长文本处理方面的能力,研究团队设计了一个先进的评估协议,包括了升级版的“Needle-in-a-Haystack”测试和一些合成任务。
Needle-in-a-Haystack PLUS:这个测试最初是为了评估模型处理长文本的能力而设计的。在PLUS版本中,研究者们将重点从简单的事实检索转移到了更具挑战性的问题回答任务,这可能涉及多个文档。在这个测试中,答案相关的实体已经被修改,以防止模型依赖内部知识来回答问题。
Synthetic Tasks:除了“Needle-in-a-Haystack PLUS”测试之外,研究团队还选择了两个广泛使用的长序列评估任务:长文本检索和数值比较。这些任务使用准确率(ACC)作为评估指标,便于评估模型在长序列处理方面的能力。
在实验中,LONGAGENT与几个强大的商业模型和学术方法进行了比较:
- PI:通过位置插值扩展基于RoPE的预训练大型语言模型的上下文窗口大小。
- YARN:一种改进的方法,用于高效扩展上下文窗口,通过直接修改PE来扩展到理论上的无限上下文长度。
- Claude2.1:由Anthropic公司发布的Claude 2.1模型,具有200K令牌的上下文窗口,显著降低了模型幻觉的比率。
- GPT-4 Turbo:OpenAI的GPT-4 Turbo模型提供128K的上下文窗口,能够处理超过300页的文本。
为了构建代理团队,研究团队对LLaMA2-7b-base进行了监督微调。在这个代理团队中,领导者负责协调成员完成各种任务。使用GPT-4生成了每个任务的1000条交互轨迹来训练领导者,并且手动验证了这些交互轨迹的正确性。成员的任务是根据领导者的指令处理文档。为了实现这一点,研究团队训练了问答专家、检索专家和数学专家来实例化成员。无论实例化了多少成员,它们都共享单一专家模型的参数。
训练数据的来源包括SQuAD训练集,以及自动合成的长文本检索和数值比较任务的数据。所有训练数据都与最终评估数据不重叠。
结果
研究结果表明,经过微调的LLaMA模型即使只有4k的上下文窗口,也能有效地处理长达128k的文本。在"Needle-in-a-Haystack PLUS"测试中,无论是单文档还是多文档设置,LONGAGENT都显示出比GPT-4更高的准确率,平均改进分别为19.53%和4.96%。
研究团队分析了训练数据的配方和块大小对模型幻觉的影响。实验结果表明,增加训练数据中"拒绝"类型数据的比例可以提高模型正确拒绝回答的比例,但同时也可能轻微损害模型回答问题的能力。块大小的增加可以减轻幻觉问题,但超过一定大小后,幻觉问题会加剧。
在消融研究中通过比较引入通信机制前后模型准确率的差异,研究表明这一机制可以显著提高模型的准确率,平均改进达到18.9%。此外,随着文本长度的增加,成员数量和经历幻觉的成员数量也会增加,这使得通过解决冲突带来的准确率提升变得更加明显。
由于文本分块处理,LONGAGENT处理长文本的时间复杂度为O(N),处理时间几乎与文本长度成线性关系。实验结果表明,与具有二次复杂度的全注意力方法相比,LONGAGENT在处理长文本时具有显著的延迟优势,并且对内存的需求也更低。
虽然ONGAGENT在长文本处理方面的巨大潜力。然而这项技术也存在局限性,如训练数据构建成本较高和对领导者推理能力的高要求。未来的研究将集中在优化代理间的协作机制,降低训练成本,并提高领导者的问题分解和成员协调能力和探索更高级的冲突解决策略和记忆增强技术。
论文链接:https://arxiv.org/abs/2402.11550
项目链接:https://github.com/zuucan/NeedleInAHaystack-PLUS