LESSON 30分

ストーリー

田中VPoE
クエリ変換で検索の入力を最適化した。次は検索の出力を最適化する「Reranking」だ
あなた
検索結果を並び替えるんですよね?最初の検索で順位が付いているのに、なぜもう一度並び替える必要があるんですか?
田中VPoE
ベクトル検索はBi-Encoderという方式で、クエリとドキュメントを独立にEmbedding化して類似度を計算する。これは高速だが、クエリとドキュメントの細かな関係性を捉えきれない。Rerankingで使うCross-Encoderは、クエリとドキュメントをペアとして同時に処理するので、より精密な関連度スコアが出せる
あなた
精度は上がるが、処理速度は遅くなる?
田中VPoE
その通り。だからRerankingは最初の検索でTop-20程度に絞った後に適用する。全ドキュメントにCross-Encoderを適用するのは非現実的だ

Bi-Encoder vs Cross-Encoder

比較

Bi-Encoder(ベクトル検索):
クエリ → [Encoder] → クエリベクトル
                                    → コサイン類似度 → スコア
ドキュメント → [Encoder] → ドキュメントベクトル

特徴: クエリとドキュメントを独立に処理。事前にドキュメントのベクトルを
      計算・格納可能。高速だが精度はやや劣る。

Cross-Encoder(Reranker):
[クエリ, ドキュメント] → [Encoder] → 関連度スコア

特徴: クエリとドキュメントをペアとして同時に処理。
      単語間のAttentionが効くため高精度。ただし計算コストが高い。
観点Bi-EncoderCross-Encoder
処理方式クエリとドキュメントを独立にエンコードペアとして同時にエンコード
速度非常に高速(事前計算可能)遅い(都度計算が必要)
精度中〜高非常に高
スケーラビリティ数百万〜数十億ドキュメント数十〜数百ドキュメント
用途初回検索(候補の絞り込み)Reranking(最終順位の決定)

主要なRerankerモデル

API型

モデル提供元特徴コスト
Cohere Rerank v3Cohere多言語対応、日本語サポート、API利用$2/1000検索
Jina Reranker v2Jina AI高精度、長文対応APIプラン別
Voyage RerankerVoyage AIコード検索にも強いAPIプラン別

OSS型

モデル特徴用途
cross-encoder/ms-marcoMSMARCO学習済み、英語特化英語ドキュメントのReranking
BAAI/bge-reranker-v2-m3多言語対応、日本語良好日本語を含む多言語環境
ColBERT v2トークンレベルの遅延Interaction高速かつ高精度

ColBERT

仕組み

ColBERTはBi-EncoderとCross-Encoderの中間的なアプローチです。

ColBERTの処理:

クエリ: "RAGの精度向上"
  → トークンレベルEmbedding: [v_RAG, v_の, v_精度, v_向上]

ドキュメント: "検索精度を改善するReranking手法"
  → トークンレベルEmbedding: [v_検索, v_精度, v_を, v_改善, v_する, v_Reranking, v_手法]

スコア計算:
  各クエリトークンに対して、最も類似度が高いドキュメントトークンを選択
  → MaxSim: max(sim(v_RAG, v_d)) + max(sim(v_精度, v_d)) + ...
観点ColBERTCross-Encoder
精度高(Cross-Encoderにやや劣る)非常に高
速度高速(事前計算可能)遅い
特徴トークンレベルのEmbeddingを事前計算都度ペア計算

Reranking設計のベストプラクティス

パラメータ設計

パラメータ推奨値説明
入力件数10〜20件多すぎるとレイテンシ増加、少なすぎるとRecallが低下
出力件数3〜5件LLMに渡すコンテキスト量とのバランス
スコア閾値0.2〜0.5関連度が低い結果を除外。値はモデル依存
最大ドキュメント長512〜1024トークンモデルの最大入力長を超えないように

Rerankingの効果測定

Rerankingの効果(典型例):

ベクトル検索のみ:
  Precision@5 = 0.60
  MRR = 0.65

ベクトル検索 + Reranking:
  Precision@5 = 0.85  (+42%)
  MRR = 0.88  (+35%)

→ Rerankingにより、Top-5の精度が大幅に向上

コストと精度のトレードオフ

構成レイテンシ追加コスト追加精度向上
Rerankingなし0ms0円ベースライン
Cohere Rerank API200〜500ms$2/1000検索+30〜40%
OSS Cross-Encoder(自前ホスト)300〜800msGPU費用+30〜40%
ColBERT(自前ホスト)50〜200msGPU費用+20〜30%

「Rerankingは費用対効果が最も高い最適化手法だ。RAGの精度が思ったほど出ないとき、まずRerankingを試せ。たいていの場合、劇的に改善する」 — 田中VPoE


まとめ

ポイント内容
Bi-Encoder vs Cross-Encoder速度のBi-Encoder、精度のCross-Encoder
Rerankerの選定API型(Cohere等)は運用が楽、OSS型はコスト抑制
ColBERTBi-EncoderとCross-Encoderの中間。速度と精度のバランス
効果Precision@5が30〜40%向上する典型例が多い

チェックリスト

  • Bi-EncoderとCross-Encoderの違いを理解した
  • 主要なRerankerモデルの特徴を理解した
  • ColBERTのMaxSim仕組みを理解した
  • Rerankingのパラメータ設計のベストプラクティスを理解した

次のステップへ

次は「Self-RAGとCRAG」を学びます。RAGシステム自身が検索結果の品質を自己評価し、改善する仕組みを理解しましょう。


推定読了時間: 30分