Skip to content

Latest commit

 

History

History
140 lines (91 loc) · 6.94 KB

File metadata and controls

140 lines (91 loc) · 6.94 KB

在本文档中,我们将介绍如何在统一的设置下复现我们表格中列出的各种方法的结果。有关每种方法的具体设置和解释,请参考实现细节。建议事先对本仓库有一定的基本了解,可以在初学者介绍中找到。

预备工作

复现步骤

所有使用的代码都基于仓库的 example/methods。我们为各种方法设置了适当的超参数。如果你需要自己调整它们,可以参考为每种方法提供的配置字典以及每种方法的原始论文。

1. 设置基本配置

首先,你需要在 my_config.yaml 中填写各种下载的路径。具体来说,你需要填写以下四个字段:

  • model2path:用你自己的路径替换 E5 和 Llama3-8B-instruct 模型的路径
  • method2index:填写使用 E5 构建的索引文件的路径
  • corpus_path:填写 jsonl 格式的 Wikipedia 语料库文件的路径
  • data_dir:更改为你自己的数据集下载路径

2. 设置特定方法的配置

对于一些需要使用额外模型的方法,需要额外的步骤。我们将在下面介绍需要额外步骤的方法。如果你知道你想要运行的方法不需要这些步骤,你可以直接跳到第三部分。

目录:

AAR

这种方法需要使用一个新的检索器,因此你需要下载检索器并构建索引。

  • 额外步骤1:下载 AAR-Contriever(从这里
  • 额外步骤2:为 AAR-Contriever 构建索引(注意,池化方法应该是 'mean')
  • 额外步骤3:在 run_exp.py 中的 AAR 函数中修改 index_pathmodel2path

LongLLMLingua

这种方法需要下载 Llama2-7B。

  • 额外步骤1:下载 Llama2-7B(从这里
  • 额外步骤2:在 run_exp.py 中的 llmlingua 函数中修改 refiner_model_path

RECOMP

这种方法需要下载作者训练的三个检查点(分别在 NQ、TQA 和 HotpotQA 上训练)。

Selective-Context

这种方法需要下载 GPT2。

  • 额外步骤1:下载 GPT2(从这里
  • 额外步骤2:在 run_exp.py 中的 sc 函数中修改 refiner_model_path

Ret-Robust

这种方法需要下载作者训练的 Lora 并下载 Llama2-13B 模型以加载 Lora。

  • 额外步骤1:下载 Llama2-13B(从这里
  • 额外步骤2:下载作者训练的 Lora,训练于 NQ(从这里)和训练于 2WikiMultihopQA(从这里
  • 额外步骤3:在 retrobust 函数的 model_dict 中修改相应的 Lora 路径,并在 my_config.yaml 中修改 Llama2-13B 路径

我们建议根据不同的数据集调整 SelfAskPipeline 中的 single_hop 参数,该参数控制是否分解查询。对于 NQ, TQA, PopQA, WebQ,我们将 single_hop 设置为 True

SKR

这种方法需要一个嵌入模型和推理阶段使用的训练数据。我们提供了作者给定的训练数据。如果你想使用自己的训练数据,可以根据训练数据的格式和原始论文生成它。

  • 额外步骤1:下载嵌入模型(从这里
  • 额外步骤2:下载训练数据(从这里
  • 额外步骤3:在 skr 函数的 model_path 中填写嵌入模型路径
  • 额外步骤4:在 skr 函数的 training_data_path 中填写训练数据路径

Self-RAG

这种方法需要使用一个训练好的模型,目前只支持在 vllm 框架中运行。

  • 额外步骤1:下载 Self-RAG 模型(从 7B 模型13B 模型
  • 额外步骤2:在 selfrag 函数中修改 generator_model_path

Spring

这种方法需要一个虚拟 Token 嵌入文件,目前只支持在 hf 框架中运行。

  • 额外步骤1:从官方仓库下载 embedding 文件
  • 额外步骤2:在 spring 函数中修改 token_embedding_path

Adaptive-RAG

该方法需要一个分类器对查询进行分类。由于作者没有提供官方的检查点,我们使用了其他人在Huggingface上训练的检查点进行实验(这可能会导致结果不一致)。

后续如果官方开源了checkpoint,我们将更新实验结果。

RQRAG

这种方法需要下载 RQRAG 模型。

  • 额外步骤1:从 Huggingface 仓库下载 RQRAG 模型:zorowin123/rq_rag_llama2_7B
  • 额外步骤2:在 rqrag 函数中修改 generator_model_path

3. 运行方法

使用以下命令在 NQ 数据集上运行实验。

python run_exp.py --method_name 'naive' \
                  --split 'test' \
                  --dataset_name 'nq' \
                  --gpu_id '0,1,2,3'

可以从以下方法中选择:

naive zero-shot AAR-contriever llmlingua recomp selective-context sure replug skr flare iterretgen ircot trace

R1-Searcher

这种方法需要下载 R1-Searcher 模型。

  • 额外步骤1:从 Huggingface 仓库下载 R1-Searcher 模型:XXsongLALA/Qwen-2.5-7B-base-RAG-RL
  • 额外步骤2:在 r1searcher 函数中修改 generator_model_path