🗒️

RAGシステムを曖昧な検索に強くするアプローチ「MemoRAG」という考え方

2024/09/10に公開

MemoRAGは、従来の検索拡張生成(RAG)の弱点を改善する新しいアプローチです。
グローバルな記憶を形成するLLMと、最終回答を生成する高機能なLLMの二重システムを採用しています。これにより、曖昧な検索や非構造化知識を含む複雑なタスクにも対応できます。
MemoRAGは、単純な質問応答から複雑な課題まで幅広いタスクで優れた性能を発揮し、RAGの適用範囲を大幅に拡大した新しい手法です。[1]

https://arxiv.org/abs/2409.05591

課題

従来の検索拡張生成(RAG)では、明確に提示された情報ニーズと、整理された形式の知識を必要とするため、その応用は、主に単純な質問応答タスクに限定されているとされています。
しかし現実の世界では、情報ニーズが曖昧で、外部知識が非構造化である場合も少なくありません。
例えば、本の読者が登場人物たちの相互関係を理解したい場合、システムはまず登場人物の名前を特定し、その名前が共起する箇所を探し出して、そこから相互関係を推論する必要があります。
このように、従来のRAGシステムは、複雑な情報ニーズに対応するのが難しいという課題があります。

サマリー

上記の図は、ハリー・ポッターの本をナレッジデータベースとして使用し、データベース全体にわたる高度な理解を要求するクエリを処理する際の標準 RAG と MemoRAG の比較です。
左の図では、入力クエリの暗黙的な性質により、標準 RAG は必要な証拠を正確に見つけるのに苦労し、結果として精度の低い回答を導き出しています。右の図では、MemoRAG はデータベース全体にわたってグローバル メモリを構築しています。クエリが提示されると、MemoRAG はまず関連する手がかりを思い出し、有用な情報を取得できるようにして、正確で包括的な回答を導き出しています。

MemoRAGは従来のRAGを改善しています。

  1. 曖昧な情報ニーズへの対応:
    グローバルメモリを構築することで、非構造化データや複雑なタスクを効果的に処理。暗黙的なクエリを理解し、より具体的な回答のヒントを生成できる。

  2. 分散型エビデンスを用いた情報検索:
    複数のソースやデータベースに分散した情報を統合。グローバルメモリ機能を通じて、マルチホップクエリの複雑さを管理し、必要な情報を効率的に取得・統合できる。

  3. 情報集約:
    大量の非構造化データを簡潔で一貫性のある出力に凝縮。グローバルメモリを使用してデータセット全体から重要なポイントを捕捉・合成し、高度な要約を生成できる。

結果

この表は、生成モデルとしてMistral-7B-Instruct-v0.2-32Kを使用したUltraDomainベンチマークにおける主要な実験結果を示しています。
MemoRAGがすべてのデータセットとタスクタイプで他のRAGシステムよりも優れていることを示しています。これは、MemoRAGが、従来のRAGシステムでは困難であった長いコンテキストと高レベルな質問を処理するギャップを効果的に埋めることができるためです。

demo


[2]

streamlit run demo/demo.py

このデモでは、MemoRAGの動作を確認できます。

  • グローバルメモリ:
    単一のコンテキストで100万トークンまで処理可能で、膨大なデータセット全体にわたる包括的な理解を提供します。

  • 最適化可能かつ柔軟:
    新しいタスクに容易に適応し、わずか数時間の追加トレーニングで最適化されたパフォーマンスを達成します。

  • 文脈的ヒント:
    グローバルメモリから精密なヒントを生成し、生の入力と回答の橋渡しをするとともに、複雑なデータから隠れたインサイトを引き出します。

  • 効率的なキャッシング:
    コンテキストの事前入力を最大30倍高速化し、チャンキング、インデックス作成、エンコーディングのキャッシングをサポートします。

  • コンテキストの再利用:
    長いコンテキストを一度エンコードし、繰り返しの使用をサポートすることで、繰り返しのデータアクセスを必要とするタスクの効率を向上させます。

まとめ

RAGシステムは急速に進化しており、MemoRAGのような新たなアプローチが次々と発表されています。
従来の課題であった「ユーザーの質問とは違う検索結果を使用してしまう」といった「曖昧な情報検索」の課題を改善しています。

RAGの開発者としては、さまざまな課題を解決するための手段を日々模索しています。
「ユーザーの問い合わせについて思ったような回答が得られない」
そういったことが発生するということを前提として考慮しシステムを改善していくことが重要です。

もし、RAGシステムを開発する場合は、今回の新しい手法を一つの選択肢として考えてみてはいかがでしょうか。

脚注
  1. https://arxiv.org/abs/2409.05591 ↩︎

  2. https://github.com/qhjqhj00/MemoRAG ↩︎

株式会社マインディア テックブログ

Discussion