FastGraphRAGの何がうれしいのか?
↓FastGraphRAGのGitHubリンク
"Fast"の名前の通り、従来のGraphRAGより高速らしいです。なぜ高速なのかまとめてみます。従来のGraphRAGの課題
従来のGraphRAGは、ナレッジグラフに対して、Leiden法やLouvain法を使ってクラスタリングさせることで、関連性の高いノード群を作成できます。
これによって関連性の高い情報をマルチホップに取得できたり、検索範囲を限定できることがメリットなのですが、このクラスタリングのコストが大きいことが課題になります。
クラスタリングはコストが高い
クラスタリングの構築自体の計算もコストが高いうえ、局所的な更新が難しいです。
なので、そこその規模で頻繁なデータ追加・更新がある場合、再クラスタリングがボトルネックになって、実用に耐えないケースがあります。
FastGraphRAGのアプローチ
これに対して、FastGraphRAGのアプローチは、クラスタリングを行わず、PageRankアルゴリズムを使って関連性の高い情報を取得するといったものです。
PageRankアルゴリズムとは
PageRankアルゴリズムは、Googleが開発した、Webページの重要度を評価するアルゴリズムです。多くの重要なページからリンクされているページを高く評価して、検索結果の上位に表示させます。
FastGraphRAGは、このWebページを評価するためのアルゴリズムを、GraphRAGのナレッジグラフに応用しよう、という試みです。
PageRankアルゴリズムとクラスタリングの比較
ナレッジグラフを作るというアプローチまでは一緒ですが、そこから関連性の高い情報をどう紐づけるか?の方法に、クラスタリングではなくPageRankを用いるところが、FastGraphRAGのキモです。
先にクラスタリングの課題を示しましたが、PageRankアルゴリズムは計算コストがクラスタリングに比べると低く、部分的な再計算で更新が可能です。(※)
※もちろん全体を再計算するに越したことはないが、実用性に耐える範囲内で部分的な更新にとどめられるのが良き。
検索精度は?
肝心の検索精度について、私個人では検証できていないですが、自分の観測範囲内だと、従来のGraphRAGと同等の精度くらいは出せているように見えます。
いろいろ試してみて情報更新あれば追記していきます。
内容にご指摘などあれば、忌憚ないコメントいただければ幸いです!
参考文献
Discussion