RAGLAB: กรอบงานแบบครบวงจรที่มุ่งเน้นการวิจัยแบบแยกส่วนสำหรับการสร้างแบบเสริมการดึงข้อมูล
RAGLAB เป็นเฟรมเวิร์กโอเพ่นซอร์สแบบโมดูลาร์ที่มุ่งเน้นการวิจัยสำหรับอัลกอริธึมการดึงข้อมูล-Augmented Generation (RAG) โดยนำเสนอการจำลองอัลกอริธึม RAG ที่มีอยู่ 6 แบบและระบบการประเมินผลที่ครอบคลุมพร้อมชุดข้อมูลการวัดประสิทธิภาพ 10 ชุด ช่วยให้สามารถเปรียบเทียบอย่างยุติธรรมระหว่างอัลกอริทึม RAG และการขยายที่ง่ายดายสำหรับการพัฒนาอัลกอริทึม ชุดข้อมูล และตัวชี้วัดการประเมินผลใหม่อย่างมีประสิทธิภาพ
2024.10.6: เอกสารของเราได้รับการยอมรับจากการสาธิตระบบ EMNLP 2024? คุณสามารถค้นหาบทความของเราได้ใน 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 ทั้งหมดตั้งแต่การรวบรวมและการฝึกอบรมข้อมูลไปจนถึงการประเมินอัตโนมัติ
การใช้งานอัลกอริธึมขั้นสูง: สร้างอัลกอริธึม RAG ที่ล้ำสมัย 6 อัลกอริธึม พร้อมเฟรมเวิร์กที่ขยายได้ง่ายสำหรับการพัฒนาอัลกอริธึมใหม่
โหมดโต้ตอบและโหมดการประเมินผล: โหมดโต้ตอบได้รับการออกแบบมาโดยเฉพาะเพื่อการทำความเข้าใจอัลกอริธึมอย่างรวดเร็ว โหมดการประเมินผลได้รับการออกแบบมาโดยเฉพาะสำหรับการผลิตซ้ำผลงานวิจัยและการวิจัยทางวิทยาศาสตร์
แพลตฟอร์มการเปรียบเทียบที่ยุติธรรม: ให้ผลลัพธ์การวัดประสิทธิภาพสำหรับอัลกอริธึม 6 อัลกอริธึมใน 5 ประเภทงานและชุดข้อมูล 10 ชุด
Efficient Retriever Client: เสนอ API ภายในสำหรับการเข้าถึงและการแคชแบบขนาน โดยมีเวลาแฝงเฉลี่ยต่ำกว่า 1 วินาที
รองรับเครื่องกำเนิดไฟฟ้าอเนกประสงค์: ใช้งานได้กับรุ่น 70B+, VLLM และเทคนิคการหาปริมาณ
ห้องปฏิบัติการคำสั่งที่ยืดหยุ่น: เทมเพลตคำสั่งที่ปรับแต่งได้สำหรับสถานการณ์ RAG ต่างๆ
แอปพลิเคชั่น RAG ที่น่าสนใจ
การสำรวจอัตโนมัติ
สภาพแวดล้อม dev: pytorch:2.0.1-py3.10-cuda11.8.0-devel-ubuntu22.04
ติดตั้งมินิคอนด้า
git โคลน RAGLAB
https://github.com/fate-ubw/RAGLAB.git
สร้างสภาพแวดล้อมจากไฟล์ yml
ซีดี RAGLAB conda env สร้าง -f environment.yml
ติดตั้ง flash-attn, en_core_web_sm, punkt ด้วยตนเอง
pip ติดตั้ง flash-attn==2.2 ดาวน์โหลด python -m spacey en_core_web_sm หลาม -m nltk.downloader punkt
ซีดี RAGLAB mkdir modelโมเดลซีดี mkdir output_models# โมเดลรีทรีฟเวอร์mkdir colbertv2.0 ดาวน์โหลด Huggingface-cli colbert-ir/colbertv2.0 --local-dir colbertv2.0/ --local-dir-use-symlinks เท็จ 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 เท็จ 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 เท็จ mkdir selfrag_llama3_70B-อะแดปเตอร์ ดาวน์โหลด Huggingface-cli RAGLAB/selfrag_llama3-70B-adapter --local-dir selfrag_llama3_70B-adapter/ --local-dir-use-symlinks เท็จ 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 Metric Modelsmkdir gpt2-large ดาวน์โหลด Huggingface-cli openai-community/gpt2-large --local-dir gpt2-large/ --local-dir-use-symlinks เท็จ เอ็มเคเดียร์ โรแบร์ต้า-ใหญ่-ทีม ดาวน์โหลด Huggingface-cli gaotianyu1350/roberta-large-squad --local-dir roberta-large-squad/ --local-dir-use-symlinks เท็จ 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# โมเดล factscore เราใช้ 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 รวมถึงข้อมูลการฝึกอบรม ข้อมูลความรู้ และข้อมูลการประเมินผล เราได้รวมข้อมูลทั้งหมดไว้ให้คุณแล้ว ดังนั้นคุณเพียงแค่ต้องดาวน์โหลดข้อมูลและพร้อมใช้งาน
ซีดี RAGLAB ดาวน์โหลด Huggingface-cli RAGLAB/data --local-dir data --repo-type dataset
โหมดโต้ตอบได้รับการออกแบบมาโดยเฉพาะเพื่อการทำความเข้าใจอัลกอริธึมอย่างรวดเร็ว ในโหมดโต้ตอบ คุณสามารถเรียกใช้อัลกอริธึมต่างๆ ได้อย่างรวดเร็ว เข้าใจกระบวนการหาเหตุผลของอัลกอริธึมต่างๆ โดยไม่จำเป็นต้องดาวน์โหลดข้อมูลเพิ่มเติมใดๆ
อัลกอริธึมทั้งหมดที่รวมอยู่ใน raglab ประกอบด้วยสองโหมด: interact
และ evaluation
ขั้นตอนการทดสอบแสดงให้เห็นในโหมด interact
เพื่อการสาธิตและการศึกษาเท่านั้น ?
บันทึก
เนื่องจากข้อกำหนดของ Colbert สำหรับเส้นทางที่แน่นอน คุณจะต้องแก้ไข index_dbPath และ text_dbPath ในไฟล์กำหนดค่าเพื่อใช้เส้นทางที่แน่นอน
แก้ไข index_dbPath
และ text_dbPath
ในไฟล์กำหนดค่า:colbert_server-10samples.yaml
index_dbPath: /your_root_path/RAGLAB/data/retrival/colbertv2.0_embedding/wiki2023-10samples text_dbPath: /your_root_path/RAGLAB/data/retrieval/colbertv2.0_passages/wiki2023-10samples/enwiki-20230401-10samples.tsv
เรียกใช้เซิร์ฟเวอร์โคลเบิร์ต
ซีดี RAGLAB sh run/colbert_server/colbert_server-10samples.sh
บันทึก
ณ จุดนี้ การฝังโคลเบิร์ตจะแจ้งว่าเนื่องจากข้อผิดพลาดของพาธ การฝังโคลเบิร์ตจึงจำเป็นต้องได้รับการประมวลผลใหม่ โปรดป้อน yes
จากนั้น raglab จะช่วยคุณประมวลผลการฝังและเริ่มเซิร์ฟเวอร์โคลเบิร์ตโดยอัตโนมัติ
ตอนนี้โปรดเปิดเทอร์มินัลอื่นแล้วลองขอเซิร์ฟเวอร์โคลเบิร์ต
ซีดี RAGLAB sh run/colbert_server/ask_api.sh
หากผลลัพธ์ถูกส่งคืน แสดงว่าเซิร์ฟเวอร์ colbert เริ่มต้นได้สำเร็จ! -
เรียกใช้การทดสอบโหมดโต้ตอบ selfrag (รูปแบบสั้น & การดึงข้อมูลแบบปรับตัว) การฝังตัวอย่าง 10 ตัวอย่าง
ซีดี RAGLAB sh run/rag_inference/3-selfrag_reproduction-interact-short_form-adaptive_retrieval.sh
ยินดีด้วย !!! ตอนนี้คุณรู้วิธีเรียกใช้ raglab แล้วหรือยัง?
ใน raglab แต่ละอัลกอริธึมจะมี 10 คิวรีในตัวในโหมดโต้ตอบซึ่งสุ่มตัวอย่างจากการวัดประสิทธิภาพที่แตกต่างกัน
บันทึก
อย่าลืมดาวน์โหลดฐานข้อมูลและโมเดลความรู้ของ wiki2018 ก่อนที่จะรันผลลัพธ์กระดาษ
เนื่องจากข้อกำหนดของ Colbert สำหรับเส้นทางที่แน่นอน คุณจะต้องแก้ไข index_dbPath
และ text_dbPath
ในไฟล์กำหนดค่าและประมวลผลฐานข้อมูลที่ฝัง wiki2018
ซีดี RAGLAB/config/colbert_server กลุ่ม 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/retrival/colbertv2.0_embedding/wiki2018",
แก้ไขเส้นทางสัมบูรณ์ที่ผูกไว้ในไฟล์ต้นฉบับที่ฝัง wiki2018
แก้ไขเส้นทางในไฟล์ปรับแต่ง
ข้อควรสนใจ: colbert_server ต้องมี RAM อย่างน้อย 60GB
ซีดี RAGLAB sh run/colbert_server/colbert_server.sh
เปิดเทอร์มินัลอื่นทดสอบเซิร์ฟเวอร์ ColBERT ของคุณ
ซีดี RAGLAB sh run/colbert_server/ask_api.sh
เริ่มเซิร์ฟเวอร์ ColBERT สำเร็จแล้ว!!! -
การทดลองอนุมานจำเป็นต้องเรียกใช้สคริปต์หลายร้อยสคริปต์พร้อมกัน โดยต้องใช้ตัวกำหนดเวลา GPU อัตโนมัติเพื่อจัดสรร GPU โดยอัตโนมัติสำหรับสคริปต์ทุบตีที่แตกต่างกันในแบบคู่ขนาน
ติดตั้ง simple_gpu_scheduler
pip ติดตั้ง simple_gpu_scheduler
ทำการทดลองหลายร้อยครั้งในบรรทัดเดียว ?
ซีดี RAGLAB 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-evalue-short_form-PubHealth-adaptive_retrieval-pregiven_passages.sh sh วิ่ง / rag_inference / selfrag_reproduction / selfrag_reproduction-evalue-short_form-PubHealth-always_retrieval-pregiven_passages.sh
นี่คือตัวอย่าง
RAGLAB มีวิธีการประเมินแบบคลาสสิก 3 วิธี ได้แก่ ความแม่นยำ F1 และ EM (การจับคู่แบบตรงทั้งหมด) วิธีการทั้ง 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
ซึ่งขัดแย้งกับเวอร์ชัน flash-attn ที่จำเป็นในโมดูลการฝึกอบรมและการอนุมานของ RAGLAB ดังนั้น ปัจจุบัน RAGLAB ไม่สามารถรวมสภาพแวดล้อมของ Factorcore ได้ ดังนั้นผู้ใช้จึงต้องติดตั้งสภาพแวดล้อมของ Factorcore แยกต่างหากเพื่อการประเมิน
หลังจากติดตั้งสภาพแวดล้อม 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 เป็นแบบจำลองการประเมิน ดังนั้นจึงไม่จำเป็นต้องดาวน์โหลดแบบจำลองในเครื่อง หากคุณต้องการใช้โมเดลท้องถิ่นเพื่อประเมิน Factorcore โปรดดูที่ Factorcore
หากคุณต้องการประมวลผลฐานข้อมูลความรู้ด้วยตนเอง โปรดทำตามขั้นตอนต่อไปนี้ 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