教程¶
提示
在开始本教程前,请确保已安装AutoRAG。 如需安装,请查看Installation。
Colab教程
您使用Colab吗?可以查看Colab教程这里。
准备评估数据集¶
首先,您需要为RAG流程准备一个评估数据集。 构建优质的评估数据集是获得优秀RAG流程的关键。 因此,您需要重点关注评估数据集的质量。 一旦准备就绪,使用AutoRAG就能轻松找到最优的RAG流程方案。
因此,对于想要创建优质评估数据集的用户,我们提供了详细指南此处。
对于希望使用预制评估数据集的用户,我们在此处here提供了示例数据集。
此外,您可以在huggingface查看示例数据集。 您可以使用huggingface数据集库手动下载这些数据。
注意
请务必划分训练集和测试集。 未划分数据集是常见错误,但这会导致过拟合问题。 我们强烈建议您先用训练集优化RAG流程,后续再用测试集评估整个流程。
准备好评估数据集后,请记住数据集所在的路径。
注意:数据集格式
请确保准备两个评估数据集:问答数据集和语料数据集。 且必须保存为parquet格式。 若不清楚具体列名和数据类型,请查阅数据格式章节。
寻找最优RAG管道¶
让我们用AutoRAG寻找最优的RAG流程!
准备好评估数据集后,您需要准备一个配置YAML文件。
我们的GitHub仓库sample_config文件夹中提供了一些预制的配置YAML文件。
对于初学者,我们强烈推荐使用这些预制配置文件。
将starter.yaml文件下载到本地环境后,您就可以开始了。
编写自定义配置yaml文件
如需编写自定义的config yaml文件进行详细配置和实验,请参阅优化章节。
验证您的系统¶
在开始优化之前,您可能需要验证系统。 运行AutoRAG时,可能会出现YAML文件错误、Python依赖问题、GPU错误或其他意外错误。 因此建议先运行验证流程。 该流程会执行完整的优化过程,但仅以最低成本来检测系统错误。
您可以通过命令行界面(CLI)命令运行验证。
autorag validate --config your/path/to/default_config.yaml --qa_data_path your/path/to/qa.parquet --corpus_data_path your/path/to/corpus.parquet
或者您可以使用如下所示的Python代码。
from autorag.validator import Validator
validator = Validator(qa_data_path='your/path/to/qa.parquet', corpus_data_path='your/path/to/corpus.parquet')
validator.validate('your/path/to/default_config.yaml')
运行AutoRAG优化¶
在命令行界面运行以下代码,AutoRAG将自动评估您的数据集并为您的数据集找到最佳的RAG流程。
autorag evaluate --config your/path/to/default_config.yaml --qa_data_path your/path/to/qa.parquet --corpus_data_path your/path/to/corpus.parquet --project_dir ./your/project/directory
或者您可以使用如下Python代码。
from autorag.evaluator import Evaluator
evaluator = Evaluator(qa_data_path='your/path/to/qa.parquet', corpus_data_path='your/path/to/corpus.parquet',
project_dir='your/path/to/project_directory')
evaluator.start_trial('your/path/to/config.yaml')
完成后,您可以在当前目录下看到生成的多个文件和文件夹。 这些文件和文件夹包含了评估结果的所有信息以及针对您数据的最佳RAG流程。
首先您可能会看到一个以数字命名的文件夹,在上图中这个数字是3。
这是试验文件夹,包含了您之前运行的所有结果。
该数字代表试验编号,您可以在运行评估时通过trial.json文件查看。
其中最重要的文件是summary.csv文件。
您可以查看哪个模块和参数最适合您的数据集。
节点线路和节点文件夹中包含大量详细信息。
您可以在此处找到关于文件夹结构和结果文件的更多信息。
想要指定项目文件夹吗?
您可以通过--project_dir选项或project_dir参数指定项目目录。
为什么要使用python命令?
当您需要添加自定义LLM模型或自定义嵌入模型时,必须使用python命令。 因为添加过程必须以python代码形式执行。 请参阅此文档了解如何添加自定义LLM或嵌入模型。
❗如果试用期间出现错误,请重新启动试用¶
如果在试用过程中出现错误,您可以重新开始试用。
如果您在config.yaml文件配置时遇到问题,可以修改试用文件夹中的config.yaml文件并运行以下代码。
在命令行界面运行以下代码,AutoRAG将自动重新启动评估。
autorag restart_evaluate --trial_path your/path/to/trial_folder
或者您可以使用如下所示的Python代码。
from autorag.evaluator import Evaluator
evaluator = Evaluator(qa_data_path='your/path/to/qa.parquet', corpus_data_path='your/path/to/corpus.parquet')
evaluator.restart_trial(trial_path='your/path/to/trial_path')
如果Trial_Path没有同时创建第一条节点线会怎样?
如果您想要重启的试验路径中尚未创建First Node Line文件夹,系统将执行start_trial函数而非restart_trial。
请注意,系统将创建一个新的试验文件夹,而非在该试验路径下生成新的重启结果。
运行仪表板查看您的试验结果!¶
在AutoRAG 0.2.0版本中,您可以使用仪表板功能轻松查看AutoRAG的运行结果。 只需运行以下命令即可启动仪表板。
autorag dashboard --trial_dir /your/path/to/trial_dir
提取流程并评估测试数据集¶
现在是用找到的RAG管道评估测试数据集的时候了。为此,您可以提取最优管道并将其保存到新的配置YAML文件中。
你可以使用以下代码。
请注意您的试用文件夹位于运行Evaluator的目录中。
试用文件夹名称是数字形式,例如0、1、2、3等。
在命令行界面运行以下代码,AutoRAG将自动提取最优流程并保存到新的YAML文件中。
autorag extract_best_config --trial_path your/path/to/trial_folder --output_path your/path/to/pipeline.yaml
或者您可以使用如下所示的Python代码。
from autorag.deploy import extract_best_config
pipeline_dict = extract_best_config(trial_path='your/path/to/trial_folder', output_path='your/path/to/pipeline.yaml')
您可以在your/path/to/pipeline.yaml路径下查看您的流水线YAML文件。
然后,使用测试数据集重新运行评估。
注意
将评估运行到另一个文件夹。 在同一文件夹中使用不同数据集运行评估可能导致严重故障。
autorag evaluate --config your/path/to/pipeline.yaml --qa_data_path your/path/to/qa_test.parquet --corpus_data_path your/path/to/corpus_test.parquet
它将使用找到的RAG管道评估您的测试数据集。
部署您最优化的RAG流程¶
1. 以代码方式运行¶
您可以直接使用提取的YAML文件来立即应用找到的最优RAG流程。
from autorag.deploy import Runner
runner = Runner.from_yaml('your/path/to/pipeline.yaml')
runner.run('your question')
或者您可以使用试用文件夹来运行流程,无需提取YAML文件。
from autorag.deploy import Runner
runner = Runner.from_trial_folder('/your/path/to/trial_dir')
runner.run('your question')
2. 作为API服务器运行¶
您可以将此流水线作为API服务器运行。
查看API端点请点击这里。
from autorag.deploy import ApiRunner
import nest_asyncio
nest_asyncio.apply()
runner = ApiRunner.from_yaml('your/path/to/pipeline.yaml', project_dir='your/project/directory')
runner.run_api_server()
或
from autorag.deploy import ApiRunner
import nest_asyncio
nest_asyncio.apply()
runner = ApiRunner.from_trial_folder('/your/path/to/trial_dir')
runner.run_api_server()
autorag run_api --trial_dir /trial/dir/0 --host 0.0.0.0 --port 8000
想要指定项目文件夹吗?
您可以通过--project_dir选项或project_dir参数指定项目目录。
3. 作为网页界面运行¶
你可以将此流程作为网页界面运行。
查看网页界面请点击这里。
from autorag.deploy import GradioRunner
runner = GradioRunner.from_yaml('your/path/to/pipeline.yaml')
runner.run_web()
from autorag.deploy import GradioRunner
runner = GradioRunner.from_trial_folder('/your/path/to/trial_dir')
runner.run_web()
该命令行界面将运行streamlit网页界面,但代码是gradio版本。
autorag run_web --yaml_path your/path/to/pipeline.yaml
autorag run_web --trial_path your/path/to/trial_dir
想要指定项目文件夹吗?
您可以通过--project_dir选项或project_dir参数指定项目目录。
提示
为什么不把你的工作和评估结果分享给其他人呢?
你可以简单地分享你的yaml文件,或者summary.csv文件。
通过这种方式,你可以将整个RAG流程和评估结果分享给他人。
欢迎在我们的Discord频道分享您的工作成果!
大功告成! 您已成功为数据集找到最优的RAG流程并完成部署。 现在,您可以创建自定义配置文件,编写更完善的YAML配置文件, 并通过反复评估来持续优化结果。
或者利用节省的时间,直接用AutoRAG启动一个新的RAG产品!