Rankify: инструментарий на языке Python, поддерживающий поиск и упорядочивание информации
Общее введение
Rankify - это инструментарий с открытым исходным кодом на языке Python, разработанный группой Data Science Group в Университете Инсбрука, Австрия. Он ориентирован на поиск информации, переупорядочивание и создание дополнений к поиску (RAG), обеспечивая единую структуру. Инструментарий поставляется с 40 встроенными предварительно полученными эталонными наборами данных, поддерживает 7 методов поиска и 24 модели переупорядочивания, а также включает в себя различные RAG Rankify - модульная и легко расширяемая система, подходящая для исследователей и разработчиков для экспериментов и бенчмаркинга. Код открыт и хорошо документирован, поддерживает Python 3.10 и выше.

Список функций
- Доступны семь методов извлечения, включая BM25, DPR, ColBERT, ANCE, BGE, Contriever и HYDE.
- Поддерживаются 24 модели переупорядочивания, такие как MonoT5, RankGPT, Sentence Трансформатор и т.д., чтобы повысить точность результатов поиска.
- Интегрированная технология Retrieval Augmented Generation (RAG) с поддержкой GPT, LLaMA, T5 и других реакций на генерацию моделей.
- Встроенные 40 предварительно найденных наборов данных, охватывающих вопросы и ответы, диалоги, связывание сущностей и другие сценарии.
- Предоставляет инструменты оценки для расчета метрик поиска, переупорядочивания и генерации результатов, таких как Top-K, EM, Recall.
- Поддерживает предварительно созданные индексы (например, Wikipedia и MS MARCO), что избавляет от необходимости создавать собственные индексы.
- Модульная структура, позволяющая пользователям настраивать наборы данных, ретриверы и модели.
Использование помощи
Rankify прост в установке и использовании. Ниже приведены подробные шаги и инструкции, которые помогут вам быстро начать работу.
Процесс установки
Для работы Rankify требуется Python 3.10 или выше. Рекомендуется устанавливать его в виртуальной среде, чтобы избежать конфликтов зависимостей.
- Создание виртуальной среды (рекомендуется)
Создайте среду с помощью Conda:
conda create -n rankify python=3.10
conda activate rankify
или использовать собственные инструменты Python:
python -m venv rankify_env
source rankify_env/bin/activate # Linux/Mac
rankify_env\Scripts\activate # Windows
- Установите PyTorch (рекомендуется версия 2.5.1).
Если у вас есть GPU, установите версию с CUDA 12.4:
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124
Если у вас нет графического процессора, установите версию для процессора:
pip install torch==2.5.1
- Установка фундамента
Установите основной функционал Rankify:
pip install rankify
- Полная установка (рекомендуется)
Установите все функции:
pip install "rankify[all]"
- Установка по требованию (опционально)
Установлена только функция поиска:
pip install "rankify[retriever]"
Установлена только функция переупорядочивания:
pip install "rankify[reranking]"
- Установите последнюю версию с GitHub (необязательно)
Получите версию для разработки:
git clone https://github.com/DataScienceUIBK/Rankify.git
cd Rankify
pip install -e ".[all]"
- Установка ColBERT Retriever (опционально)
Требуется дополнительная настройка:
conda install -c conda-forge gcc=9.4.0 gxx=9.4.0
conda install -c conda-forge libstdcxx-ng
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
export CC=gcc
export CXX=g++
rm -rf ~/.cache/torch_extensions/*
После установки Rankify готов к использованию.
Руководство по эксплуатации функций
1. использование предварительно отобранных наборов данных
Rankify предлагает 40 предварительно найденных наборов данных, которые можно загрузить с сайта Hugging Face.
- перейти::
- Модуль импорта наборов данных.
- Выберите ретривер и набор данных.
- Загрузите или загрузите данные.
- пример кода (вычисления)::
from rankify.dataset.dataset import Dataset
# 查看可用数据集
Dataset.available_dataset()
# 下载 BM25 的 nq-dev 数据集
dataset = Dataset(retriever="bm25", dataset_name="nq-dev", n_docs=100)
documents = dataset.download(force_download=False)
# 加载本地数据集
documents = Dataset.load_dataset('./bm25_nq_dev.json', 100)
2. использование функции поиска
Поддерживает несколько методов поиска, таких как BM25, DPR и др.
- перейти::
- Инициализируйте ретривер.
- Введите документ или вопрос.
- Получите результаты поиска.
- пример кода (вычисления)::
from rankify.retrievers.retriever import Retriever # 使用 BM25 检索 Wikipedia retriever = Retriever(method="bm25", n_docs=5, index_type="wiki") docs = [{"question": "太阳是什么?"}] results = retriever.retrieve(docs) print(results)
3. Использование функции переупорядочивания
Упорядочивание оптимизирует результаты поиска и поддерживает несколько моделей.
- перейти::
- Подготовьте первые результаты поиска.
- Инициализируйте модель переупорядочивания.
- Переоформление.
- пример кода (вычисления)::
from rankify.models.reranking import Reranking from rankify.dataset.dataset import Document, Question, Context # 准备数据 question = Question("太阳是什么?") contexts = [Context(text="太阳是恒星。", id=1), Context(text="月亮不是恒星。", id=2)] doc = Document(question=question, contexts=contexts) # 重排序 reranker = Reranking(method="monot5", model_name="monot5-base-msmarco") reranker.rank([doc]) for ctx in doc.reorder_contexts: print(ctx.text)
4. Использование функции RAG
RAG сочетает в себе поиск и генерацию для создания точных ответов.
- перейти::
- Подготовьте документацию и вопросы.
- Инициализируйте генератор.
- Генерируйте ответы.
- пример кода (вычисления)::
from rankify.generator.generator import Generator doc = Document(question=Question("法国首都是什么?"), contexts=[Context(text="法国首都是巴黎。", id=1)]) generator = Generator(method="in-context-ralm", model_name="meta-llama/Llama-3.1-8B") answers = generator.generate([doc]) print(answers) # 输出:["巴黎"]
5. оценка результатов
Встроенный инструмент оценки для проверки производительности.
- пример кода (вычисления)::
from rankify.metrics.metrics import Metrics metrics = Metrics(documents) retrieval_metrics = metrics.calculate_retrieval_metrics(ks=[1, 5, 10]) print(retrieval_metrics)
предостережение
- Пользователям GPU необходимо убедиться, что PyTorch поддерживает CUDA.
- Устройства с большим объемом памяти рекомендуются для работы с большими массивами данных.
- Более подробную информацию можно найти в официальной документации по адресу http://rankify.readthedocs.io/.
сценарий применения
- научные исследования
Исследователи могут использовать Rankify для тестирования алгоритмов поиска и переупорядочивания и анализа производительности. - Интеллектуальные вопросы и ответы (Q&A)
Разработчики могут использовать RAG для создания систем вопросов и ответов на вопросы пользователей. - Поисковая оптимизация
Функция переназначения улучшает релевантность результатов поиска и подходит для улучшения работы поисковых систем.
QA
- Какие системы поддерживает Rankify?
Поддерживаются Windows, Linux и macOS при условии, что установлен Python 3.10+. - Нужна ли мне сеть?
Основная функциональность доступна в автономном режиме, но наборы данных и некоторые модели необходимо загружать. - Поддерживает ли он китайский язык?
Поддерживается, но предварительно созданные индексы в основном на английском языке (Wikipedia и MS MARCO).
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...