深入理解大模型技术:多代理框架与结构化信息提取

标签:大模型技术,多代理框架,结构化信息提取,人工智能,Langroid,Mistral 时间:2024-02-18T21:10:30

深入理解大模型技术:多代理框架与结构化信息提取

在人工智能领域,大模型技术(Large Language Models, LLMs)的发展正日益成为研究的热点。本文将深入探讨这一技术在结构化信息提取任务中的应用,解析多代理框架的工作原理,并分享在处理复杂任务时的有效策略。

多代理框架的工作原理

在信息提取任务中,尤其是从文档中提取结构化信息,单一的大模型可能会遇到困难。然而,通过将任务分解成简单的部分,并让不同的代理(agent)处理各个部分,可以有效提高任务完成的准确性和效率。

代理的角色与职责

  • Extractor(提取器):负责按照指定的结构(如JSON格式)提取信息,并生成问题,每次仅生成一个问题,以便于后续代理更准确地回答。
  • Validator(验证器):确保提取器只生成了一个问题,如果不是,则提醒提取器。
  • RAGAgent(回答生成器):基于文档回答单个问题,使用Retrieval-Augmented Generation(RAG)技术。

多代理框架的实例应用

Langroid是一个支持多代理框架的工具,可以有效地协调不同代理的工作。下面是一个使用Langroid从商业租赁文档中提取结构化信息的脚本示例:

  1. # 示例脚本链接
    https://github.com/langroid/langroid-examples/blob/main/examples/docqa/chat-multi-extract-3.py

此外,还有一个具有类似ChatGPT用户界面的chainlit示例:


  1. # Chainlit示例链接
    https://github.com/langroid/langroid-examples/blob/main/examples/chainlit/multi-extract-3.py

结构化信息提取的策略

虽然nous-hermes2-mixtral模型在上述脚本中被硬编码使用,但也可以尝试使用其他模型,包括7b大小的模型。实际上,这种任务通常被用作快速测试新模型性能的方法。


弱模型的挑战与解决方案

弱模型在多轮交互方面表现不佳,即使是经过聊天调优的模型也是如此。为了获得更好的结果,可以通过创建多阶段工作流程,而不是复杂的多代理交互,来提高效率。这种情况下,代理不直接交互,而是每个代理产生中间结果,然后代码将这些结果传递给工作流程的下一个阶段。



  • QuestionGenerator(问题生成器):根据所需的JSON结构生成问题列表。
  • Interrogator(审问者):为每个问题生成两个问题变体,将所有三个变体合并成一个查询。
  • DocAgent(文档代理):根据文档使用RAG回答包含三个问题变体的查询。
  • PresenterAgent(呈现代理):将一系列问题和答案对组织成指定的结构。

使用mistral:7b-instruct-v0.2-q8_0模型,这种方法取得了很好的效果。


结果的质量评估

在使用这些技术时,需要定义可容忍的错误率,并通过处理代码修复其余的错误。此外,还应该对结果的质量进行评估,了解结果的问题所在,例如是否出现幻觉、是否不是JSON格式等。


不同模型的比较

在实际应用中,不同大小的模型在任务完成上的表现差异显著。例如,Qwen1.5-14b-Chat-GGUF模型在该任务上的表现不佳,而mistral:7b-instruct-v0.2-q8_0模型则表现良好。同样,nous-capybara 34b模型也被认为是该任务中最佳的模型之一。


结论与建议

在进行结构化信息提取时,多代理框架和多阶段工作流程可以显著提高任务的准确性和效率。通过合理地设计代理的角色和职责,以及评估和选择合适的模型,可以有效地处理复杂的文档信息提取任务。值得注意的是,不同模型的性能差异可能很大,因此在选择模型时应考虑任务的具体需求。

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
Back to Top