RAGLAB: 검색 증강 생성을 위한 모듈식 및 연구 중심 통합 프레임워크
RAGLAB은 RAG(Retrieval-Augmented Generation) 알고리즘을 위한 모듈식 연구 중심 오픈 소스 프레임워크입니다. 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가지 알고리즘에 대한 벤치마크 결과를 제공합니다.
효율적인 검색 클라이언트: 평균 대기 시간이 1초 미만인 병렬 액세스 및 캐싱을 위한 로컬 API를 제공합니다.
다목적 생성기 지원: 70B+ 모델, VLLM 및 양자화 기술과 호환됩니다.
유연한 교육 랩: 다양한 RAG 시나리오에 대한 사용자 정의 가능한 교육 템플릿입니다.
흥미로운 RAG 애플리케이션
자동 설문조사
개발 환경:pytorch:2.0.1-py3.10-cuda11.8.0-devel-ubuntu22.04
미니콘다 설치
자식 클론 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 출력_모델# 검색기 모델mkdir colbertv2.0 Huggingface-cli 다운로드 colbert-ir/colbertv2.0 --local-dir colbertv2.0/ --local-dir-use-symlinks False mkdir contriever-msmarco huggingface-cli 다운로드 facebook/contriever-msmarco --local-dir contriever-msmarco/ --local-dir-use-symlinks False# 미세 조정 생성기# 8B modelmkdir Llama3-8B-baseline huggingface-cli 다운로드 RAGLAB/Llama3-8B-baseline --local-dir Llama3-8B-baseline/ --local-dir-use-symlinks False mkdir selfrag_llama3_8b-epoch_0_1 huggingface-cli 다운로드 RAGLAB/selfrag_llama3-8B --local-dir selfrag_llama3_8b-epoch_0_1/ --local-dir-use-symlinks False# 70B modelmkdir Llama3-70B-baseline-adapter huggingface-cli 다운로드 RAGLAB/Llama3-70B-baseline-adapter --local-dir Llama3-70B-baseline-adapter/ --local-dir-use-symlinks False mkdir selfrag_llama3_70B-어댑터 Huggingface-cli 다운로드 RAGLAB/selfrag_llama3-70B-어댑터 --local-dir selfrag_llama3_70B-어댑터/ --local-dir-use-symlinks False mkdir 메타-라마-3-70B Huggingface-cli 다운로드 Meta-llama/Meta-Llama-3-70B --local-dir Meta-Llama-3-70B/ --local-dir-use-symlinks False# 미세 조정 및 LoRAmkdir Meta-Llama-3용 기본 모델 -8B Huggingface-cli 다운로드 Meta-llama/Meta-Llama-3-8B --local-dir Meta-Llama-3-8B/ --local-dir-use-symlinks False# ALCE 측정 모델mkdir gpt2-large Huggingface-cli 다운로드 openai-community/gpt2-large --local-dir gpt2-large/ --local-dir-use-symlinks False mkdir 로베르타-대형-분대 Huggingface-cli 다운로드 gaotianyu1350/roberta-large-squad --local-dir roberta-large-squad/ --local-dir-use-symlinks False mkdir t5_xxl_true_nli_mixture huggingface-cli download 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 download selfrag/selfrag_llama2_7b --local-dir selfrag_llama2_7b/ --local-dir-use-symlinks False# Huggingface에서 생성기로 다른 모델을 다운로드할 수 있습니다.
다양한 알고리즘의 작동 방식만 이해하면 되는 경우 RAGLAB에서 개발한 상호 작용 모드가 귀하의 요구 사항을 충족할 수 있습니다.
논문의 결과를 재현하려면 훈련 데이터, 지식 데이터, 평가 데이터 등 필요한 모든 데이터를 Hugging Face에서 다운로드해야 합니다. 우리는 귀하를 위해 모든 데이터를 패키지화했으므로 다운로드만 하면 바로 사용할 수 있습니다.
CD 라글랩 Huggingface-cli 다운로드 RAGLAB/data --local-dir 데이터 --repo-type 데이터 세트
상호작용 모드는 알고리즘을 빠르게 이해할 수 있도록 특별히 설계되었습니다. 상호 작용 모드에서는 추가 데이터를 다운로드할 필요 없이 다양한 알고리즘을 매우 빠르게 실행하고 다양한 알고리즘의 추론 프로세스를 이해할 수 있습니다.
raglab에 통합된 모든 알고리즘에는 interact
및 evaluation
두 가지 모드가 포함되어 있습니다. 테스트 단계는 시연 및 교육을 위해 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
콜버트 서버 실행
CD 라글랩 sh 실행/colbert_server/colbert_server-10samples.sh
메모
이 시점에서 콜버트 임베딩은 경로 오류로 인해 콜버트 임베딩을 재처리해야 한다는 메시지를 표시합니다. yes
입력하면 raglab이 자동으로 임베딩 처리 및 콜버트 서버 시작을 도와줍니다.
이제 다른 터미널을 열고 콜버트 서버를 요청해 보세요
CD 라글랩 sh 실행/colbert_server/ask_api.sh
결과가 반환되면 콜버트 서버가 성공적으로 시작되었음을 의미합니다! ?
selfrag 실행(약식 및 적응형 검색) 상호 작용 모드 테스트 10개 샘플 임베딩
CD 라글랩 sh 실행/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 실행/colbert_server/colbert_server.sh
다른 터미널을 열고 ColBERT 서버를 테스트하세요
CD 라글랩 sh 실행/colbert_server/ask_api.sh
ColBERT 서버가 성공적으로 시작되었습니다!!! ?
추론 실험에는 수백 개의 스크립트를 병렬로 실행해야 하며, 자동 GPU 스케줄러를 사용하여 병렬로 다양한 bash 스크립트에 GPU를 자동으로 할당해야 합니다.
simple_gpu_scheduler
설치
pip 설치 simple_gpu_scheduler
한 줄에 수백 가지 실험을 실행합니까?
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 실행/rag_inference/selfrag_reproduction/selfrag_reproduction-evaluation-short_form-PubHealth-adaptive_retrieval-pregiven_passages.sh sh 실행/rag_inference/selfrag_reproduction/selfrag_reproduction-evaluation-short_form-PubHealth-always_retrieval-pregiven_passages.sh
여기에 예가 있습니다
RAGLAB에는 정확도, F1 및 EM(정확한 일치)의 3가지 기본 평가 방법이 포함되어 있습니다. 이 3가지 방법은 계산이 간단하므로 추론 프로세스 중에 동적으로 계산할 수 있습니다. 그러나 두 가지 고급 지표인 ALCE와 Factscore는 평가 전에 추론 프로세스를 완료해야 합니다.
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 "검색+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를 평가 모델로 사용했기 때문에 로컬 모델을 다운로드할 필요가 없습니다. Factscore를 평가하기 위해 로컬 모델을 사용해야 하는 경우 Factscore를 참조하세요.
지식 데이터베이스를 직접 처리하려면 다음 단계를 참조하세요. 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 라이선스에 따라 라이선스가 부여됩니다.