AI検索の並び替え精度を向上
Design a High-Precision Retrieve-and-Rerank Pipeline with ZeroEntropy Zerank-2 Reranker

新しいAI「Zerank-2」を使うことで、AIが情報を探す際の並び替え精度が向上し、金融や法律など多様な分野でより正確な検索結果が得られるようになります。
このチュートリアルでは、zeroentropy/zerank-2-rerankerという40億パラメータのQwen3ベースのクロスエンコーダ・リランカー(並び替えAI)を使って、検索の質を向上させます。我々はまず、実行環境をセットアップし、このリランカーを読み込み、それが質問と文書のペアをどのように評価するかを理解することから始めます。次に、単純なペアごとの評価から、実用的な二段階の「検索と並び替え」パイプラインへと進みます。このパイプラインでは、高速なbi-encoder(二方向エンコーダ)が最初に候補を検索し、zerank-2がそれらを並び替えることで、より高い精度を実現します。また、NDCG@10を用いてその影響を評価し、金融、法律、コードの例でこのリランカーをテストして、現実世界の検索およびランキングタスクにおけるその性能を評価します。Copy Code Copied Use a different Browser
!pip -q install -U "sentence-transformers>=3.0" "transformers>=4.51.0" accelerate
import os, time, numpy as np, torch
from sentence_transformers import CrossEncoder, SentenceTransformer, util
os.environ["TOKENIZERS_PARALLELISM"] = "false"
if torch.cuda.is_available():
device = "cuda"
dtype = torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16
print(f"GPU: {torch.cuda.get_device_name(0)} | dtype: {dtype}")
else:
device, dtype = "cpu", torch.float32
print("WARNING: no GPU detected. This 4B model will be very slow on CPU.")
RERANKER_ID = "zeroentropy/zerank-2-reranker"
print(f"\nLoading {RERANKER_ID} (~8GB on first run)...")
reranker = CrossEncoder(
RERANKER_ID, model_kwargs={"torch_dtype": dtype}, device=device,
)
print("Reranker loaded.")
def to_prob(logits):
return (torch.as_tensor(logits, dtype=torch.float32) / 5).sigmoid()
まず、必要なライブラリをインストールし、リランキング(並び替え)と検索に必要な主要ツールをインポートします。GPUが利用可能かを確認し、効率的なモデル実行のために適切なデバイスとテンソル精度を選択します。次に、zeroentropy/zerank-2-rerankerモデルを読み込み、生のロジット(モデルの出力値)を確率形式のスコアに変換するヘルパー関数を定義します。Copy Code Copied Use a different Browser
print("\n" + "="*70 + "\nPART 1: Pairwise scoring\n" + "="*70)
pairs = [
("What is 2+2?","