宣布我们的 LlamaCloud 全面上市 (以及我们获得 1900 万美元 A 轮融资)!
LlamaIndex

LlamaIndex 2025-01-06

文档研究助手用于基于 NVIDIA NIM 微服务进行博客创作

LlamaIndex 深信使用我们的框架构建的由 LLM 驱动的代理的潜力和力量,因此我们很高兴与 NVIDIA 合作设计和发布了 NVIDIA AI 蓝图,该蓝图是一个多代理系统,利用代理驱动的 RAG 研究、撰写和完善关于任何主题的博客文章。您可以阅读公告查看蓝图。在这篇博客文章中,我们将深入探讨蓝图定义的多代理系统架构,解释其工作原理以及如何根据自己的需求扩展该系统。您还可以查看我们的视频我们在视频中逐步介绍了蓝图代码。

概述

该蓝图定义了一些内容

  • 一个 RAG 管道,接受任意文档集,并对其进行嵌入和索引以供查询
  • 基于此管道的代理工具,使代理能够查询 RAG 数据库
  • LlamaIndex 工作流程,接受任意工具集以及查询

工作流程旨在接收查询,并利用提供的工具撰写一篇关于该查询的博客文章。其工作方式如下图所示

  • 首先,代理以查询为主题,概述关于该主题的博客文章可能包含的内容
  • 第二个代理阅读大纲,并创建一组简单的问题,这些问题将提供遵循该大纲撰写博客文章所需的事实
  • 第三个代理被重复调用,以给定问题查询 RAG 数据库,获取相关上下文,并生成这些问题的答案
  • 第四个代理获得查询、大纲和答案,并根据其掌握的所有事实撰写一篇博客文章
  • 第五个代理对照原始查询审查博客文章,并判断它是否对问题做出了全面回应
  • 如果博客文章被认为质量足够高,则输出给用户
  • 如果博客文章需要进一步完善,代理将生成一组额外的问题,以进一步充实博客文章
  • 这些问题和答案被添加到原始集合中,并返回给第四个代理,该代理将利用这些额外上下文重写博客文章并再次尝试(最多 3 次)

架构

这个多代理系统从设计之初就旨在利用 NVIDIA NeMo Retriever 嵌入和 Llama3.3-70b-Instruct LLM NVIDIA NIM 微服务,这些服务可以部署在工作站、数据中心或云环境中的 NVIDIA GPU 上。在下图中,您可以看到系统的两个不同阶段:设置和查询。

设置

任何基于 RAG 的系统的核心都是数据。在设置阶段,提供的文档会由 LlamaParse 解析,这是我们世界一流的文档解析系统,可以将 PDF、Word 文档、PowerPoint 和电子表格等复杂的文档格式转换为 LLM 易于理解的 Markdown 文本。

解析后的文档随后被摄入到向量存储中。首先,它使用 NVIDIA NeMo Retriever 嵌入 NIM 微服务将文档文本转换为向量,然后将其存储在向量存储中。在蓝图中,向量只是简单地持久化到磁盘;在生产环境中,您会使用 LlamaIndex 支持并在 LlamaHub 上提供的数十种向量存储之一来持久化和搜索这些向量。

然后,这个向量存储被实例化为一个查询引擎,这是 LlamaIndex 的一个抽象层,允许您向向量存储发送查询,检索与该查询语义相关的数据块,然后将查询和数据作为上下文传递给 LLM 来回答查询。在这种情况下使用的 LLM 是来自 Meta 的 Llama 3.3-70b,它也作为 NVIDIA NIM 微服务提供。

通过使用打包为 NIM 微服务的 AI 模型,系统可以实现更高的模型性能和效率。

NIM 微服务使用预优化推理引擎,例如 NVIDIA TensorRTNVIDIA TensorRT-LLM,这些引擎专门针对 NVIDIA GPU 系统上的低延迟、高吞吐量推理进行了优化。

NIM 微服务有助于提高吞吐量。例如,将 Meta Llama 3-8B 作为 NIM 微服务运行时,在加速基础设施上生成的 AI token 数量比不使用 NIM 微服务部署时最多可提高 3 倍。

然后,这个查询引擎被进一步封装成 QueryEngineTool,这是一个抽象层,允许在 LlamaIndex 中构建的代理查询 RAG 数据库并检索答案。

查询阶段

在查询阶段,用户将一组工具以及他们的查询传递给工作流程。在蓝图中,我们只传递了一个工具,即上面创建的查询引擎。在生产环境中,您可以传递多个 RAG 数据库,以及允许您在更广泛的网络中搜索上下文的工具。

多代理工作流程随后按前面所述展开

  • 撰写大纲
  • 制定问题以满足大纲要求
  • 回答问题
  • 根据大纲和问题撰写博客文章
  • 博客文章被评估其准确性和全面性
  • 如果内容充分,则输出
  • 如果不充分,则生成更多问题,过程重复

在每一步,代理都使用 LLM NIM 微服务。在蓝图中,它们都使用来自 Meta 的相同 Llama 3.3 模型,但您可以为每个阶段提供不同的 LLM,以平衡质量和速度,甚至可以微调模型使其专注于特定任务。

增强和定制您的蓝图

如前所述,这个蓝图是您创建自己的多代理系统的起点。您肯定希望用生产就绪的向量存储替换蓝图中的磁盘版本,并且可能希望使用各种不同的模型,而不是所有任务都使用 Llama 3.3-70b。

其他增强功能也是可能的,但会增加系统的复杂性和所需时间。当前的提示将最初生成的问题数量限制为 8 个,后续问题数量限制为 4 个。增加这些限制可能会在一定程度上牺牲速度,从而提高输出质量。

另一个潜在的改进是将反思阶段移回大纲步骤:考虑到代理现在了解到的关于主题的事实,大纲是否仍然合理,或者是否应该进行重构?您可以让 LLM 生成新的大纲,并尝试根据其在研究阶段学到的内容重写博客文章。

立即开始!

蓝图的完整代码可在我们的文档示例部分找到。我们很高兴看到您为我们的代理研究系统找到哪些用例,以及您添加了哪些扩展和增强功能。立即开始使用 NVIDIA 上的蓝图