グループ比較を利用したRAGのリランク手法
導入
こんにちは、株式会社ナレッジセンスの須藤英寿です。
今回は、ドキュメントをグループに分けてリランクを行う「GroupRank」という手法について紹介します。

サマリー
RAGの重要な構成要素の一つがリランクです。ベクトル検索して取得したドキュメントをユーザーのクエリとの関連性で並び替え、関連性のより高いドキュメントのみをLLMに渡し、回答を生成できます。リランクの精度が、RAGの性能に直結するとも言えます。
リランクには大きく分けて2種類の方法があり、個別に関連度を点数化する手法と、全てのドキュメントをまとめて比較する手法があります。しかし、前者は精度面で、後者は速度とドキュメント数の上限の問題を抱えています。「GroupRank」では、2種類のリランク手法のいいとこ取りをすることで、高速に精度の高いリランクを可能にしました。
課題意識
リランクの精度と時間
リランクは、ユーザーのクエリと検索結果のドキュメントを比較して、クエリにより合致しているドキュメントを探す手法です。一般的なリランク手法は大きく分けて2種類で、ドキュメントごとの類似度スコアを算出する方法(Pointwise)と、全てのドキュメントを入力してよりクエリの内容に合致しているドキュメントを算出する方法(Listwise)があります。
これらの手法にはそれぞれ弱点があり、Pointwiseな手法は並列に比較が可能で非常に高速ですが、文書間の相対的な評価が抜け落ち、精度が下がる問題があります。Listwiseな手法は、全体を見た比較をするため精度が高いですが、入力長の制限で比較できるドキュメントサイズに制約があったり、結果の出力が遅い問題があります。
手法
学習方法

GroupRankは教師あり学習と、強化学習を組み合わせて学習します。
教師あり学習で、スコアのフォーマットを学習します。
強化学習では、あらかじめ用意しておいたクエリ+ドキュメントとそのスコアのセットを利用して、LLMの出力するスコアを最大化するように学習します。
スコアの計算方法

GroupRankにはいくつかの派生形がありますが、一番基本的な手順は以下のようになります。
- ユーザーのクエリと並び替えたいドキュメントの一覧を入力として受け取る
- ドキュメントを任意の個数ごとにグループに分解(目安は20ドキュメントずつ程度)
- 学習したLLMを利用して、グループ内のドキュメントごとにスコアを算出
- 全てのドキュメントのスコアを比べて、関連度の高いドキュメントを選択
評価

各種ベンチマークで、既存のリランク手法との精度の比較を行っています。既存の手法と比べて平均して、4%ほどの精度の改善が見られます。

続いてGroupRankの細かい手法別の精度です。ドキュメント同士の比較で、表の上側は同じドキュメントを別のグループに含めず、一度だけスコアを算出する手法。下側は、同じドキュメントを複数のグループに含める手法で、Nはその比較を合計何回行ったかを示しています。
同じドキュメントを別の比較対象と比較し、それを複数回繰り返すことで精度が上がることがわかります。
まとめ
今回は、リランクを高速にかつ、高い精度で実現する手法GroupRankについて紹介しました。並列に実行が可能なので、待ち時間も少なく済み、ドキュメントが増えすぎて比較できなくなってしまう問題を抑え込める良い手法です。Rerankですでにドキュメントをまとめて比較するListwiseな手法を採用していれば、採用できる手法なので、リランクに使えるドキュメントの数や回答がでてくるまでのスピードに課題がある方はぜひ参考にしていただければと思います。
Discussion