量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队

量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队

利用混合智能体(Mixture of Agents)构建大语言模型研究团队

量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队

两个月关注破万!LLMQuant知识分享社群,双十一大促!

在金融领域,大语言模型Large Language ModelsLLMs)的研究由于文献中提出的众多方法而变得极其复杂。检索增强生成Retrieval-Augmented GenerationRAG)因其固有的基础性和数据源多样性,已成为该领域的领先方法之一。在这项工作中,我们引入了一种称为代理混合Mixture of AgentsMoA)的RAG框架,证明了其作为一种实用、可定制且高效的方法的可行性,可用于扩展RAG应用。MoA本质上是一个由单独定制的小型语言模型small language models)[1]组成的分层网络,它们协作回答问题和提取信息。虽然有许多关于此类架构的理论建议,甚至有一些用于实践中一般应用该结构的库,但考虑到成本和速度等实际业务限制,评估该框架潜力的文献有限。我们发现,由小型语言模型[1]组成的MoA框架,在Vanguard业务核心的各个金融领域中,产生了更高质量和更有依据的响应,同时保持了低成本。

量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队

1 引言

机器学习社区中,众所周知,单模型方法在预测能力上通常不如多模型方法(也称为集成模型)。主要有两个原因:

  • 多模型的共识增强了预测的可信度:从集成模型中得出的结论得到多个模型的共识支持,每个模型接收略有不同的输入。这种集体验证增强了对预测结果的信心。

  • 集成模型更善于泛化:它们能够更好地泛化到训练数据中未捕获的新信息。

大语言模型LLMs)最初由于其计算复杂性幻觉hallucination)的内在风险,依赖于单一的密集Transformer方法。然而,研究界最近将焦点转向稀疏的LLM集成,因为它们提供了若干优势 [2][3]。这些集成表现出较低的幻觉率、改进的输出质量以及增强的信息呈现能力 [4]。此外,通过顺序或并行地安排多个LLM,研究人员可以创建复杂的网络 [5],类似于现实公司中的组织结构。这种安排释放了关键的协作潜力,使LLM能够以更复杂的方式协同工作。

能够超越 简单分类 任务并能基于存储在 数据库 、API 和其他来源的信息执行操作的大型语言模型(LLMs)被称为“代理”(agents)。无论是单个代理还是由多个代理组成的系统(通常称为“苏格拉底AI”(Socratic AI)、Agentic AI或类似术语),都非常强大,因为它们可以任意读取和执行任务,效率远超人类 [6]。这种能力在 金融领域 尤其有价值,因为 研究人员 消耗的大量知识都是文本性质的。本文的目的,我们将 代理混合Mixture of AgentsMoA)系统定义为由具有 独特特征 的代理(如定制的链接提示知识)组成的代理集成。

现有文献主要从理论角度探讨了集成LLM,重点是实验以确定这些系统中的错误是改善还是复合。研究已经提供了证据,表明LLM集成可以提高分类准确性 [7],并通过辩论来解决复杂问题 [8]。很明显,集成LLM生物医学金融,甚至研究领域都有广泛的潜在用例 [5]。集成LLM的主要缺点是成本和速度——并行或顺序运行多个模型是一个计算成本高的操作,导致生成缓慢高延迟

量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队
图1:单代理与多代理系统配置。

2 代理混合(MoA)

代理混合Mixture of AgentsMoA)是一种增强的多代理检索增强生成RAG)框架,支持一组高度专业化小语言模型small language models)代理协同工作,以复杂的形式回答问题。MoA深受对LLM集成方法的持续研究的启发,包括专家混合Mixture of ExpertsMoE)和苏格拉底AI [6][12]。我们的研究结果表明,这些代理以强大的方式运行,模仿了组织层次结构,最终产生了更高质量的输出,具有内置的透明度基础性

组成MoA系统代理是复杂的信息收集者,每个代理都拥有自己的内部知识外部知识库 [13]、提示基础能力以及与其他代理的连接。这种高度的专业化使得整个MoA系统能够开发出多样化的观点,汇聚成最终的响应。更重要的是,我们观察到,由小型语言模型 [1] 组成的强大MoA系统具有极高的成本效益。当与良好的数据工程实践相结合时,MoA可以实现速度规模,真正能与其他与传统单大型语言模型交互的方法相媲美 [14]。这使得MoA成为大多数(如果不是全部)企业用例的合适方法。

2.1 代理作为“初级研究员”

MoA框架中,代理的角色类似于投资管理中的初级研究员,但具有巨大的潜力。通过定制每个代理可访问的知识,我们可以开发高度多样化但极其智能的代理,具有领域理解专业化

