AutoRAG:一个用于优化检索增强生成管道的自动化工具

检索增强生成(RAG)是一种结合了检索器和生成器的框架,广泛应用于开放域问答、基于知识的聊天机器人和专业信息检索任务。RAG通过将检索到的相关文档与生成器结合,提高了模型的准确性和相关性。然而,选择和优化适合特定数据和用例的RAG管道是一项复杂且耗时的任务。为了解决这一问题,AutoRAG(RAG AutoML工具)应运而生,旨在自动化这一过程,帮助用户找到最佳的RAG管道。

AutoRAG的主要功能

  1. 数据创建
    • 解析:设置YAML文件并解析原始文档,准备数据。
    • 分块:使用单个语料库创建初始QA对,然后将剩余的语料库映射到QA数据。
    • QA创建:生成多个语料库时,为每个语料库创建相应的QA数据集。
    • QA-语料库映射:将剩余的语料库数据映射到QA数据集,优化分块并评估RAG性能。
  2. 优化
    • 节点结构:RAG管道的核心节点包括检索、提示生成器和生成器,其他节点用于增强性能。
    • 模块组合:创建每个节点内模块和参数的所有可能组合,执行每个配置的管道,并根据预定义策略选择最佳结果。
    • 马尔可夫链:每个节点基于其前驱节点的最佳结果进行操作,类似于马尔可夫链,只需要前一个状态来生成下一个状态。
  3. 部署
    • YAML文件:使用单个YAML文件部署最佳RAG管道。
    • Flask服务器:支持通过Flask服务器部署模型,方便集成到现有系统中。

创建与AutoRAG兼容的数据格式

  1. 解析
    • 设置YAML文件并开始解析。
    • 使用几行代码解析原始文档,准备数据。
  2. 分块
    • 使用单个语料库创建初始QA对。
    • 将剩余的语料库映射到QA数据。
  3. QA创建
    • 如果通过不同的分块方法生成了多个语料库,为每个语料库创建相应的QA数据集。
  4. QA-语料库映射
    • 对于多个语料库,将剩余的语料库数据映射到QA数据集。
    • 优化分块,评估RAG性能。

评估不可直接评估的节点

某些节点,如query_expansion或prompt_maker,无法直接评估。为此,需要建立基本真值,如“扩展查询的基本真值”或“提示的基本真值”。

  1. query_expansion
    • 在评估过程中使用指定模块检索文档。
    • 根据这些检索到的文档评估query_expansion节点。
  2. prompt_maker
    • 使用生成节点的结果评估prompt_maker节点。
    • 类似的方法适用于生成节点,确保每个节点的评估基于其前驱节点的最佳结果。

AutoRAG的优势

  1. 自动化评估
    • 自动使用自评估数据评估各种RAG模块,减少手动评估的时间和精力。
  2. 数据创建支持
    • 提供从原始文档创建RAG评估数据的工具,确保数据质量和多样性。
  3. 优化和部署
    • 通过自动运行实验找到数据的最佳RAG管道。
    • 使用单个YAML文件轻松部署最佳RAG管道,支持Flask服务器。

当前状态和未来发展

AutoRAG目前处于alpha阶段,未来有许多优化可能性。随着更多用户反馈和实验数据的积累,AutoRAG将继续改进,提供更多功能和更高的性能。

总结

AutoRAG是一个自动化工具,旨在为特定数据集和用例识别最佳RAG管道。它通过自评估数据自动评估各种RAG模块,提供数据创建、优化和部署的支持。AutoRAG将管道结构化为相互连接的节点,并评估模块和参数的组合以找到最佳配置。来自大型语言模型(LLMs)的合成数据增强了评估过程。尽管目前处于alpha阶段,AutoRAG在RAG管道选择和部署方面提供了显著的进一步优化和发展潜力。

发表回复

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

我们将24小时内回复。
取消