データの読み書きを自動で学習するRAG手法
導入
こんにちは、株式会社ナレッジセンスの須藤英寿です。
今回は、情報の書き込みと読み込み方法を相互に学習させることで、ドキュメントに適した検索が実現できるようになる手法「SAGE」について紹介します。
https://arxiv.org/pdf/2605.12061

サマリー
RAGは多様な形で進化しています。しかし、多くの手法は事前に決まったデータの保存方法と、決まった検索方法で固定されてしまっているため、保管するデータの中身によっては結局精度が出ないという問題があります。
今回紹介する「SAGE」は、データの保存方法と検索方法それぞれが、相互に学習を常に重ねていくことで、ドキュメントの特性に最適化されたRAGに調整されます。特徴的なのが、検索方法だけではなく保管方法も学習を重ねることで、相乗的にRAGの精度を上げられ、「SAGE」はこの学習によって、最大で9.1ポイントの精度改善を実現しています。
課題意識
手法

「SAGE」は簡単にまとめると、長期記憶情報をグラフに保存して、読み書きの手法が互いに鍛え合って進化する手法です。全体の仕組みはシンプルながら、この進化という特徴のおかげで、様々な種類のデータソースにも対応することができるのが最大の特徴になっています。
ここで簡単に読み書きがどのように進化するかについてまとめます。
書き込み
書き込み操作は、ドキュメントを入力として、その中に含まれる(主語, 関係, 目的語)で表現できる情報を複数取り出して、グラフに書き込みます。この情報の取り出しはLLMを用いて行われますが、「SAGE」では、このLLMを以下の手順で強化学習して改善を行います。
- Writerがドキュメントを使用して、トリプル情報を作成し更新用データを作成する
- 固定されたReaderで、検索を実行
- LLMを使用して、Readerの検索で回答を用意できるかを判定
- 精度を相対評価して、性能が高くなるトリプル情報が発行されたWriterが優先されるように強化学習
以上のステップで、Writer側の性能を改善していきます。
読み込み
読み込み操作は、ユーザーからのクエリをもとに、グラフ上のトリプルデータを取得するための仕組みです。以下のような工夫を施して検索します。
- 質問の分解: 質問内容を分解して、シノニムを考慮した幅広い関連データをグラフから検索
- ソフトアドレッシング: 全ての保管データについて、質問との関連性から簡単な評価点を割り振り
- 評価の伝搬: 注目されているノードから関連する重要な情報を選択する
詳細は省いていますが、主にこの三つのステップを経て、関連性の高い情報を取得しています。
「SAGE」では、以下の二点を学習することで検索を改善します。
- 構造の学習
ノードの関係性を一般化して学習。これにより、多少データの中身が変わったとしても、検索時の重要性を正しく重みづけできる - 内容の学習
ノードの中身をもとにした学習。要素ごとの点数の重みづけや、関係性の点数の重みづけが適切になるように学習し、検索の精度を上げることができる
評価

二つの指標で、既存の手法と「SAGE」の性能を比較しています。NQではR@2で+36.9ポイント、R@5で+13.6ポイントと既存手法と比べて、大きな性能向上につながっています。一方で、PopQAでは、既存の手法と比較して、指標によって2〜3位の評価となっています。

続いて、検索にかかる時間です。SAGEは検索時の仕組みは非常にシンプルなため、平均して他の手法と比較すると、最も短い時間で検索が完了しています。
まとめ
今回は、データの書き込みと読み込みの方法を相互に学習して性能を改善していく手法「SAGE」について紹介しました。書き込み側は、LLMの改善、そして読み込み側はグラフの構造と内容を学習するという面白い手法になっています。さらに、副次的ではありますが、検索時間も短く済むのも嬉しいポイントです。要素同士の関係が変化しない、情報を積み重ねていくタイプのRAGの作成に、適しているので、ぜひ、ご活用ください。