量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队
图2:具有API访问和知识的超专业化代理示例。

通过对每个代理进行超专业化,它们可以比单个处理所有任务的模型实现更好的结果。图2展示了此类代理的示例,每个代理都有自己的提示知识指令微调模型基础。在这个例子中,“10-K/Q数学代理”是一个具有定义性理解行项目和会计术语的GPT-4实例。它经过微调和提示,专门用于数学任务(例如,深呼吸思考)。此外,它具有对原始文件的RAG访问以及对包含领域特定方程的分析师笔记的SQL数据库的API访问。另一方面,“10-K/Q情感代理”是一个经过微调的Llama-2实例,用于股票情感分类。它具有对公司被查询的真实正面和负面陈述的RAG访问,并被提示进行情感分析。

这种分离代理的方法,由于每个代理的可定制性,提供了比单模型方法显著更高的响应质量。这些专业化的代理可以在MoA系统中以更高的准确性和深度回答极其细微和复杂的问题。

代理定义代码示例

# 定义一个通用的Agent类
class Agent:
    def __init__(self, model, knowledge_base, prompt):
        self.model = model
        self.knowledge_base = knowledge_base
        self.prompt = prompt

    def answer(self, question):
        # 使用知识库检索相关信息
        context = self.knowledge_base.retrieve(question)
        # 构建模型输入
        input_text = self.prompt + "n" + context + "n" + question
        # 通过模型生成答案
        response = self.model.generate(input_text)
        return response

# 创建特定的代理实例
math_agent = Agent(model=gpt4_model, knowledge_base=sec_filings_kb, prompt="请执行财务计算")
sentiment_agent = Agent(model=llama2_model, knowledge_base=sentiment_kb, prompt="请进行情感分析")

2.2 初级研究员代理团队

在代理被定制和构建之后,很明显,对于各种高级任务,可以以高效的方式构建代理的管道来完成任务。这种结构让人想起一个研究团队,具有不同背景的专家(即,具有不同定制的代理)合作解决共同的问题。使用之前的相同代理示例,可以向不同代理提出相关问题,以获得更具体的响应,然后将其编译成全面的答案。图3表示了这些两个代理的可能配置,由一个选择问题的计划者和一个智能地组合代理响应的聚合器组成。

量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队
图3:可能的专业化代理拆分,以高响应质量回答复杂问题

MoA的灵活性在于代理可以被替换为启发式方法API调用或任何其他可能将附加信息馈送到聚合器或其他代理的子流程。

代理团队代码示例

备注:完整代码论文复现请加入知识星球获取。

# 定义一个问题规划器
def planner(question):
    # 根据问题确定需要哪些代理
    if "财务计算" in question:
        return [math_agent]
    elif "情感分析" in question:
        return [sentiment_agent]
    else:
        return [math_agent, sentiment_agent]

# 定义一个聚合器
def aggregator(responses):
    # 简单地将所有响应组合
......
    return final_response

# 主函数
def MoA_system(question):
    selected_agents = planner(question)
    responses = []
    for agent in selected_agents:
 ......
    return final_answer

# 示例使用
question = "请分析公司最近的财务表现和市场情绪。"
answer = MoA_system(question)
print(answer)

在所有这些场景中,MoA极大地受益于其维护高度可定制性的能力。由于每个代理有效地充当用户问题的实时专家,整体的行动和响应质量保持强劲。然而,重要的是要注意,MoA的性能仅与其数据和工程能力一样好。该系统可能被允许增长为任意复杂,通过各种现有和开发中的不同方法,输出的报告和答案可能会馈送未来的输入。在Vanguard的IMFS团队,我们的MoA系统已扩展到同时分析成千上万的文档。

MoA具有一个独特的属性,即任何负责总结或监督低级代理输出的高级代理都可以辨别并过滤掉无关或不准确的信息。有趣的是,我们观察到,“复合错误”的概念只发生在单一流的串行模型中,而不会发生在MoA中。


3 结果

MoA是一个LLM系统的属性,不同于MoE,它是LLM的一个属性。因此,我们抽象出模型评估的复杂性,而是关注系统的更高级结果。与其他研究人员的发现一致,我们发现一个交织的模型网络比任何单一的工作流都表现更好。此外,随着系统的扩展抽象层次的增加,延迟潜力都在增长。存在越多的抽象,就为人类研究人员节省了更多的步骤。MoA本质上随着规模的扩大而变得越来越高效,与人类努力相比。MoA对于那些寻求在单一模型系统的响应质量之上增强现有RAG管道的人来说,提供了一个非常有用的解决方案。

