日本の研究所がいかにして優れたRAGシステムを構築しているか
ベクトルデータベースは関連するチャンクを返し、埋め込みモデルはベンチマークで高いスコアを記録している。しかし、ユーザーが複雑な質問をしたとき、システムは役に立たない回答を返してしまう。
これは検索アーキテクチャの失敗である。LLMをチューニングしても解決しない。
日本の研究チームが解決策を見つけた。彼らはナレッジグラフRAGシステムを構築した。このアプローチにより、科学的なタスクにおける精度が90%向上した。
標準的なRAGの問題は、意味的な類似性(semantic similarity)にある。タンパク質の折り畳みに関するチャンクは、CRISPRに関するクエリと似ているように見えるかもしれない。しかし、類似していることが、必ずしも関連していることを意味するわけではない。
日本のチームは、単なるテキストチャンクではなく、エンティティ間の関係を利用している。彼らが抽出するのは以下の通りだ:
- タンパク質や研究者などのエンティティ
- 「阻害する」や「引用する」といった関係性
- 信頼度スコアなどの属性
彼らは2段階のプロセスを採用している。まず、関連するサブグラフを特定する。次に、それらのエンティティに紐付けられたテキストを検索する。これにより、意味のドリフト(semantic drift)を防ぐことができる。単に似た言葉を検索するのではなく、文脈(コンテキスト)を検索するのである。
GraphRAGは標準的なRAGよりも構築が難しい。以下のものが必要になる:
- エンティティ抽出パイプライン
- 関係性の分類
- グラフストレージ・インフラストラクチャ
- ハイブリッド・クエリエンジン
最大のリスクはメンテナンスだ。グラフは更新しなければ腐敗する。私は2023年にこれを身をもって学んだ。高精度な法務RAGシステムを構築したが、更新メカニズムの構築を怠った。半年後、データは古くなり、精度は94%から71%へと低下した。
正しく構築する方法:
- エンティティのタクソノミー(分類体系)から始める。重要なタイプを20〜30個選定する。
- 初日からハイブリッド検索を利用する。関係性にはグラフを、トピックにはベクトルを使用する。
- まずメンテナンス・パイプラインを構築する。新しいドキュメントがどのようにグラフを更新するかを計画する。
- 推論チェーンを測定する。システムが回答に至るまでに何ステップ踏むかを追跡する。
科学、法律、医学の分野に携わっているなら、メンテナンスコストをかける価値はある。単純なFAQであれば、標準的なRAGで十分だ。
自問してみてほしい。クエリのうち、関係性について尋ねるものは何パーセントあるだろうか?もしユーザーの40%以上が「物事の関連性」について尋ねるなら、グラフが必要だ。
Optional learning community: https://t.me/GyaanSetuAi