RAGLAB: 検索拡張生成のためのモジュール式の研究指向の統合フレームワーク
RAGLAB は、検索拡張生成 (RAG) アルゴリズム用のモジュール式の研究指向のオープンソース フレームワークです。 6 つの既存の RAG アルゴリズムの再現と 10 のベンチマーク データセットによる包括的な評価システムを提供し、RAG アルゴリズム間の公平な比較と、新しいアルゴリズム、データセット、評価指標の効率的な開発のための簡単な拡張を可能にします。
2024.10.6: EMNLP 2024 System Demonstration に論文が採択されました。私たちの論文は RAGLAB にあります。
2024.9.9: RAGLAB は評価結果のすべてのログ ファイルと評価ファイルをオープンソース化しましたか?
2024.8.20: RAGLAB は 4 つのモデルをオープンソース化しました?: llama3-8B-baseline selfrag-llama3-8b llama3-70B-adaptor selfrag-llama3-70B-adaptor
2024.8.6: RAGLAB リリース?
包括的な RAG エコシステム:データ収集からトレーニング、自動評価まで、RAG パイプライン全体をサポートします。
高度なアルゴリズムの実装:新しいアルゴリズムを開発するための拡張が簡単なフレームワークを備えた 6 つの最先端の RAG アルゴリズムを再現します。
インタラクト モードと評価モード:インタラクト モードは、アルゴリズムを素早く理解できるように特別に設計されています。評価モードは、論文結果や科学研究を再現するために特別に設計されています。
公平な比較プラットフォーム: 5 つのタスク タイプと 10 のデータセットにわたる 6 つのアルゴリズムのベンチマーク結果を提供します。
Efficient Retriever Client:並列アクセスとキャッシュのためのローカル API を提供し、平均遅延は 1 秒未満です。
多用途ジェネレーターのサポート: 70B+ モデル、VLLM、および量子化技術と互換性があります。
柔軟な指示ラボ:さまざまな RAG シナリオ向けにカスタマイズ可能な指示テンプレート。
興味深い RAG アプリケーション
自動調査
開発環境:pytorch:2.0.1-py3.10-cuda11.8.0-devel-ubuntu22.04
ミニコンダをインストールする
git clone RAGLAB
https://github.com/fate-ubw/RAGLAB.git
ymlファイルから環境を作成する
cd ラグラボ conda env create -f 環境.yml
flash-attn、en_core_web_sm、punkt を手動でインストールする
pip install flash-attn==2.2 python -m spacy ダウンロード en_core_web_sm python -m nltk.downloader punkt
cd ラグラボ mkdirモデルcdモデル mkdir Output_models# 取得モデルmkdir Colbertv2.0 ハグフェイス-cli ダウンロード Colbert-ir/colbertv2.0 --local-dir Colbertv2.0/ --local-dir-use-symlinks False mkdir contriever-msmarco ハギングフェイス-cli ダウンロード facebook/contriever-msmarco --local-dir contriever-msmarco/ --local-dir-use-symlinks False# 微調整ジェネレーター# 8B modelmkdir Llama3-8B-baseline ハグフェイス-cli ダウンロード RAGLAB/Llama3-8B-baseline --local-dir Llama3-8B-baseline/ --local-dir-use-symlinks False mkdir selfrag_llama3_8b-epoch_0_1 ハギングフェイス-cli ダウンロード RAGLAB/selfrag_llama3-8B --local-dir selfrag_llama3_8b-epoch_0_1/ --local-dir-use-symlinks False# 70B modelmkdir Llama3-70B-baseline-adapter ハグフェイス-cli ダウンロード RAGLAB/Llama3-70B-baseline-adapter --local-dir Llama3-70B-baseline-adapter/ --local-dir-use-symlinks False mkdir selfrag_llama3_70B-アダプター ハグフェイス-cli ダウンロード RAGLAB/selfrag_llama3-70B-adapter --local-dir selfrag_llama3_70B-adapter/ --local-dir-use-symlinks False mkdir メタ-ラマ-3-70B hackgingface-cli ダウンロード metal-llama/Meta-Llama-3-70B --local-dir Meta-Llama-3-70B/ --local-dir-use-symlinks Finetune および LoRAmkdir Meta-Llama-3 の False# 基本モデル-8B hackgingface-cli ダウンロード metal-llama/Meta-Llama-3-8B --local-dir Meta-Llama-3-8B/ --local-dir-use-symlinks False# ALCE メトリクス モデルmkdir gpt2-large ハグフェイス-cli ダウンロード openai-community/gpt2-large --local-dir gpt2-large/ --local-dir-use-symlinks False mkdir roberta-large-squad ハグフェイス-cli ダウンロード gaotianyu1350/roberta-large-squad --local-dir roberta-large-squad/ --local-dir-use-symlinks False mkdir t5_xxl_true_nli_mixture Huggingface-cli ダウンロード google/t5_xxl_true_nli_mixture --local-dir t5_xxl_true_nli_mixture/ --local-dir-use-symlinks False# ファクトスコア モデル 評価には gpt3.5 を使用するため、ローカル モデルをダウンロードする必要はありません# 公式 selfrag repomkdir selfrag_llama2_7b からモデル Huggingface-cli ダウンロード selfrag/selfrag_llama2_7b --local-dir selfrag_llama2_7b/ --local-dir-use-symlinks False# 他のモデルを Huggingface からジェネレーターとしてダウンロードできます
さまざまなアルゴリズムがどのように機能するかを理解することだけが必要な場合は、RAGLAB によって開発された対話モードがニーズを満たすことができます。
論文の結果を再現したい場合は、学習データ、知識データ、評価データなど、必要なデータをすべてHugging Faceからダウンロードする必要があります。データはすべてパッケージ化されているので、ダウンロードするだけですぐにご利用いただけます。
cd ラグラボ ハグフェイス-cli ダウンロード RAGLAB/データ --local-dir データ --repo-type データセット
インタラクト モードは、アルゴリズムを素早く理解できるように特別に設計されています。インタラクション モードでは、追加のデータをダウンロードすることなく、さまざまなアルゴリズムを非常に迅速に実行し、さまざまなアルゴリズムの推論プロセスを理解できます。
raglab に統合されたすべてのアルゴリズムには、 interact
とevaluation
の 2 つのモードが含まれています。テスト ステージでは、デモンストレーションと教育のみを目的として、 interact
モードでデモンストレーションを行います。
注記
Colbert では絶対パスが必要なため、絶対パスを使用するには、構成ファイル内のindex_dbPath と text_dbPath を変更する必要があります。
構成ファイルcolbert_server-10samples.yamlのindex_dbPath
とtext_dbPath
変更します。
Index_dbPath: /your_root_path/RAGLAB/data/retrieval/colbertv2.0_embedding/wiki2023-10samples text_dbPath: /your_root_path/RAGLAB/data/retrieval/colbertv2.0_passages/wiki2023-10samples/enwiki-20230401-10samples.tsv
Colbertサーバーを実行する
cd ラグラボ sh run/colbert_server/colbert_server-10samples.sh
注記
この時点で、コルベール埋め込みにより、パス エラーのためコルベール埋め込みを再処理する必要があることが示されます。 yes
と入力すると、raglab が自動的に埋め込みの処理を支援し、colbert サーバーを起動します。
次に、別の端末を開いて Colbert サーバーをリクエストしてください。
cd ラグラボ sh run/colbert_server/ask_api.sh
結果が返された場合は、colbert サーバーが正常に起動したことを意味します。 ?
selfrag (短縮形式および適応型検索) の実行 インタラクション モードのテスト 10 サンプルの埋め込み
cd ラグラボ sh run/rag_inference/3-selfrag_reproduction-interact-short_form-adaptive_retrieval.sh
おめでとうございます!!!!これで、raglab の実行方法はもうわかりましたか?
raglab では、各アルゴリズムには、さまざまなベンチマークからサンプリングされた対話モードで 10 個のクエリが組み込まれています。
注記
論文の結果を実行する前に、Wiki2018 のデータベースとモデルを理解してダウンロードすることを覚えておいてください。
Colbert では絶対パスが必要なため、構成ファイルのindex_dbPath
とtext_dbPath
変更し、wiki2018 埋め込みデータベースを処理する必要があります。
cd RAGLAB/config/colbert_server vim Colbert_server.yaml Index_dbPath: {your_root_path}/RAGLAB/data/retrieval/colbertv2.0_embedding/wiki2018 text_dbPath: {your_root_path}/RAGLAB/data/retrieval/colbertv2.0_passages/wiki2018/wiki2018.tsv
vim /data/retrieval/colbertv2.0_embedding/wiki2018/indexes/wiki2018/metadata.json# ルート パスを変更します。他のパラメータは変更する必要はありません。"collection": "/{your_root_path}/RAGLAB/data/retrieval/colbertv2. 0_passages/wiki2018/wiki2018.tsv","実験": "/{your_root_path}/RAGLAB/data/retrieval/colbertv2.0_embedding/wiki2018",
wiki2018 埋め込みソース ファイルにバインドされている絶対パスを変更する
構成ファイル内のパスを変更する
注意: Colbert_server には少なくとも 60GB の RAM が必要です
cd ラグラボ sh run/colbert_server/colbert_server.sh
別の端末を開いて ColBERT サーバーをテストする
cd ラグラボ sh run/colbert_server/ask_api.sh
ColBERT サーバーが正常に起動しました!!! ?
推論実験では数百のスクリプトを並行して実行する必要があるため、自動 GPU スケジューラを使用して、並列でさまざまな bash スクリプトに GPU を自動的に割り当てる必要があります。
simple_gpu_scheduler
をインストールする
pip インストール simple_gpu_scheduler
1 行で何百もの実験を実行しますか?
cd ラグラボ simple_gpu_scheduler --gpus 0,1,2,3,4,5,6,7 < auto_gpu_scheduling_scripts/auto_run-llama3_8b-baseline-scripts.txt# 他のスクリプトも同じ方法で実行できます
your_script.txtの書き方は?
# auto_inference_selfreg-7b.txtsh run/rag_inference/selfrag_reproduction/selfrag_reproduction-evaluation-short_form-PubHealth-adaptive_retrieval-pregiven_passages.sh sh run/rag_inference/selfrag_reproduction/selfrag_reproduction-evaluation-short_form-PubHealth-always_retrieval-pregiven_passages.sh
ここに例があります
RAGLAB には、精度、F1、EM (完全一致) という 3 つの古典的な評価方法が含まれています。これら 3 つの方法は計算が簡単なので、推論プロセス中に動的に計算できます。ただし、ALCE と Factscore という 2 つの高度な指標では、評価前に推論プロセスを完了する必要があります。
ALCE : RAGLAB は、ALCE リポジトリを RAGLAB に統合しました。構成ファイルに推論結果のパスを設定するだけで済みます。
cd RAGLABcd run/ALCE/# 推論生成ファイルの各 sh ファイル内のパスを変更します# 例:# python ./ALCE/eval.py --f './data/eval_results/ASQA/{your_input_file_path}.jsonl' # --mauve # --qasimple_gpu_scheduler --gpus 0,1,2,3,4,5,6,7 < auto_gpu_scheduling_scripts/auto_eval_ALCE.txt
評価結果は入力ファイルと同じディレクトリに保存され、ファイル名の接尾辞は.score
になります。
Factscore : Factscore 環境では、 torch 1.13.1
のインストールが必要です。これは、RAGLAB のトレーニングおよび推論モジュールで必要な flash-attn バージョンと競合します。したがって、RAGLAB は現在 Factscore 環境を統合できないため、ユーザーは評価のために Factscore 環境を別途インストールする必要があります。
Factscore環境をインストールした後、bashファイル内の推論結果のパスを変更してください。
cd RAGLAB/run/Factscore/# 推論生成ファイルの各 sh ファイル内のパスを変更します# 例:# python ./FActScore/factscore/factscorer.py # --input_path './data/eval_results/Factscore/{your_input_file_path }.jsonl' # --model_name "retrieval+ChatGPT"# --openai_key ./api_keys.txt # --data_dir ./data/retrieval/colbertv2.0_passages/wiki2023 # --verbosesimple_gpu_scheduler --gpus 0,1,2,3,4,5,6,7 < auto_gpu_scheduling_scripts/auto_eval_Factscore.txt
評価結果は入力ファイルと同じディレクトリに保存され、ファイル名には_factscore_output.json
という接尾辞が付けられます。
注記
Factscore の評価プロセスでは、評価モデルとして GPT-3.5 を使用したため、ローカル モデルをダウンロードする必要はありません。ファクトスコアを評価するためにローカル モデルを使用する必要がある場合は、ファクトスコアを参照してください。
ナレッジ データベースを自分で処理したい場合は、次の手順を参照してください。 RAGLABはすでに処理済み知識データベースをHugging Faceにアップロードしています
ドキュメント: process_wiki.md
このセクションでは、RAGLAB でモデルをトレーニングするプロセスについて説明します。 HuggingFace? からすべての事前トレーニング済みモデルをダウンロードするか、以下のチュートリアルを使用して最初からトレーニングすることができます。
すべてのデータは、微調整に必要なすべてのデータを提供します。
ドキュメント: train_docs.md
このリポジトリが役立つと思われる場合は、私たちの成果を引用してください。
@inproceedings{zhang-etal-2024-raglab, title = "{RAGLAB}: A Modular and Research-Oriented Unified Framework for Retrieval-Augmented Generation", author = "Zhang, Xuanwang and Song, Yunze and Wang, Yidong and Tang, Shuyun and others", booktitle = "Proceedings of the 2024 Conference on Empirical Methods in Natural Language Processing: System Demonstrations", month = dec, year = "2024", publisher = "Association for Computational Linguistics", }
RAGLAB は MIT ライセンスに基づいてライセンスされています。