RAGで非構造データを整理する手法「BookRAG」
導入
こんにちは、株式会社ナレッジセンスの須藤英寿です。
今回は、非構造データから構造データとナレッジグラフを構成して、質問に応じた検索手法を実行することで高い精度を実現する手法「BookRAG」を紹介します。

サマリー
RAGはこれまでチャンク化した文書を検索するや、ナレッジグラフを構築して検索する手法など様々な手法が提案されて来ましたが、それぞれ苦手な検索(詳細は後述の課題意識で説明)が存在し精度に限界がありました。
「BookRAG」はツリー構造データとナレッジグラフを組み合わせたうえで、検索に利用可能な処理を11種類作成し、検索時に適切な処理を選択することで高い精度を実現できる手法となっています。
課題意識
既存手法の課題
RAGはこれまで様々な手法が提案されてきましたが、苦手な検索も存在します。
一般的なチャンク化した文書を検索するRAGでは、離れた場所の内容同士の関係性を捉えるのが苦手です。一方でナレッジグラフを用いたRAGは、用語同士の関係性を調べるのには適していますが、元の文章の論理構造や文脈の情報を失いやすいです。
更に、どちらの手法も検索手法が固定なため、複雑な質問に対応できない課題もあります。
手法

BookRAGは、ナレッジグラフとツリー構造、そしてその2つを結びつけるGT-Linkでの3つの要素を含む構造、BookIndexとして、データを保持します。ナレッジグラフにはドキュメント内の重要な単語を抜き出し、単語同士の関係性を保存します。ツリー構造には、ドキュメントの構造を解析して、図表や文章などを区別したうえで階層構造として保存します。最後に2つのデータをつなぎあわせて、BookIndexは完成します。
検索手法

BookRAGの検索時には、4つのカテゴリー(Formulator, Selector, Reasoner, Synthesizer)に分類される合計11種類の操作を組み合わせて必要な情報を検索します。
簡単にまとめると以下の操作のうち必要なものを選択して最適な検索を行います。
- 入力されたクエリをサブクエリや重要単語に分解
- 重要単語との関係性や、構造的な条件を元に参照するデータを選択(例えば、PDFの10ページ目などの条件を満たすものに限定する)
- 関連するドキュメントの関連度合いを評価(ナレッジグラフやEmbeddingを用いたスコアリング)
- 参照データを分析もしくは統合して、回答を生成
クエリの複雑さに応じて、必要な操作を切り替えて精度の高い回答生成を実現しています。
評価

ベンチマークの結果は全ての項目で、BookRAGが既存の手法と比べて高い精度を実現しています。

一方で、LLMや複雑な検索を使用することを前提としているため、実行時間とトークンのコストは既存のシンプルなRAGでの実装と比べると10倍程度に膨らんでしまっています。ただし、同等の複雑な仕組みを持つDocETLと比較すると消費トークンは1/10程度に抑えられています。
まとめ
今回は、ナレッジグラフとツリー構造データを保管したデータベースを作成し、LLMを用いて最適な検索を実現する手法「BookRAG」について紹介しました。LLMと複雑検索を用いて実現している手法なため、時間やトークンのコストは高いものの、複雑な質問に対する回答精度はこれまでと比べられないほどに高い精度を実現している面白い手法です。複雑な質問が多くて精度がでない、という問題に遭遇している方はぜひ参考にしていただければと思います。
Discussion