AIパーソナル・ラーニング
と実践的なガイダンス
豆包Marscode1

Rankify: 情報検索と並び替えをサポートするPythonツールキット

はじめに

Rankifyはオーストリアのインスブルック大学のデータサイエンスグループによって開発されたオープンソースのPythonツールキットです。情報検索、並べ替え、検索拡張生成(RAG)に焦点を当て、統一されたフレームワークを提供している。このツールキットには、40の検索済みベンチマークデータセットが組み込まれており、7つの検索手法と24の並べ替えモデルをサポートしている。 ラグ Rankifyはモジュール化されており、容易に拡張可能であるため、研究者や開発者が実験やベンチマークを行うのに適している。コードはオープンで十分に文書化されており、Python 3.10以上をサポートしています。

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


 

機能一覧

  • BM25、DPR、ColBERT、ANCE、BGE、Contriever、HYDEを含む7つの検索技術が利用できる。
  • MonoT5、RankGPT、Sentenceなど、24の並べ替えモデルがサポートされている。 変圧器 など、検索結果の精度を向上させる。
  • GPT、LLaMA、T5、およびその他のモデル生成応答をサポートする統合検索拡張ジェネレーション(RAG)。
  • Q&A、対話、エンティティリンク、その他のシナリオをカバーする40の事前検索データセットを内蔵。
  • Top-K、EM、Recallなど、検索、並べ替え、結果生成の評価指標を計算する評価ツールを提供します。
  • 事前に構築されたインデックス(WikipediaやMS MARCOなど)をサポートしているため、独自のインデックスを構築する必要がありません。
  • データセット、リトリーバー、モデルをカスタマイズできるモジュール構造。

 

ヘルプの使用

Rankifyのインストールと使用方法は簡単です。以下は、すぐに始められるよう、詳しい手順と説明です。

設置プロセス

RankifyはPython3.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

GPUをお持ちでない場合は、CPU版をインストールしてください:

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は、Hugging Faceからダウンロードできる40の検索済みデータセットを提供している。

  • 動く::
  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を使って、ユーザーの質問に答えるQ&Aシステムを構築することができる。
  3. 検索最適化
    並び替え機能は検索結果の関連性を向上させ、検索エンジンの改善に適している。

 

品質保証

  1. Rankifyはどのようなシステムをサポートしていますか?
    Python3.10以上がインストールされていれば、Windows、Linux、macOSがサポートされている。
  2. ネットワークは必要か?
    コア機能はオフラインで利用できるが、データセットと一部のモデルはダウンロードが必要。
  3. 中国語に対応していますか?
    サポートされていますが、構築済みのインデックスは主に英語です(WikipediaとMS MARCO)。
無断転載を禁じます:チーフAIシェアリングサークル " Rankify: 情報検索と並び替えをサポートするPythonツールキット
ja日本語