RAGLAB: модульная и ориентированная на исследования унифицированная структура для генерации с расширенным поиском
RAGLAB — это модульная исследовательская среда с открытым исходным кодом для алгоритмов расширенной генерации (RAG). Он предлагает воспроизведение 6 существующих алгоритмов RAG и комплексную систему оценки с 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: от сбора данных и обучения до автоматической оценки.
Реализация расширенных алгоритмов: воспроизводит 6 современных алгоритмов RAG с легко расширяемой структурой для разработки новых алгоритмов.
Режим взаимодействия и режим оценки: Режим взаимодействия специально разработан для быстрого понимания алгоритмов. Режим оценки специально разработан для воспроизведения результатов бумажных работ и научных исследований.
Платформа честного сравнения: предоставляет результаты тестов для 6 алгоритмов, 5 типов задач и 10 наборов данных.
Эффективный клиент Retriever: предлагает локальный API для параллельного доступа и кэширования со средней задержкой менее 1 секунды.
Поддержка универсального генератора: совместимость с моделями 70B+, VLLM и методами квантования.
Гибкая лаборатория инструкций: настраиваемые шаблоны инструкций для различных сценариев RAG.
Интересные применения RAG
Автообследование
среда разработки: pytorch: 2.0.1-py3.10-cuda11.8.0-devel-ubuntu22.04
установить миниконду
git клон RAGLAB
https://github.com/fate-ubw/RAGLAB.git
создать среду из файла yml
диск РАГЛАБ conda env create -f Environment.yml
установить flash-attn, en_core_web_sm, пункт вручную
pip установить flash-attn==2.2 python -m spacy скачать en_core_web_sm точка python -m nltk.downloader
диск РАГЛАБ модель mkdircd модель mkdir output_models# модель ретривера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-adapter --local-dir selfrag_llama3_70B-adapter/ --local-dir-use-symlinks False мкдир Мета-Лама-3-70Б huggingface-cli скачать мета-llama/Meta-Llama-3-70B --local-dir Meta-Llama-3-70B/ --local-dir-use-symlinks False# базовая модель для точной настройки и LoRAmkdir Meta-Llama-3 -8Б huggingface-cli скачать мета-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 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 скачать google/t5_xxl_true_nli_mixture --local-dir t5_xxl_true_nli_mixture/ --local-dir-use-symlinks False# модель factcore мы используем 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, включая данные обучения, данные знаний и данные оценки. Мы упаковали для вас все данные, поэтому вам просто нужно загрузить их, и они готовы к использованию.
диск РАГЛАБ Huggingface-cli скачать RAGLAB/data --local-dir data --repo-type dataset
Режим взаимодействия специально разработан для быстрого понимания алгоритмов. В режиме взаимодействия вы можете очень быстро запускать различные алгоритмы, понимать процесс рассуждения различных алгоритмов без необходимости загрузки каких-либо дополнительных данных.
Все алгоритмы, интегрированные в raglab, включают два режима: interact
и evaluation
. Этап тестирования демонстрируется в interact
режиме только для демонстрации и обучения.
Примечание
Из-за требования Кольберта к абсолютным путям вам необходимо изменить index_dbPath и text_dbPath в файле конфигурации, чтобы использовать абсолютные пути.
Измените index_dbPath
и text_dbPath
в файле конфигурации: colbert_server-10samples.yaml.
index_dbPath: /ваш_корневой_путь/RAGLAB/data/retrival/colbertv2.0_embedding/wiki2023-10samples text_dbPath: /ваш_корневой_путь/RAGLAB/data/retrival/colbertv2.0_passages/wiki2023-10samples/enwiki-20230401-10samples.tsv
запустить сервер Колберта
диск РАГЛАБ sh run/colbert_server/colbert_server-10samples.sh
Примечание
На этом этапе внедрение Colbert сообщит, что из-за ошибок пути необходимо повторно обработать внедрение Colbert. Пожалуйста, введите yes
, и raglab автоматически поможет вам обработать встраивание и запустить сервер Colbert.
Теперь откройте другой терминал и попробуйте запросить сервер Colbert.
диск РАГЛАБ sh run/colbert_server/ask_api.sh
Если возвращается результат, это означает, что сервер Colbert успешно запустился! ?
запустить selfrag (короткая форма и адаптивный поиск) протестировать режим взаимодействия встраивание 10 образцов
диск РАГЛАБ sh run/rag_inference/3-selfrag_reproduction-interact-short_form-adaptive_retrieval.sh
Поздравляем!!!Теперь вы уже знаете, как запустить raglab?
В raglab каждый алгоритм имеет 10 встроенных запросов в режиме взаимодействия, которые выбираются из разных тестов.
Примечание
не забудьте загрузить базу данных и модель wiki2018 konwledge, прежде чем запускать бумажные результаты
Из-за требования Кольберта к абсолютным путям вам необходимо изменить index_dbPath
и text_dbPath
в файле конфигурации и обработать базу данных внедрения wiki2018.
компакт-диск RAGLAB/config/colbert_server vim colbert_server.yaml index_dbPath: {ваш_корневой_путь}/RAGLAB/data/retrival/colbertv2.0_embedding/wiki2018 text_dbPath: {ваш_корневой_путь}/RAGLAB/data/retrival/colbertv2.0_passages/wiki2018/wiki2018.tsv
vim /data/retrival/colbertv2.0_embedding/wiki2018/indexes/wiki2018/metadata.json# измените корневой путь, другие параметры изменять не нужно. 0_passages/wiki2018/wiki2018.tsv","experiment": "/{your_root_path}/RAGLAB/data/retrival/colbertv2.0_embedding/wiki2018",
Измените абсолютные пути, связанные с исходным файлом внедрения wiki2018.
Измените пути в файле конфигурации
Внимание: для colbert_server требуется не менее 60 ГБ оперативной памяти.
диск РАГЛАБ sh run/colbert_server/colbert_server.sh
откройте другой терминал, проверьте свой сервер ColBERT
диск РАГЛАБ sh run/colbert_server/ask_api.sh
Сервер ColBERT успешно стартовал!!! ?
Эксперименты по выводу требуют параллельного запуска сотен сценариев, необходимо использовать автоматический планировщик графических процессоров для автоматического выделения графических процессоров для различных сценариев bash в параллельном режиме.
установить simple_gpu_scheduler
pip установить simple_gpu_scheduler
провести сотни экспериментов в одной строке?
диск РАГЛАБ 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_retreaval-pregiven_passages.sh sh run/rag_inference/selfrag_reproduction/selfrag_reproduction-evaluation-short_form-PubHealth-always_retreaval-pregiven_passages.sh
вот пример
RAGLAB включает 3 классических метода оценки: точность, F1 и EM (точное совпадение). Эти три метода просты в расчете, поэтому их можно вычислять динамически в процессе вывода. Однако ALCE и Factscore, две расширенные метрики, требуют завершения процесса вывода перед оценкой.
ALCE : RAGLAB интегрировал репозиторий ALCE в RAGLAB. Вам нужно только указать путь к результатам вывода в файле конфигурации.
cd RAGLABcd run/ALCE/# Измените путь в каждом файле sh для файлов, сгенерированных логическим выводом# Например: # python ./ALCE/eval.py --f './data/eval_results/ASQA/{путь_вашего_входного_файла}.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 в настоящее время не может интегрировать среду Factscore, поэтому пользователям необходимо установить среду Factscore отдельно для оценки.
После установки среды Factscore измените путь к результатам вывода в файле bash.
cd RAGLAB/run/Factscore/# измените путь в каждом sh-файле для файлов, сгенерированных логическим выводом# Например:# python ./FactScore/factscore/factscore.py # --input_path './data/eval_results/Factscore/{ваш_входной_файл_путь }.jsonl' # --model_name "retrival+ChatGPT"# --openai_key ./api_keys.txt # --data_dir ./data/retrival/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.