OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  AutoRAG — 自动化优化检索增强生成流程的框架

AutoRAG — 自动化优化检索增强生成流程的框架

 
  and ·  2026-03-31 11:00:23 · 5 次点击  · 0 条评论  

AutoRAG

面向检索增强生成(RAG)的 AutoML 工具,可自动为您的数据寻找最优的 RAG 流水线。

缩略图

PyPI - 下载量
LinkedIn
X (原 Twitter) 关注
Hugging Face

Marker-Inc-Korea%2FAutoRAG | Trendshift

市面上有很多 RAG 流水线和模块,但你不知道哪种流水线最适合“你自己的数据”和“你自己的使用场景”。手动构建和评估所有 RAG 模块非常耗时且困难。但如果不这样做,你将永远无法知道哪种 RAG 流水线最适合你的特定场景。

AutoRAG 是一个为“你的数据”寻找最优 RAG 流水线的工具。你可以使用自己的评估数据自动评估各种 RAG 模块,并找到最适合你自己使用场景的最佳 RAG 流水线。

AutoRAG 支持一种简单的方法来评估多种 RAG 模块组合。立即尝试,为你的使用场景找到最佳的 RAG 流水线。

探索我们的 📖 文档!!


YouTube 教程

https://github.com/Marker-Inc-Korea/AutoRAG/assets/96727832/c0d23896-40c0-479f-a17b-aa2ec3183a26

默认静音,请开启声音收听旁白

你可以在 YouTube 上观看

在 HuggingFace Space 中使用 AutoRAG 🚀

Colab 教程

目录

快速安装

我们推荐使用 Python 3.10 或更高版本来运行 AutoRAG。

pip install AutoRAG

如果你想使用本地模型,需要安装 GPU 版本。

pip install "AutoRAG[gpu]"

或者,为了解析功能,你可以安装解析版本。

pip install "AutoRAG[gpu,parse]"

数据创建


Hugging Face Sticker

图片

图片

RAG 优化需要两种类型的数据:问答数据集和语料库数据集。

  1. 问答 数据集文件 (qa.parquet)
  2. 语料库 数据集文件 (corpus.parquet)

问答 数据集对于准确可靠的评估和优化至关重要。

语料库 数据集对 RAG 的性能至关重要。这是因为 RAG 使用语料库来检索文档并基于其生成答案。

📌 支持的数据创建模块

图片

快速开始

1. 解析

设置 YAML 文件

modules:
  - module_type: langchain_parse
    parse_method: pdfminer

你也可以同时使用多个解析模块。但在这种情况下,你需要为每个解析结果返回一个新的处理流程。

开始解析

只需几行代码即可解析你的原始文档。

from autorag.parser import Parser

parser = Parser(data_path_glob="你的/数据/路径/*")
parser.start_parsing("你的/解析配置/yaml/文件路径")

2. 分块

设置 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="你的/已解析数据/路径")
chunker.start_chunking("你的/分块配置/yaml/文件路径")

3. 问答对创建

只需几行代码即可创建问答数据集。

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("你的/已解析数据/parquet/文件路径")
raw_instance = Raw(raw_df)

corpus_df = pd.read_parquet("你的/语料库/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,  # 查询生成
        llm=llm,
    )
    .batch_apply(
        make_basic_gen_gt,  # 答案生成 (基础)
        llm=llm,
    )
    .batch_apply(
        make_concise_gen_gt,  # 答案生成 (简洁)
        llm=llm,
    )
    .filter(
        dontknow_filter_rule_based,  # 过滤“不知道”的回答
        lang="en",
    )
)

initial_qa.to_parquet('./qa.parquet', './corpus.parquet')

RAG 优化


Hugging Face Sticker

图片

rag

AutoRAG 如何优化 RAG 流水线?

下图展示了仅包含节点的 AutoRAG RAG 结构。

图片

下图展示了所有节点和模块。

图片

rag_opt_gif

📌 支持的 RAG 优化节点和模块

评估指标

AutoRAG 中每个节点使用的评估指标如下所示。

图片

图片

以下是 AutoRAG 支持的评估指标的详细信息。