3.1 信息呈现和输出质量

MoA增强了任何RAG实现的信息呈现能力,从而提高了输出的质量。

关于RAG系统,最紧迫的关注点之一是可用的上下文窗口。当这个值很小,模型对可用数据的覆盖范围相应地有限。大量正在进行的研究集中在最大化上下文窗口,同时最小化性能下降 [15]。在这方面,MoA相对于单一模型系统提供了一个优势。当使用系统的代理时,系统的有效上下文窗口显著增加。模型处理的不是所有可用的上下文,而是可以有意地在多个专家代理之间拆分。这种方法允许更高的精度,并减少了“中间丢失”(lost in the middle)问题的可能性。对具有已知或可验证答案的问题,响应通常是良好形成且准确的。此外,众所周知,模型响应对其系统提示极其敏感。根据其数据源为代理定制提示,可以显著提高输出质量洞察力

在Vanguard,我们定期使用MoA从研究人员参考的文档中提取和呈现见解,通常是数以万计的文档量。我们发现,MoA的主要价值主张之一是能够极大地增加呈现研究人员可能错过或忽略的信息的可能性。每个代理的答案包含不同的上下文;例如,10-K文件可能包含一个收入数字,而这个数字的上下文可能在收益电话会议记录中。当这些不同的上下文结合起来,分析师可以获得背景信息,并获得更深层次的洞察。

上下文窗口扩展代码示例

# 假设每个代理有有限的上下文窗口,例如2048 tokens
# 我们可以将大文档拆分给不同的代理处理

def split_document(document, num_agents):
    # 将文档拆分为num_agents份
    doc_parts = []
    part_size = len(document) // num_agents
    for i in range(num_agents):
   ......
    return doc_parts

# 将文档部分分配给代理
def process_large_document(document, agents):
    ......
    for agent, doc_part in zip(agents, doc_parts):
     ......
    return final_answer

# 示例使用
large_document = "..."  # 很长的文档
agents = [agent1, agent2, agent3]
summary = process_large_document(large_document, agents)
print(summary)

3.2 与单模型提供商的比较

MoA已经展示了更好和更全面的响应质量,而无需微调 [14]。作为一个实验,我们将单模型LLM系统的主要提供商(Anthropic的Claude 3 Opus和OpenAI的ChatGPT 4)以及一个基本的MoA系统(使用两个基于Mistral-7B的代理,每个代理处理一个文档),给予了两个公开的文档:苹果公司2023年第一季度的收益电话会议记录10-Q文件。所有三个模型都被问了问题,并根据其响应中捕获的重要信息量进行评分。

例如,其中一个问题是:

“在$AAPL 2023年第一季度的电话会议记录和文件中,关于全年剩余时间的收入增长,有什么背景?”

需要捕获的关键信息包括:

  1. 1. 预计2023年第二季度的收入将与第一季度相似。

  2. 2. 预计毛利率在44%-44.5%之间。

  3. 3. 数字广告和移动游戏领域的宏观经济阻力。

  4. 4. 外汇的负面影响。

  5. 5. 预期的股票回购和回购计划。

  6. 6. 预计65%的递延收入将在一年内实现。

  7. 7. 预计iPhone销售将加速,而Mac/iPad销售将下降。

分析结果清楚地表明,由两个基于Mistral的代理组成的MoA系统(每个具有7B参数)可以有效地与更大且更昂贵的系统(如ChatGPT 4GPT-4Claude 3 Opus)竞争。有趣的是,MoA和Claude在报告预期或未来状态方面表现出色,而这是问题所要求的,相比之下,ChatGPT 4的表现不如前者。每个代理的响应也可以向用户显示,以提供透明度。对其他问题的响应大多与上述示例密切相关。

3.3 成本与规模

当前MoA系统的优点在于其成本效益简单性。在最简单的形式中,MoA可以使用相同的模型和端点,根据需要多次激活,以通过各层执行推理。对于具有基于云计算资源和端点的企业来说,例如Amazon SageMakerMicrosoft Azure,其定价基于正常运行时间,在类似大小的单模型系统和MoA之间,总成本没有显著差异。

MoA的缺点是对并发推理的需求更高。在扩展时,单模型系统可以支持更多的用户,因为每个用户只访问一个端点。相比之下,MoA要求每个用户至少有两个端点,这个数字可以任意增大。然而,这种灵活性允许根据预算用例定制系统中的代理配置。在Vanguard的IMFS团队,我们自己的MoA系统的成本明显低于大多数第三方RAG提供商,如ArcusDatabricks,每月总运行成本低于8000美元,处理研究人员团队的查询。

