「RAG x Deep検索」でRAGの回答精度を向上させる
本記事では、RAGの性能を高めるための「DualRAG」という手法について、ざっくり理解します。株式会社ナレッジセンスは、エンタープライズ企業向けに「社内データ検索サービス」を提供しているスタートアップです。
この記事は何
この記事は、RAGの新手法である「DualRAG」の論文[1]について、日本語で簡単にまとめたものです。
今回も「そもそもRAGとは?」については、知っている前提で進みます。確認する場合は、こちらの記事もご参考下さい。
本題
ざっくりサマリー
DualRAGは、RAGの精度を上げるための新しい手法です。天津大学の研究者らによって2025年4月に提案されました。
最近、OpenAIの「Deep Research」が話題です。この機能では、Web上の情報をもとに深く考え、高精度な回答をすることができます。ただ残念ながら、本家「Deep Research」の実装は、公開されていません。
しかし、今回紹介する「DualRAG」という手法は、普通のLLM(Qwen2.5)を使いながら、「Deep Research」のようなことを実現できます。RAG開発者としては、かなり参考になります。
この手法では、LLMが、①検索ワードの生成 (RaQ)と ②要約(pKA)の2つのツールを自律的に使いこなしながら、高精度な回答を生成します。
問題意識
従来のRAGには 「柔軟性がない」 という問題があります。[2]
例えば、「『スターウォーズ』と『ハリー・ポッター』で映画監督が先に生まれたのはどっち?」という質問があったとします。
もし、RAGのソース文書に、正解が「そのまま」あればそれでOKですが、現実では普通、情報が分散しています。なので通常、この質問に答えるには、①「それぞれの映画監督が誰か?調べる」→②「それぞれの誕生日を調べる」というステップが必要です。
しかし通常のRAGだと、ユーザーの質問に対して1回しか検索しないので、回答精度が悪いです。
(※もちろん、この「柔軟性がない」という課題に対して、「IRCoT」や「HiRAG」のようなRAG手法も登場していますが、やはり、柔軟性には問題があり、十分では有りませんでした。)
手法
DualRAGでは、「Qwen2.5」というLLMと、それに与えるプロンプトを工夫することで、深い検索ができる仕組みを実現しています。
【ユーザーが質問を入力して来たとき】
-
推論・検索(RaQ)
- 「現在の知識で十分か?」をメタ認知→「情報不足」と判断すると検索
- 的確なキーワードで検索できるよう、無駄な単語は省く(=エンティティの抽出)
-
情報の要約(pKA)
- 1で取得した情報を整理・要約
-
1・2の繰り返し
- 回答にたどり着くまで、必要なだけこのサイクルを繰り返す
- 最終回答を生成
DualRAGという手法のキモは、「検索⇄要約」のサイクルです。単に検索回数を多くするのではなく、常に「メタ的な視点から要約・整理するステップ」を挟みます。そうすることで、最低限の検索回数で、答えにたどり着くことが可能です。[3]
成果
- HotpotQAなどのマルチホップQAデータセットで、「IRCoT」や「MetaRAG」など既存のRAG(「繰り返し」検索を用いる手法)を上回るスコアを達成
- 検索を「必要な時だけ」発火する柔軟性。平均イテレーション回数を 2〜3 回程度に削減
また、「DualRAG」のさらにすごい点は、「小さいモデル」(Qwen-2.5-7B-Instruct)でも、ほぼ変わらない回答精度を出せるようにしている点です。まずは「大きいモデル」(72B)で精度向上を実現した後、「小さいモデル」をファインチューニング(蒸留)することで、これを実現しています。
まとめ
弊社では普段から、エンタープライズ向けにRAGサービスを開発しています。サービスをやっていて思うのは、「大企業のユーザーだと、質問が複雑になりがち」という問題です。質問の中に社内用語が含まれていたり、社内プロセスも複雑だったりします。
こうした場合、従来のRAGのように「1回しか検索しない」パターンだと、回答精度が低いです。まさに、DualRAGのような、「深く」「繰り返し」検索できる手法が必要になってきます。
ただ、単に「深く」検索すればいいというものでもありません。時間がかかりすぎます。このように「如何に精度を保ちながら、如何に高速に回答するか」という点で、DualRAGは、ちょうどいい手法だと言えます。
みなさまが業務でRAGシステムを構築する際も、選択肢として参考にしていただければ幸いです。今後も、RAGの回答精度を上げるような工夫や研究について、記事にしていこうと思います。我々が開発しているサービスはこちら。
Discussion