快速开始

1. 设置 YAML 文件

首先,你需要为 RAG 优化设置配置 YAML 文件。

我们强烈建议初学者使用预制的配置 YAML 文件。

以下是一个配置 YAML 文件的示例,它使用了三个检索节点、prompt_makergenerator 节点。

node_lines:
  - node_line_name: retrieve_node_line
    nodes:
      - node_type: lexical_retrieval
        strategy:
          metrics: [ retrieval_f1, retrieval_recall, retrieval_ndcg, retrieval_mrr ]
        top_k: 3
        modules:
          - module_type: bm25
      - node_type: semantic_retrieval
        strategy:
          metrics: [ retrieval_f1, retrieval_recall, retrieval_ndcg, retrieval_mrr ]
        top_k: 3
        modules:
          - module_type: vectordb
            vectordb: default
      - node_type: hybrid_retrieval
        strategy:
          metrics: [ retrieval_f1, retrieval_recall, retrieval_ndcg, retrieval_mrr ]
        top_k: 3
        modules:
          - module_type: hybrid_rrf
            weight_range: (4,80)
  - node_line_name: post_retrieve_node_line
    nodes:
      - node_type: prompt_maker  # 设置提示词制作节点
        strategy:
          metrics: # 设置生成指标
            - metric_name: meteor
            - metric_name: rouge
            - metric_name: sem_score
              embedding_model: openai
        modules:
          - module_type: fstring
            prompt: "阅读以下段落并回答给定的问题。 \n 问题: {query} \n 段落: {retrieved_contents} \n 答案 : "
      - node_type: generator  # 设置生成器节点
        strategy:
          metrics: # 设置生成指标
            - metric_name: meteor
            - metric_name: rouge
            - metric_name: sem_score
              embedding_model: openai
        modules:
          - module_type: openai_llm
            llm: gpt-4o-mini
            batch: 16

2. 运行 AutoRAG

只需几行代码即可评估你的 RAG 流水线。

from autorag.evaluator import Evaluator

evaluator = Evaluator(qa_data_path='你的/问答数据/parquet/文件路径', corpus_data_path='你的/语料库/parquet/文件路径')
evaluator.start_trial('你的/配置/yaml/文件路径')

或者,你可以使用命令行界面

autorag evaluate --config 你的/配置/yaml/文件路径 --qa_data_path 你的/问答数据/parquet/文件路径 --corpus_data_path 你的/语料库/parquet/文件路径

完成后,你可以在当前目录下看到创建的几个文件和文件夹。
在名为数字的试验文件夹中(例如 0),你可以查看 summary.csv 文件,该文件总结了评估结果以及针对你的数据的最佳 RAG 流水线。

更多详情,你可以查看文件夹结构 这里

3. 运行仪表板

你可以运行一个仪表板来轻松查看结果。

autorag dashboard --trial_dir /你的/试验文件夹/路径

示例仪表板

仪表板

4. 部署你的最优 RAG 流水线

4-1. 以代码形式运行

你可以直接从试验文件夹中使用最优的 RAG 流水线。试验文件夹是运行仪表板时使用的目录(例如 0, 1, 2, ...)。

from autorag.deploy import Runner

runner = Runner.from_trial_folder('/你的/试验文件夹/路径')
runner.run('你的问题')

4-2. 以 API 服务器形式运行

你可以将此流水线作为 API 服务器运行。

查看 API 端点 这里

import nest_asyncio
from autorag.deploy import ApiRunner

nest_asyncio.apply()

runner = ApiRunner.from_trial_folder('/你的/试验文件夹/路径')
runner.run_api_server()
autorag run_api --trial_dir 你的/试验文件夹/路径 --host 0.0.0.0 --port 8000

CLI 命令使用提取的配置 YAML 文件。如果你想了解更多,请查看 这里

4-3. 以 Web 界面形式运行

你可以将此流水线作为 Web 界面运行。

查看 Web 界面 这里

autorag run_web --trial_path 你的/试验文件夹/路径

示例 Web 界面

5 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 21 ms
Developed with Cursor