🍣

即席RAGを使用してLLMのコンテキストの限界を超える

2024/12/17に公開

導入

こんにちは、株式会社ナレッジセンスの須藤英寿です。普段はエンジニアとして、LLMを使用したチャットのサービスを提供しており、とりわけRAGシステムの改善は日々の課題になっています。

今回は、リアルタイムRAGを使用して長大な文章から正しい解答を高速で取り出す手法MixPRについて解説します。

https://arxiv.org/pdf/2412.06078

サマリー

LLMの性能は向上を続けていますが、依然として長大なコンテキストには適切に対応できないケースが多いです。この問題に対応するためにRAGが提案されていますが、準備時間やQAタスク以外での性能に疑問が残ります。

この問題に対してMixPRはPageRankと質問をベースとした処理の最適化を組み合わせて、高速に重要なテキストを抜き出せるようになり、高速化と精度の向上に成功しています。

問題意識

高速に検証することの重要性

RAGは、関連ドキュメントさえアップロードしてしまえば、以降簡単にLLMを拡張できる有用な手法です。しかし、その反面多くのRAGの手法は精度と引き換えにデータの登録に時間を要しています。

例えば、過去5年分の議事録をもとにRAGを利用しようとすると、場合によっては1時間程度の時間を要する場合があります。(そして高いコストも)

MixPRは、このアップロードから検索までを数秒で実現することができます。

手法

MixPRは事前の準備を必要としておらず、質問とソースとなる文章すべてを入力として、質問に対する回答を高速に出力する手法です。最終的な回答は質問と関連文章をLLMに渡すことで生成していて、MixPRは質問から関連する文章を取得する部分に特徴があります。

高速で関連文章を見つけてくる手法

この手法の特徴はEmbedding処理を追加しないことにあり、これにより速度の問題を回避しつつ、その他の工夫によって精度の改善に成功しています。
詳細な説明を省きますが、以下のようなステップで関連文章を取得します。

  1. 検索対象の文章を文単位で分ける。
  2. テキストのチャンクをTF-IDFを使用してベクトルに変換(Embeddingではないため高速)
  3. Personalized PageRankを利用してグラフを作成
  4. 計算の高速化のためグラフを行列に変換
  5. LLMを用いてタスクの種類を判別し、それに合わせてノードの重要度計算方法を調整
  6. 行列で計算を行い重要度の高い情報を算出する

以上の手順で関連性の高いテキストを取得します。

成果

論文内では、MixPRの特徴を軽さ、速度そして精度としています。CPU環境で動作し、一般的なRAGを構築するよりも早く更にEmbeddingモデルを使用しないので料金も抑えられます。精度面でも、直接ないしは間接的に関連した情報を含むソースから重要な情報を抜き出す精度は既存のRAGを凌駕しており、要約タスクについてはほとんど差が見られなかったとしています。

まずは一般的なRAGとMixPRを使った手法とで、同じLLMを使用した際の精度の比較を行っています。なお、これらのタスクは様々な長さのデータと質問を基に、正解となる情報をどの程度の確率で取得できるかを表しています。別々のモデルであっても一般的なRAGと比べると精度高く取得できています。

こちらの表は、BABILongという長文の中から回答に必要となる情報を抜き出すタスクでの比較結果となっています。既存の高性能なモデル、広く利用されているLLMをそのまま利用したもの、そしてMixPRとの結果を比較しています。

ARMTという1M以上の文章から関連文章を取得するのに特化したモデルと比較すると、精度は劣るもののその前身であるRMTと比較して性能を上回っています。

ここでは、手法とRAGの構築そして取得にかかる時間の比較を行っています。Sparseなベクトルデータのみを利用する手法とかなり近しい結果で、Embeddingを必要とするRAGと比較すると大きく時間を抑えられていることがわかります。

まとめ

長文の中から、関連する情報を取得して回答する手法MixPRについて紹介しました。精度の面でより優れたモデルがありつつも、何より既存のモデルを拡張できるという点で今後も利用し続けられる可能性のある点が素晴らしい手法かなと思います。また、構築の速度が速いことから、その場ですぐに大量のファイルから関連する情報を取得する、といった方法でも利用可能です。
日本語での精度や、表記揺れへの対応、性能の高いRAG手法と比較しての性能面も気になりましたが、ぜひ試してみたいと思います。

ナレッジセンス - AI知見共有ブログ

Discussion