🦛

RAGで人間の脳を再現。「HippoRAG」を理解する

2024/06/12に公開

はじめまして。ナレッジセンスの門脇です。生成AIやRAGシステムを活用したサービスを開発しています。本記事では、RAGの性能を高める手法である「HippoRAG」について、ざっくり理解します。

RAGで人間の脳を再現。「HippoRAG」を理解する

この記事は何

この記事は、RAGの新手法として最近注目されている「HippoRAG」の論文[1]について、日本語で簡単にまとめたものです。
https://arxiv.org/abs/2405.14831

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

本題

ざっくりサマリー

HippoRAGは、RAGの性能を高めるための新しい手法です。オハイオ州立大学の研究者らによって2024年5月に提案されました。HippoRAGを使うメリットは、複数の知識を組み合わせて回答する必要があるような、複雑な質問に強くなることです。HippoRAGが従来のRAGに比べて、複雑な質問に強い理由は、ナレッジグラフと、それを継続的にメンテナンスする仕組みを組み合わせることで、「人間の脳の長期記憶の仕組み」に近いことをやっているからです。

問題意識

大規模言語モデル(LLM)は便利ですが、独自データに基づいて回答することはできません。これを克服するための手法としてRAG(Retrieval-Augmented Generation)が注目されていますが、RAGにも限界があります。

RAGの具体的な限界としては、「回答のために複数の知識を必要とするような質問」への回答精度です。例えば「スタンフォード大でアルツハイマーの研究をしている教授は?」という質問を考えます。

こちらに対する回答が「そのまま」載っているようなドキュメントがあれば、通常のRAGでも回答可能です。しかし、「スタンフォード大の教授一覧」と「教授の研究分野一覧」が別々のドキュメントとして存在していた場合、通常のRAGでは回答できないことがあります。

RAG 限界 HippoRAG

手法

HippoRAGが従来のRAGと大きく違う点は、ベクトルデータベースやコサイン類似度による検索を用いない点です。これはかなり大きい特徴です。HippoRAGのポイントは、ナレッジグラフを活用した(ベクトルDBを使わない)RAGである点・ナレッジグラフを賢く更新する点です。
(※ナレッジグラフについては、簡単ですが以前こちらのブログでも紹介しました。今回は説明を省略します。)

RAGで人間の脳を再現。「HippoRAG」を理解する

【事前にやっておくこと】

  1. アップロードされた独自のドキュメントについて、LLMを使って重要語句を抽出
  2. 重要語句を元に、OpenIEでトリプル(主語-述語-目的語のセット)を作成
  3. トリプルをナレッジグラフに追加
  4. ナレッジグラフ内に同じ意味の単語が複数あれば賢く検出、関連付ける
    例えば、"USA"と"米国"みたいなノードがあれば、ナレッジグラフ内でここにパスを作る

(※ここまでが、上の画像の中段「Offline Indexing」の説明です。)

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

  1. ユーザーの質問から重要語句を抽出
  2. ナレッジグラフの中から、この重要語句に最も近い意味のノードを検索
    (これを「クエリノード」と呼ぶ)
  3. 「クエリノード」を起点として、ナレッジグラフを探索
    (Personalized PageRank(PPR)アルゴリズムを利用)
  4. 3で得られた各ノードの重要度(確率)を利用して、各ノードが所属していた元文書のチャンクをランキング
  5. ランキングの高いチャンクをLLMに渡し、回答を生成させる

人間の長期記憶では、大脳新皮質が情報を処理し、海馬で関連性をインデックスしていると言われています。HippoRAGでは、この仕組みを模倣するシステムを、LLMとナレッジグラフを組み合わせることで実現しています。

成果


HippoRAGでは、以下ような性能向上が報告されています。

  • 「複数の知識を活用して回答する必要がある」ような、マルチホップなタスク(MuSiQueとWikiHopQAなど)において、通常のRAGよりも高い性能
  • IRCoT(=答えにたどり着くまで何度か検索を繰り返す手法)と同等以上の性能。しかも、検索コストは10〜30分の1、検索時間は6〜13分の1で済んでいる
  • IRCoTとHippoRAGを組み合わせることで、さらに4〜20%の性能向上

まとめ

HippoRAGは、RAGのテクニックの中でもかなり応用的だとは思います。とはいえ、「人間の脳の仕組みを再現することでRAGの精度を上げる」というコンセプト自体が面白すぎますし、可能性を感じます。

また個人的にも普段の業務にて、大企業の方にRAGの説明をする際、人間に例えて説明をしています。RAGの裏側のアーキテクチャがさらに人間(というか脳)に近づくことで、一般ユーザーにとってもRAGが分かりやすくなり、使いこなせるようになると、それもまた嬉しいことです。

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

脚注
  1. "HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models", Bernal Jiménez Gutiérrez et al. ↩︎

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

Discussion