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

LlamaIndex 2024-08-21

使用 LlamaCloud 高效优化 RAG 流水线的块大小

在检索增强生成 (RAG) 系统中,块大小的选择会显著影响检索准确性和整体系统性能。然而,尝试不同的块大小历来是一个耗时的过程。本文探讨了块大小优化相关的挑战,并介绍了 LlamaCloud 促进此过程的功能。

块大小实验中的挑战

许多开发人员已经找到了在 RAG 流水线中实验检索参数和提示的方法——调整 top-k 和 QA 提示是相对直接的工作,并且当然会对性能产生影响。

在索引阶段实验参数,例如分块,同样重要,但更难做到。索引实验存在几个技术挑战:

  1. 重新索引开销:更改块大小通常需要重新索引整个数据集,这可能计算成本高昂且耗时,特别是对于大型数据集。
  2. 存储效率低下:维护具有不同块大小的多个版本的索引数据可能导致显著的存储开销。
  3. 可见性有限:没有适当的工具,很难可视化文档是如何被分块的以及这对检索质量的影响。

这些因素使得分块实验变得令人烦恼,尤其是在 Jupyter Notebook 的临时流水线设置中。大多数实验和可观测性工具主要关注查询时的痕迹,而不是数据可观测性。因此,我们注意到尽管分块对最终性能有影响,但开发人员对其进行实验存在一定的抵触情绪。

LlamaCloud 的块大小优化方法

LlamaCloud 是一个企业就绪平台,允许开发人员轻松设置和迭代处理非结构化数据的 RAG 流水线。它提供了一系列旨在简化块大小实验过程的功能:

  • 索引克隆:能够快速创建具有不同分块配置的索引副本。
  • 块可视化:允许直接检查文档如何被分块以及这对检索的影响。
  • 高效迭代:无需手动进行数据存储管理或复杂的重新索引过程,即可轻松测试不同的块大小。

以下部分概述了利用这些功能优化 RAG 流水线中块大小的工作流程。

工作流程:使用 LlamaCloud 优化块大小

下面我们详细介绍一个示例用例,其中我们可以利用 LlamaCloud 的设置和实验功能,以一种临时的方式找到一种能更好地回答问题的分块配置。这反映了用户的行为,即用户希望在运行更系统的评估之前,先通过他们知道完整答案的一些问题来对他们的 RAG 流水线进行初步检查(sanity-check)。

初始 RAG 流水线设置

首先,在 LlamaCloud 中创建一个初始索引。通过 UI 创建一个新的 LlamaCloud 索引并上传您的文档集(例如,三篇 ICLR 2024 研究论文)。在“转换设置”中,选择“自动”,并将块大小设置为 512 个 token 作为基线。

定义“黄金”问答对

找到一个您想在此数据上测试的示例问题。在本例中,我们想尝试提出的问题是:“描述 SWE-bench 的核心功能。”

您应该心中有一个“黄金”上下文。这里,答案直接可以在 SWE-bench 论文的第 2.3 节中找到,该节直接描述了 SWE-bench 的功能。

通过 Playground 进行基线配置测试

您现在可以使用 LlamaCloud Playground 来评估初始设置。导航到您的索引页面中的“Playground”部分,然后单击“Chat”选项卡。这将为您提供一个完整的、基于您的索引的聊天 UI,其中包含中间步骤 + 响应流和引用。

输入上面的问题。您会得到一个乍一看似乎合理的响应!响应描述了 SWE-Bench 代表真实的软件工程任务,可以持续更新等等。

但您会注意到最后两个部分丢失了——“跨上下文代码编辑”和“广泛的可能解决方案范围”。

3. 块检查

由于答案部分正确,我们可能推测是分块导致相关上下文被分割开。访问检索 UI 查看检索到的块及其来源。使用“在文件中查看”功能检查源文档是如何被解析和分块的。您可能会观察到相关信息分散在多个块中,这可能会影响检索质量。

4. 块大小迭代

要测试另一种分块策略,请在索引页面上使用“复制”按钮复制您的索引。在新索引中,选择“编辑”以修改分块参数。切换到“手动”模式,将“分割配置”设置为“页面”,将“分块配置”模式设置为“无”。应用这些更改以使用更新的设置启动新的索引运行。

5. 结果比较

在新索引上执行相同的查询并比较结果。您应该会观察到一个更全面的响应,它能更好地捕获 SWE-bench 功能的完整上下文。

下一步

虽然本文描述的临时实验过程提供了一种快速迭代块大小的方法,但重要的是要认识到这仅仅是优化您的 RAG 流水线的开始。以下是一些进一步完善您的系统的建议步骤:

1. 系统评估:开发一个更结构化的评估框架。这可能包括创建一组带有已知正确答案的测试查询,并系统地比较不同块大小在各种指标(如相关性、连贯性和事实准确性)上的性能。我们有一套很棒的可观测性和评估合作伙伴来帮助您入门,包括 LlamaTrace (由 Arize 提供)、TraceloopLangfuse

2. 自动化测试:实施自动化测试,以便在您更改分块策略时,每次都能运行通过您的评估框架。这可以帮助您快速识别新的配置是否提高了性能或使其下降。

3. 微调检索参数:一旦找到了效果良好的分块策略,就可以尝试其他检索参数,例如检索的块数、重排序策略或混合搜索方法。

4. 领域特定优化:考虑特定文档和用例的性质如何影响最佳块大小。技术文档、叙事文本和结构化数据可能都受益于不同的分块策略。

5. 监控和持续改进:为您的生产 RAG 系统设置监控,以跟踪关键绩效指标随时间的变化。利用这些数据为持续的优化工作提供信息。

通过将 LlamaCloud 的快速迭代能力与这些更系统化的方法相结合,您可以创建一个健壮、高性能的 RAG 流水线,以满足您的特定需求。

如果您有兴趣讨论我们的 LlamaCloud 计划以解决您的企业 RAG 需求,请联系我们