今回は、RAGの精度向上に役立つ、LLMを活用したrerank手法について紹介します。
最近読んだある記事がとても参考になりました。その記事はRAGをテーマにしたコンペの振り返り記事で、筆者が優勝した際のRetrieval戦略が詳しく解説されています。
Retrievalの最適化自体は特に斬新な方法ではなく、よく知られた手法(例えば、Parent Chunkを使った手法など)が中心でした。ただ一つ、とても興味深かったのが「通常のrerankモデルを使うよりも、LLMを用いたrerankの方が精度が高い」という筆者の発見です。
1. Rerankモデルについて
一般的なrerankモデルの仕組みは、最初の検索結果に対して質問と各候補テキストの関連性を再評価し、スコアを付け直すことで、より正確な順位に並べ替えるというものです。多くの場合、Transformerベースのcross-encoderモデル(例: BERTやDeBERTa)が使われ、質問と各テキストを同時に入力して関連性を数値化します。
rerankについて以前詳しく解説した記事ありますので、興味ある方:
2. LLMを活用したRerankの詳細
一方で、LLMを使ったrerankでは、こうしたアルゴリズム的な手法を採らず、完全にLLMの判断に任せてしまいます。
具体的な手順は以下のような流れです。
-
Vector検索で得られた複数のchunkと質問を一緒にLLMに渡します。
-
LLMに各chunkの関連性を評価してもらいます。例えば、0〜10の10段階評価といった基準でスコアリングします。イメージは以下のようなプロンプト

-
LLMが出したスコアと元のVector検索スコアを一定比率で組み合わせ、最終的な順位を再計算します。特にLLMのスコアに高めの比重を与えることで、精度向上を図ります。
LLMによるrerank処理は特に高性能なモデルを使う必要はありません。関連性を評価して順位付けするだけの作業ですので、GPT-4o-miniのような安価で高速なモデルでも十分に実用レベルの結果が得られます。
3. Hybrid Searchの課題点について
また記事では、Hybrid Searchについても触れており、「Hybrid Searchはむしろ純粋なVector Searchよりも精度が落ちる場合が多い」と指摘しています。私も同様の傾向を感じており共感します。原因は多くの場合質問に含まれるキーワードがノイズとなり、回答に本質的に重要でないキーワードが多数含まれているからです。Hybrid Searchを使うなら、LLMを使った質問のRewriteでノイズを除去し、キーワード密度を高める工夫が必要ですが、それなら最初から純粋なVector Searchを使った方が高速で、しかも結果への影響もそれほど大きくないことが多いです。
LLMを用いたrerankの具体的なprompt例は下記記事に紹介されていますので、興味ある方は参考にしてみてください⇩