并行推理代码示例

import concurrent.futures

def MoA_system_parallel(question):
    selected_agents = planner(question)
    responses = []

    # 使用线程池并行运行代理
    with concurrent.futures.ThreadPoolExecutor() as executor:
        future_to_agent = {executor.submit(agent.answer, question): agent for agent in selected_agents}
        for future in concurrent.futures.as_completed(future_to_agent):
      ......
    return final_answer

# 示例使用
answer = MoA_system_parallel(question)
print(answer)

至于速度,Vanguard IMFS的MoA系统,包括预处理和后处理操作,如标记化检索幻觉捕捉,能够在60秒内使用两层代理,从超过30,000个文档中搜索和呈现信息。实现MoA的延迟惩罚大约是4.07倍,或在并行运行推理时是2.24倍。相比之下,我们最初的单模型系统能够在不到三秒钟内执行相同的操作。这些结果总结在下表中。

指标 单模型系统 MoA MoA(并行推理)
最大并发用户数 约20 11 11
每月总计算成本 8,000 8,000 8,000
平均响应速度 2.9974秒 12.3334秒 6.8626秒
平均延迟惩罚 4.07倍 2.24倍
平均考虑的段落数 30 90 90
平均上下文窗口改进 3.00倍 3.00倍

表格:单模型、MoA和优化的MoA架构之间的速度上下文窗口差异的总结。

基于此和其他类似的分析,我们得出结论,MoA的速度上下文窗口改进随着系统中使用的模型数量线性扩展。在上表中,我们实现了一个四模型的MoA,包括三个接受上下文的代理和一个聚合器。总推理时间增加了4倍,而上下文窗口因此增加了3倍。

MoA是一个高效的系统,能够最大化RAG的优势,同时在实践中满足成本可扩展性约束。如果一个企业能够创建和部署一个单模型系统,那么它也可以部署MoA。


3.4 永久性

作为一个框架,MoA是一个强大的系统,保持了相对于传统单模型LLM系统的优势。在Vanguard,我们支持了小型语言模型 [1] 在实现高效和准确结果方面是现在和未来的假设。MoA是这一假设的延伸,因为它允许我们利用开放权重的、参数少于10B的小型模型,以极低的成本运行。随着大多数语言建模社区得出类似的结论,我们相信MoA的永久性将成为行业标准。

3.5 透明度

由于每个代理的响应作为最终聚合器的输入,每个输出都可以定期向用户显示,并评估其错误或幻觉。本质上,MoA是高级RAG系统的一个变体,因此保留了其所有的透明度和基础性。然而,在某些情况下,MoA系统的最终输出不如其组成代理之一的输出相关或有影响力。在这种情况下,将每个代理的输出与最终输出一起呈现给用户,是一个简单的任务,允许他们自行判断。

在Vanguard,我们投入了大量时间来开发安全措施,以限制MoA系统中模型的幻觉倾向。最困难的任务之一是教导模型在没有相关数据集来回答特定问题时说“我不知道”。这些安全措施范围从基于启发式的检查到更复杂的嵌入比较,确保生成输出的可靠性和准确性。

量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队
图4:MoA的示例输出,使用Mistral v0.2作为代理模型。每个代理都有自己的输出,可用于验证摘要。

4 结论与未来计划

通过比较LLM系统成本输出质量透明度和各种其他特性,我们得出结论,使用小型语言模型MoA应该成为企业级RAG管道的默认标准。

重要的是要注意,本分析是使用特定的技术堆栈进行的,包括Amazon AWS。性能可能会通过使用更高效的每token成本提供商(如Fireworks AIGroq)而显著提高,它们也可能提供更快的推理时间和更好的可扩展性。随着性能的提高,MoA和单LLM系统之间的差距大幅减少。随着MoA的输出质量超过单LLM系统,它可能会变得严格更好。



本文整理自MoA is All You Need: Building LLM Research Team using Mixture of Agents,旨在促进LLMs在金融和投资管理中的采用和进一步发展,为研究者和从业者提供有价值的资源和见解。

希望这篇推文可以吸引更多对LLMs在金融领域应用感兴趣的读者!有任何问题或建议,欢迎在评论区留言讨论。

知识分享社群双十一限时活动

三天不满意无条件退款

量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队
量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队
量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队
量化前沿|利用混合智能体(Mixture of Agents)构建大语言模型研究团队

  文章内容来自于网络,由百合树AI整理,如有侵权,联系删除。如需开始AI写作请返回主页。

上一篇:

下一篇:

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注