This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Benchmarks

Explore the benchmarks used in NodeRAG experiments This section details the benchmark datasets and how they were processed.

Benchmarks

我们观察到,许多当前的基准测试不再符合现代RAG设置。传统的RAG基准测试处理段落,在LLM生成答案之前从有限的集合中选择相关段落。当前的RAG设置更接近现实场景,我们直接处理原始语料库进行检索和回答。因此,我们修改了现有的多跳数据集,将所有段落合并到单个语料库中并评估最终答案。认识到RAG主要关注检索系统质量,我们在评估中保持了一致的问答设置以确保公平比较。

原始语料库

您应该将所有语料库合并到一个语料库中,然后使用每个RAG系统的索引功能将其索引到各自的数据库中。

答案和评估

将您的问题和答案以键值对的形式保存在parquet文件格式中。然后您可以直接使用我们提供的"LLM作为评判"脚本进行测试。

基准测试

我们提供了我们使用的大部分数据集,这些数据集已经被处理成易于使用的格式。但是,由于某些数据集的版权要求,请联系任何作者以获取我们处理过的数据集和评估parquet文件。

1 - RAG-QA-ARENA

RAG-QA-ARENA 是一个基于偏好的比较数据集,我们为此提供详细的教程

数据获取

您可以通过发送邮件给任何一位作者来获取数据集。

处理流程

您将在 Google Drive 中找到一个 RAG Arena 文件夹。请将该文件夹中的数据文件放入您 GitHub 仓库中的 rag-qa-arena 文件夹中。

索引和回答

在原始命令中添加 -a 标志可以跳过评估并获取原始 parquet 文件。

例如:

python -m /eval/eval_node -f path/to/main_folder -q path/to/question_parquet -a

使用 rag-qa-arena 文件夹中的 change.ipynb 将 parquet 转换为评估用的 JSON 格式。将处理后的 JSON 文件放在 data/pairwise_eval 文件夹中,按照以下结构组织:

📁 rag-qa-arena
└── 📁 data
    └── 📁 pairwise_eval
        └── 📁 GraphRAG
            ├── 📄 fiqa.json
            ├── 📄 lifestyle.json
            ├── 📄 recreation.json
            ├── 📄 science.json
            ├── 📄 technology.json
            └── 📄 writing.json
        └── 📁 NodeRAG
            ├── 📄 fiqa.json
            ├── 📄 lifestyle.json
            ├── 📄 recreation.json
            ├── 📄 science.json
            ├── 📄 technology.json
            └── 📄 writing.json
        └── 📁 NaiveRAG
            ├── 📄 fiqa.json
            ├── 📄 lifestyle.json
            ├── 📄 recreation.json
            ├── 📄 science.json
            ├── 📄 technology.json
            └── 📄 writing.json

直接与 LFRQA 比较

修改脚本,添加您的 openai_key

对于 Mac 和 Linux 系统:

bash run_pairwise_eval_lfrqa.sh

对于 Windows 系统:

run_pairwise_eval_lfrqa.bat

比较一对 LLM 生成结果

修改脚本,添加您的 openai_key

对于 Mac 和 Linux 系统:

bash run_pairwise_eval_llms.sh

对于 Windows 系统:

run_pairwise_eval_llm.bat

您应该修改 model1 和 model2 以确保每个模型都与其他模型进行比较。例如,您可以将 NaiveRAG 与其他四个模型进行比较,然后将 Hyde 与剩余的三个模型(不包括 NaiveRAG)进行比较,以此类推,直到完成所有成对比较。

3.2 完整对比

python code/report_results.py --use_complete_pairs

此脚本会报告所有比较的胜率和胜率+平局率,并输出一个 all_battles.json 文件。