📖 CRUD-RAG: A Comprehensive Chinese Benchmark for Retrieval-Augmented Generation of Large Language Models
此仓库包含 CRUD-RAG 的官方代码,这是评估 RAG 系统的一个新颖基准。 它包括我们为评估 RAG 系统而创建的数据集,以及如何在我们的基准测试上运行实验的教程。
- 本仓库的prompt是为ChatGPT系列模型设计的,我们建议你为其他模型选择更合适的prompt。尤其要注意,7B的小模型对prompt的使用尤其敏感(他们理解不了太复杂的prompt)。
- RAGQuestEval 指标的使用依赖于 GPT,我们使用 GPT 作为问题回答和生成器。你也可以自行修改代码,更换问题回答和生成模型。
- 第一次运行代码时,需要为文本构建向量索引。 这是一次性过程,因此您以后无需重复。 当您再次使用该代码时,请确保省略了construct-index参数。
├── data # 用于评测的数据集
│ ├── crud
│ │ └── merged.json # 完整的数据集
│ ├── crud_split
│ │ └── split_merged.json # 在论文中我们用于实验的数据集
│ └── 80000_docs
│ └── documents_dup_part... # 超过80,000条新闻文档, 用作 RAG 系统的检索文档库
│
├── src
│ ├── configs # 包含大模型相关设置的文件
│ │
│ ├── datasets # 用于加载数据集的脚本
│ │
│ ├── embeddings # 构建向量数据库的embedding
│ │
│ ├── llms # 加载大模型的脚本
│ │ │
│ │ ├── api_model.py # 调用GPT系列模型
│ │ │
│ │ ├── local_model.py # 调用本地部署的模型
│ │ │
│ │ └── remote_model.py # 调用部署在远程,封装成api的模型
│ │
│ ├── metric # 论文中使用的评估指标
│ │ │
│ │ ├── common.py # bleu, rouge, bertScore.
│ │ │
│ │ └── quest_eval.py # RAGQuestEval. 请注意,使用此类指标需要调用 GPT 等大型语言模型来回答问题,或者自行修改代码并部署问答模型。
│ │
│ ├── prompts # 实验中用到的prompt
│ │
│ ├── quest_eval # 问答指标RAGQuestEval使用的数据集
│ │
│ ├── retrievers # 调用检索器的脚本
│ │
│ │
│ └── tasks # 评估任务
│ ├── base.py
│ ├── continue_writing.py
│ ├── hallucinated_modified.py
│ ├── quest_answer.py
│ └── summary.py
- 安装依赖项
pip install -r requirements.txt
- 开启milvus-lite服务
milvus-server
-
下载bge-base-zh-v1.5 模型到 sentence-transformers/bge-base-zh-v1.5/ 路径下
-
根据需求修改 config.py
-
启动 quick_start.py
python quick_start.py \
--model_name 'gpt-3.5-turbo' \
--temperature 0.1 \
--max_new_tokens 1280 \
--data_path 'path/to/dataset' \
--shuffle True \
--docs_path 'path/to/retrieval_database' \
--docs_type 'txt' \
--chunk_size 128 \
--chunk_overlap 0 \
--retriever_name 'base' \
--collection_name 'name/of/retrieval_database' \
--retrieve_top_k 8 \
--task 'all' \
--num_threads 20 \
--show_progress_bar True \
--construct_index \ # 第一次运行代码时,需要为文本构建向量索引
@article{CRUDRAG,
title={CRUD-RAG: A Comprehensive Chinese Benchmark for Retrieval-Augmented Generation of Large Language Models},
author={Yuanjie Lyu, Zhiyu Li, Simin Niu, Feiyu Xiong, Bo Tang, Wenjin Wang, Hao Wu, Huanyong Liu, Tong Xu, Enhong Chen},
journal={arXiv preprint arXiv:2401.17043},
year={2024},
}