构建RAG系统的一个比较难的问题是,如何快速且公平地对比各种RAG方法?本文介绍一个最近比较火的项目FlashRAG,讲解如何快速实现并公平评估自己的RAG算法。
论文题目:FlashRAG: A Modular Toolkit for Efficient Retrieval-Augmented Generation Research
来源:中国人民大学
开源地址:https://github.com/RUC-NLPIR/FlashRAG
概述
FlashRAG 是一个 Python 工具包,用于复现和开发检索增强生成(RAG)算法。此工具包包括 32 个经过预处理的基准 RAG 数据集和 12 种最先进的 RAG 算法。以下是架构图:
最底层为组件层,包含RAG中的各种常用组件,包含检索器,重排器,压缩器,生成器,打分器等。
第二层为流程层,包含顺序,分支,迭代,循环,条件等流程,这部分主要是合理使用各种组件来实现具体的算法
第三层为数据层,包含用于检索的语料数据和用于评估的各种任务数据。
使用教程
环境安装
执行如下命令,需要python>=3.9。注意,faiss-cpu需要用conda重新安装从而适配特定设备
git clone https://github.com/RUC-NLPIR/FlashRAG.git
cd FlashRAG
pip install -e .
conda install -c pytorch faiss-cpu==1.8.0
数据准备
我们使用如下的python脚本,利用hf镜像快速下载 FlashRAG_datasets 数据集到本地的 FlashRAG_datasets 目录。
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
from pathlib import Path
import fire
def download(
repo: str = "RUC-NLPIR/FlashRAG_datasets",
output: str = "FlashRAG_datasets"