RAGの「ベクトル検索」の弱みを、ナレッジグラフで補う
株式会社ナレッジセンスは、生成AIやRAGを使ったプロダクトを、エンタープライズ向けに開発提供しているスタートアップです。本記事では、RAGの性能を高めるための「HybridRAG」という手法について、ざっくり理解します。
この記事は何
この記事は、RAGシステムを専門用語に強くするための手法「HybridRAG」の論文[1]について、日本語で簡単にまとめたものです。
今回も「そもそもRAGとは?」については、知っている前提で進みます。確認する場合は以下の記事もご参考下さい。
本題
ざっくりサマリー
HybridRAGは、通常のRAG(Retrieval Augmented Generation)で用いられる「ベクトル検索」の弱みを補い、回答精度を向上するための手法です。BlackRockとNVIDIAの研究者らによって2024年8月に提案されました。
ベクトル検索の弱みはいくつかあります。例えば、専門用語に弱いこと、前後の文脈を理解したうえでの回答に弱いことです。
HybridRAGは、ベクトル検索(VectorRAG)と、ナレッジグラフを用いた検索(GraphRAG)を両方用いる手法です。そうすることで、お互いの検索手法の弱みを補い、より精度の高い回答が実現できます。
問題意識
RAGは便利ですが、従来のベクトル検索のみを使ったRAGでは、専門用語に弱かったり、前後の文脈を捉えきれなかったりなど弱みがあります。(専門用語に弱い話は、以前も紹介しました)
「前後の文脈に弱い」とはどういうことかというと、ベクトル検索では通常、文書全体の「一部のみ」(例: 200文字など)をLLMに渡して、回答作成させます。なので、文書の広い範囲を読んで回答する必要がある質問(例: 財務諸表のように、上から下まで読んで、回答する必要がある質問など)に、正しく回答できません。
GraphRAGは、このようなベクトル検索の弱みを克服するアプローチとして、最近注目されています。とはいえ、GraphRAG単体だと、それはそれで弱みがあるというのが、これまでの課題でした。
手法
HybridRAGは、VectorRAGとGraphRAGの両方を使って文書を検索し、それらの結果を組み合わせて回答生成する手法です。非常にシンプルです。
【事前にやっておくこと】
- RAGに使いたい文書(論文内では決算資料)について、テキスト抽出
- 抽出されたテキストを、チャンクに分割しベクトル化(VectorRAG用)
- 文書からナレッジグラフを構築(GraphRAG用)
【ユーザーが質問を入力して来たとき】
- VectorRAGで関連する文書チャンクを検索
- GraphRAGで関連する知識グラフのサブグラフを検索
- 1と2の結果を統合してGPT-3.5に渡し、回答を生成させる
HybridRAGという手法は、構造自体は本当にシンプルです。すでにベクトル検索型のRAGを構築済の場合でも、そこに追加する形で実装できるので、その点も嬉しいポイントです。
成果
- 忠実性(Faithfulness):0.96(VectorRAG: 0.94, GraphRAG: 0.96)
- 回答関連性(Answer Relevancy):0.96(VectorRAG: 0.91, GraphRAG: 0.89)
- コンテキスト再現率(Context Recall):1.00(VectorRAG: 1.00, GraphRAG: 0.85)
(※「コンテキスト精度(CP)」については、従来手法よりも低い。両方手法の検索結果を、全てコンテキストに詰め込むので、当然ではあるのですが...)
以下の成果が重要です。
- 金融業界「ならでは」な用語・複雑な質問でも正確に回答可能
- 抽出型質問(ベクトル検索の弱み)と抽象型質問(GraphRAGの弱み)の両方に対して高い性能を発揮
まとめ
弊社では、法人向けにRAGシステムを提供しているので、「RAGで決算書類を読んで欲しい。10年分まとてほしい。」という要望をいただくことが(本当に)よくあります。こういう要望に対して、従来のベクトル検索型のRAGだと対応しきれません。(専門用語・構造・時系列比較など、従来のRAGだと苦手そうな理由が、すぐにたくさん思い浮かびます...)
こうしたニーズから、最近は「GraphRAG」というアプローチが人気なのですが、一方で「これ単体だと実用に耐えないな」という感覚がありました。HybridRAGは、この課題に対する、非常にシンプルなアプローチです。かなりシンプルなので、今後も派生したアプローチが多くでてきそうに感じます。
みなさまが業務でRAGシステムを構築する際も、選択肢として参考にしていただければ幸いです。今後も、RAGの回答精度を上げるような工夫や研究について、記事にしていこうと思います。我々が開発しているサービスはこちら。
Discussion