💡

RAGの「文脈が消える問題」を解決する「LongRAG」

2024/10/29に公開

株式会社ナレッジセンスは、エンタープライズ企業向けにRAGを提供しているスタートアップです。本記事では、RAGの性能を高めるための「LongRAG」という手法について、ざっくり理解します。

この記事は何

この記事は、RAGの文脈消える問題を克服する新手法「LongRAG」の論文[1]について、日本語で簡単にまとめたものです。
https://arxiv.org/abs/2410.18050

今回も「そもそもRAGとは?」については、知っている前提で進みます。確認する場合は以下の記事もご参考下さい。
https://zenn.dev/knowledgesense/articles/47de9ead8029ba

本題

ざっくりサマリー

RAGの「文脈消える問題」を解決する新手法「LongRAG」

LongRAGは、「文書全体を読まないと正答できない」ようなタイプの質問に対しても、RAGの精度を上げるための新しい手法です。中国科学院・清華大学の研究者らによって2024年10月に提案されました。

ざっくり言うと、LongRAGとは、「階層化」+「フィルタリング」です。 2つとも、よく知られたRAGの手法ですが、これらを組み合わせることで、RAGの課題を克服します。

もう少し詳しく説明します。通常のRAGの問題点は、前後の文脈が失われたり[2]、重要な情報を見落としたり[3]することです。これが起きる理由は、RAGが、長文をチャンク(断片)に分割して処理するためです。

そこで、LongRAGは、チャンク単体だけでなく、①チャンクの前後文脈の活用、②関係ないチャンクの排除という2つの手段を使って、この課題を解決します。

問題意識

大規模言語モデル(LLM)は便利ですが、欠点もあります。(例えば全てのLLMには、入力上限があります。)RAGは、そうした欠点を補えますが、それでも従来のRAGだと、限界があります。
RAGの「文脈消える問題」を解決する新手法「LongRAG」

従来のRAGの限界として、以下があります。

  • チャンキング(文書の分割)によって前後の文脈が失われる
  • 飛び地にある重要情報をとってこられない
  • では、関連ファイルを大量にLLMに渡せばいいか?と言うと、そうではなく。関係ない情報を多くLLMに渡すと、幻覚を起こす可能性がある

手法

LongRAGは複数の手法の組み合わせなので、少し複雑です。

RAGの「文脈消える問題」を解決する新手法「LongRAG」

【ユーザーが質問を入力して来たとき】

  1. ベクトル検索+リランキング
    • 普通のベクトル検索で、数チャンク取得
    • cross-encoderモデルを使って、その数チャンクをリランキング[4]
  2. チャンクが書かれていた段落を特定 (画像の中央下段)
    • 1のチャンクそれぞれが所属していた段落を、元文書から取得
    • その段落とユーザーの質問を、小さいLLMに渡し、関連情報を抽出させる
  3. CoTで必要情報を洗い出し、フィルタリング (画像の中央上段)
    • 小さいLLMに、Chain-of-Thoughtさせ、ユーザーの質問の解決に必要なステップを作成
    • 小さいLLMに、全チャンクを渡す。各チャンクの重要性を判定
    • 必要なチャンクのみ次のステップに進む
  4. 最終回答の生成
    • 2,3の情報を合わせて、最終的な回答を生成
    • 大きいLLM(GPT-3.5など)を使う

LongRAGのキモは、検索後の後処理です。RAGの手法は色々ありますが、検索時の処理を頑張る手法と、検索されたものを頑張って処理する手法、大きく2つに分けられます。検索前を頑張る手法は、これまでも多く紹介しました。今回の手法は、「検索されたものを以下に料理するか」というところに力点があります。これの重要なポイントは、「検索時に頑張る手法」と組み合わせると、さらに精度改善の可能性があるという点です。

ただしこの手法、回答生成にかかる時間が、かなり遅いです。。。

成果

RAGの「文脈消える問題」を解決する新手法「LongRAG」

  • 普通のLLMを使った場合と比較して6.94%の性能向上
  • Advanced RAG(Self-RAG[5]やCRAG[6]など)を使った場合と比較して6.16%の性能向上
  • 通常のRAG (Vanilla RAG)と比較して17.25%の性能向上
  • 小規模なローカルLLMでも、GPT-3.5-Turboに匹敵する性能を実現

まとめ

RAGのよくある課題をまるっと解決する、素晴らしい手法だと感じました。「よくある問題」を、個別に解決しようとする手法はありましたが、こうして最小限のパートだけ組み合わせて、調和させることで精度向上しています。回答が遅いという問題は残りますが。。。

実際、普段エンタープライズ向けにRAGを提供していると、「遅くてもいいからより正確な回答が欲しい」というシチュエーションは結構あります。まだまだRAGは完璧ではないので、だからこそ、精度・速度・その他のニーズのようなトレードオフを、いかにバランスさせるかが重要です。

みなさまが業務でRAGシステムを構築する際も、選択肢として参考にしていただければ幸いです。今後も、RAGの回答精度を上げるような工夫や研究について、記事にしていこうと思います。我々が開発しているサービスはこちら

脚注
  1. "LongRAG: A Dual-Perspective Retrieval-Augmented Generation Paradigm for Long-Context Question Answering", Zhao et al. ↩︎

  2. この課題については、こちらの記事を参考のこと ↩︎

  3. この課題については、こちらの記事を参考のこと ↩︎

  4. リランキングとは?→こちらの記事参考 ↩︎

  5. https://zenn.dev/knowledgesense/articles/67dd2a41fc4d0b ↩︎

  6. https://zenn.dev/knowledgesense/articles/bb5e15abb3c547 ↩︎

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

Discussion