REAR is a RElevance-Aware Retrieval-augmented framework for open-domain question answering. [paper]
The checkpoint is availible on huggingface🤗. [checkpoint]
-
Install dependencies.
pip install -r requirements.txt
-
Run the following codes:
from rear.src.inf import get_vllm_model from rear.src.routing import reliability get_vllm_model("RUCAIBox/rear-llama-7b-hf") example = { "question": "Who won the first Noble Prize in Physics", "ctxs": [ "Wilhelm Conrad Röntgen won first Nobel Prize in Physics.", "Wilhelm Conrad Röntgen won it for discovery of X-rays", "Albert Einstein was awarded the 1921 Nobel Prize in Physics", "The Nobel Prize in Physics is a yearly award.", "First law of thermodynamics was stated by William" ] } final_answer = reliability(example)['rely_answer'] print(final_answer)
-
Training.
bash train.sh meta-llama/Llama-2-7b-hf [model output path] [training data] [deepspeed config file]
-
Inference.
First, to generate answers and the path-reliability scores:
python rear/inference.py \ --model_path RUCAIBox/rear-llama-7b-hf \ --phase reliability \ --source [test file] \ --outfile [output file(1)]
Second, to generate the knowledge-consistency scores:
python rear/inference.py \ --model_path RUCAIBox/rear-llama-7b-hf \ --phase consistency \ --source [output file(1)] \ --outfile [output file(2)]
The QA pairs, along with the documents used for inference, are available for download at the following link: [data].
After running these scripts, if you have provided "reference" as the ground truth in the test source data, the EM (Exact Match) and F1 scores will be automatically calculated.
Please cite the following paper if you find our code or data helpful.
@article{wang2024rear,
title={REAR: A Relevance-Aware Retrieval-Augmented Framework for Open-Domain Question Answering},
author={Wang, Yuhao and Ren, Ruiyang and Li, Junyi and Zhao, Wayne Xin and Liu, Jing and Wen, Ji-Rong},
journal={arXiv preprint arXiv:2402.17497},
year={2024}
}