Rankify: инструментарий на языке Python, поддерживающий поиск и упорядочивание информации

Общее введение

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

Rankify:支持信息检索与重排序的Python工具包

 

Список функций

  • Доступны семь методов извлечения, включая 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 или выше. Рекомендуется устанавливать его в виртуальной среде, чтобы избежать конфликтов зависимостей.

  1. Создание виртуальной среды (рекомендуется)
    Создайте среду с помощью 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
  1. Установите 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
  1. Установка фундамента
    Установите основной функционал Rankify:
pip install rankify
  1. Полная установка (рекомендуется)
    Установите все функции:
pip install "rankify[all]"
  1. Установка по требованию (опционально)
    Установлена только функция поиска:
pip install "rankify[retriever]"

Установлена только функция переупорядочивания:

pip install "rankify[reranking]"
  1. Установите последнюю версию с GitHub (необязательно)
    Получите версию для разработки:
git clone https://github.com/DataScienceUIBK/Rankify.git
cd Rankify
pip install -e ".[all]"
  1. Установка 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.

  • перейти::
  1. Модуль импорта наборов данных.
  2. Выберите ретривер и набор данных.
  3. Загрузите или загрузите данные.
  • пример кода (вычисления)::
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 и др.

  • перейти::
    1. Инициализируйте ретривер.
    2. Введите документ или вопрос.
    3. Получите результаты поиска.
  • пример кода (вычисления)::
    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. Использование функции переупорядочивания

Упорядочивание оптимизирует результаты поиска и поддерживает несколько моделей.

  • перейти::
    1. Подготовьте первые результаты поиска.
    2. Инициализируйте модель переупорядочивания.
    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 сочетает в себе поиск и генерацию для создания точных ответов.

  • перейти::
    1. Подготовьте документацию и вопросы.
    2. Инициализируйте генератор.
    3. Генерируйте ответы.
  • пример кода (вычисления)::
    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/.

 

сценарий применения

  1. научные исследования
    Исследователи могут использовать Rankify для тестирования алгоритмов поиска и переупорядочивания и анализа производительности.
  2. Интеллектуальные вопросы и ответы (Q&A)
    Разработчики могут использовать RAG для создания систем вопросов и ответов на вопросы пользователей.
  3. Поисковая оптимизация
    Функция переназначения улучшает релевантность результатов поиска и подходит для улучшения работы поисковых систем.

 

QA

  1. Какие системы поддерживает Rankify?
    Поддерживаются Windows, Linux и macOS при условии, что установлен Python 3.10+.
  2. Нужна ли мне сеть?
    Основная функциональность доступна в автономном режиме, но наборы данных и некоторые модели необходимо загружать.
  3. Поддерживает ли он китайский язык?
    Поддерживается, но предварительно созданные индексы в основном на английском языке (Wikipedia и MS MARCO).
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...