
什么是 AutoRAG
AutoRAG 是一个由 Marker-Inc-Korea 开发的开源框架,其核心目标是自动化检索增强生成(Retrieval-Augmented Generation, RAG)流程的各个环节。在自然语言处理(Natural Language Processing, NLP)领域,RAG 技术通过结合预训练语言模型和外部知识库,显著提升了模型在开放域问答、文本生成等任务中的性能。AutoRAG 的出现,旨在简化和优化 RAG 系统的构建、评估和部署过程,使得开发者能够更高效地利用 RAG 技术。
AutoRAG 的功能
AutoRAG 提供了一系列强大的功能,以实现 RAG 流程的自动化和精细化管理,主要包括:
- 自动化数据准备与索引: AutoRAG 能够自动处理各种格式的文档数据,并将其转化为适合检索的向量索引。这大大简化了数据预处理的流程,降低了使用门槛。
- 灵活的检索器选择与配置: 框架支持多种主流的检索算法和工具,例如基于向量相似度的检索、关键词检索等。用户可以根据实际应用场景灵活选择和配置检索器,以达到最佳的检索效果。
- 可定制的生成模型集成: AutoRAG 可以与各种预训练语言模型无缝集成,包括但不限于 OpenAI 的 GPT 系列、Hugging Face 的 Transformers 模型等。用户可以根据需求选择合适的生成模型,并进行相应的配置。
- 自动化的评估与优化: AutoRAG 内置了多种评估指标和方法,可以自动评估 RAG 系统的性能,并提供优化建议。这有助于开发者快速迭代和改进 RAG 系统。
- 模块化和可扩展的架构: AutoRAG 采用模块化的设计,方便开发者根据自己的需求进行定制和扩展。用户可以轻松添加自定义的数据加载器、检索器、生成器和评估器。
- 实验管理和版本控制: 框架提供了实验管理的功能,可以帮助用户记录和比较不同配置下的实验结果,方便进行版本控制和模型选择。
如何使用/快速开始 AutoRAG
要开始使用 AutoRAG,您可以按照以下步骤进行操作:
- 环境搭建: 首先,您需要确保您的环境中安装了 Python 和 pip。然后,您可以按照 AutoRAG 的官方文档或者 GitHub 仓库中的说明,安装所需的依赖包。通常,这会涉及到克隆 AutoRAG 的 GitHub 仓库,并使用 pip 安装 requirements.txt 文件中列出的依赖项。
- 数据准备: 准备您希望用于检索的文档数据。AutoRAG 支持多种数据格式,例如文本文件、PDF 文件、JSON 文件等。您需要将这些数据放置在 AutoRAG 可以访问的目录下。
- 配置 RAG 流程: 通过 AutoRAG 提供的配置文件或者 API,您可以配置 RAG 流程的各个环节,包括选择数据加载器、检索器、生成模型以及相应的参数。例如,您可以指定使用哪种向量数据库进行索引,选择哪种预训练语言模型进行生成。
- 运行 AutoRAG: 配置完成后,您可以运行 AutoRAG 提供的脚本或者调用相应的 API 来启动 RAG 流程。AutoRAG 将会自动完成数据加载、索引构建、检索和生成等步骤。
- 评估和优化: 运行结束后,您可以利用 AutoRAG 提供的评估工具来评估 RAG 系统的性能。根据评估结果,您可以调整配置参数、更换模型或者优化数据,以进一步提升系统性能。
pip install AutoRAG #pip install "AutoRAG[gpu]" #pip install "AutoRAG[gpu,parse]" #设置yaml文件 modules: - module_type: langchain_parse parse_method: pdfminer #解析 from autorag.parser import Parser parser = Parser(data_path_glob="your/data/path/*") parser.start_parsing("your/path/to/parse_config.yaml") #设置yaml文件 modules: - module_type: llama_index_chunk chunk_method: Token chunk_size: 1024 chunk_overlap: 24 add_file_name: en #切分 from autorag.chunker import Chunker chunker = Chunker.from_parquet(parsed_data_path="your/parsed/data/path") chunker.start_chunking("your/path/to/chunk_config.yaml") #生成 QA 数据集 import pandas as pd from llama_index.llms.openai import OpenAI from autorag.data.qa.filter.dontknow import dontknow_filter_rule_based from autorag.data.qa.generation_gt.llama_index_gen_gt import ( make_basic_gen_gt, make_concise_gen_gt, ) from autorag.data.qa.schema import Raw, Corpus from autorag.data.qa.query.llama_gen_query import factoid_query_gen from autorag.data.qa.sample import random_single_hop llm = OpenAI() raw_df = pd.read_parquet("your/path/to/parsed.parquet") raw_instance = Raw(raw_df) corpus_df = pd.read_parquet("your/path/to/corpus.parquet") corpus_instance = Corpus(corpus_df, raw_instance) initial_qa = ( corpus_instance.sample(random_single_hop, n=3) .map( lambda df: df.reset_index(drop=True), ) .make_retrieval_gt_contents() .batch_apply( factoid_query_gen, # query generation llm=llm, ) .batch_apply( make_basic_gen_gt, # answer generation (basic) llm=llm, ) .batch_apply( make_concise_gen_gt, # answer generation (concise) llm=llm, ) .filter( dontknow_filter_rule_based, # filter don't know lang="en", ) ) initial_qa.to_parquet('./qa.parquet', './corpus.parquet')
更详细的使用说明和代码示例,请参考 AutoRAG 的官方文档和 GitHub 仓库:https://github.com/Marker-Inc-Korea/AutoRAG。您可以在该仓库中找到详细的安装指南、使用教程和 API 文档,帮助您快速上手并充分利用 AutoRAG 的强大功能。
AutoRAG 的优势与应用场景
AutoRAG 的自动化特性和灵活性使其在众多场景中具有显著的优势:
- 提高开发效率: 自动化流程减少了手动配置和编码的工作量,加速了 RAG 系统的开发和部署。
- 降低使用门槛: 即使对于 RAG 技术不太熟悉的开发者,也可以通过 AutoRAG 快速构建和使用 RAG 系统。
- 提升系统性能: 自动化的评估和优化功能有助于开发者找到最佳的系统配置,从而提升 RAG 系统的性能。
- 广泛的应用场景: AutoRAG 可以应用于各种需要利用外部知识的 NLP 任务,例如智能客服、知识图谱问答、文档摘要、内容创作等。
随着 NLP 技术的不断发展,RAG 技术在各种应用场景中的重要性日益凸显。AutoRAG 作为一款优秀的自动化 RAG 框架,无疑将为开发者提供强大的工具,助力他们构建更智能、更高效的 NLP 应用。
本文采用 CC BY-NC 4.0 许可协议。商业转载、引用请联系本站获得授权,非商业转载、引用须注明出处。
链接:https://appmark.cn/sites/autorag.html -APPMARK
FlashRAG 是一个由 RUC-NLPIR 开发的开源框架,旨在提供快速且高效的检索增强生成(RAG)解决方案。