Corrective Retrieval Augmented Generation RAG論文解説
Corrective Retrieavl Augmented Generation(修正検索拡張生成) という興味を引くタイトルの論文がアーカイブにあったので、これの内容について解説します。
イントロ
簡単に内容を紹介します。
Corrective Retrieval Augmented Generation(以下、cRAG)は、RAGにおいて誤った検索が行われた際に生成がうまく行かない問題を解決するための方法になります。
RAGにおいて誤った検索が行われるケースはどうしても発生してしまうものですが、その時にRAGの強みでもある「検索に基づいた生成」が想定外に悪く働いてしまいます。なので検索が誤るケースに対応することはRAGアプリケーションにおいて非常に重要な要素です。
このcRAGを用いれば、誤った検索に対応することができるということのようです。RAGにおいて誤った検索に頭を悩ませている人には非常に有効な手法になり得ますので、実際の手法について見ていきましょう
手法詳細の説明
手法をざっくり紹介した方がわかりやすそうなので、簡単に紹介します。手法の詳細について知りたい方は元論文の方を参照してください。
以下論文中での図です。
cRAGではまずシンプルなRAGと同様に、クエリを用いたドキュメント検索を行います。
ドキュメント検索を行った結果には、正しい検索結果、つまり回答に使いたい検索結果と、誤った検索結果が含まれることになります。
cRAGの要点としては、特別に学習させた言語モデルを用いて、それぞれの検索結果に対して「正しい」、「誤っている」、「わからない」というラベルをつける点です。それぞれのラベルに応じて、その後の異なった処理フローを行なって解答にもちいる知識(knowledge)を作成します。
ラベルに応じた処理フローについてざっくり説明します。
検索結果が正しいと判断された場合
この場合は、基本的に通常のRAGのように処理して良いと思います。論文内では、検索されたドキュメントを分解、再構築を行うことで、回答生成に必要な部分のみを抽出するステップを踏みます。
ドキュメントの分解は、チャンキングのようなイメージで行うと良いです。つまり、ドキュメントを文単位で分解しそれを12,23,34,のようにオーバーラップさせていき分解するということです。このようにすることで連続する文の間で意味合いが繋がっているケースなどにも対応することができます。
このように分解したドキュメントを、それぞれ個別に評価して、回答に有用な情報のみを知識として再構築します。
このドキュメントの分解、再構築の狙いは不必要な情報がコンテキストに入ることを防ぐことです。これはコンテキスト長を短くすることができ、また誤生成を減らすことにもつながります。
検索結果が誤っていると判断された場合
検索結果が誤っている場合にはweb検索を用いて、知識の取得を行います。通常のRAGの代わりにweb検索APIにクエリを投げて検索結果を知識として活用します。
実際のRAGアプリケーションでweb検索を活用するケースは多くなさそうなので、この内容についてはここであまり深く触れません。詳細が知りたい方は論文内を確認してください。
重要な部分は、ドキュメント検索結果が誤っていると判断された場合には、その内容を解答に用いないという点です。そうすることにより、誤った回答を防ぎます。
検索結果がわからないと判断された場合
ドキュメント検索結果の正誤判断がつかない場合には、上二つの結果を融合させて回答生成を行います。融合のさせ方についても要点ではなさそうなので、ここでは省きます。
論文内の実験について
PopQA,Biography,PubHealthといったデータセットが検証に用いられていました。
言語モデルはLLama7bです。
通常のRAGと比べて10%程度の精度改善が確認されていました。
またSelf-RAGを併せてcRAGを使うことで、大幅な精度改善が期待される結果となっていました。
終わりに
今回はcRAGという手法について紹介しました。
検索結果が正しいかどうかを言語モデルで判定するという内容は、非常に実用的だと思います。実アプリケーションでは判定するための言語モデルを必ずしも特別学習させる必要はなく、gpt-4などの強力なモデルでも代用可能だと思います。まずはそのようにスモールスタートするのが筋が良いと思います。
また検索結果を分解、再構築するという方法も大いに活用できます。RAGではいかに不要な知識をコンテキストに含めないかが重要になります。埋め込みモデルを用いた検索だけでは、検索精度に不満があるというケースではドキュメントの分解、再構築することを検討してみてください。
参考になると思ったり、いいねお願いします!
今後もRAGに関する文献紹介をしていこうと思います。
Discussion