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
文件。