はじめに
Rankifyはオーストリアのインスブルック大学のデータサイエンスグループによって開発されたオープンソースのPythonツールキットです。情報検索、並べ替え、検索拡張生成(RAG)に焦点を当て、統一されたフレームワークを提供している。このツールキットには、40の検索済みベンチマークデータセットが組み込まれており、7つの検索手法と24の並べ替えモデルをサポートしている。 ラグ Rankifyはモジュール化されており、容易に拡張可能であるため、研究者や開発者が実験やベンチマークを行うのに適している。コードはオープンで十分に文書化されており、Python 3.10以上をサポートしています。
機能一覧
- 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以上を必要とします。依存関係の衝突を避けるため、仮想環境にインストールすることをお勧めします。
- 仮想環境の構築(推奨)
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
GPUをお持ちでない場合は、CPU版をインストールしてください:
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は、Hugging Faceからダウンロードできる40の検索済みデータセットを提供している。
- 動く::
- データセットモジュールのインポート
- レトリーバーとデータセットを選択する。
- データをダウンロードまたはロードする。
- サンプルコード::
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を使って、ユーザーの質問に答えるQ&Aシステムを構築することができる。 - 検索最適化
並び替え機能は検索結果の関連性を向上させ、検索エンジンの改善に適している。
品質保証
- Rankifyはどのようなシステムをサポートしていますか?
Python3.10以上がインストールされていれば、Windows、Linux、macOSがサポートされている。 - ネットワークは必要か?
コア機能はオフラインで利用できるが、データセットと一部のモデルはダウンロードが必要。 - 中国語に対応していますか?
サポートされていますが、構築済みのインデックスは主に英語です(WikipediaとMS MARCO)。