記事検索

検索ワードを入力してください。
Sky Tech Blog
【生成AI】階層型RAGで​検索精度を​上げる

【生成AI】階層型RAGで​検索精度を​上げる

RAGが関連性の低い情報から誤った回答を生成する課題に対し、情報の階層構造を活用した「階層型RAG」を解説します。この手法では、文書の概要をまとめた上位レベルと詳細なデータを持つ下位レベルの2段階で検索を行います。まず上位レベルで関連ドキュメントを絞り込み、次にその範囲内で根拠情報を探すことで、データ編集の手間を省きつつ、より的確な情報を見つけ出し、RAGの回答精度を向上させます。

RAGは関連性の低い情報が多いと誤った回答をする可能性が高まるという課題を抱えていますが、情報の階層構造を活用することで、より的確に答えの根拠となる情報を見つけ出せるようになります。
今回は、この階層型RAGの仕組みと、それがいかにしてデータ編集の手間を省き、精度向上を実現するのかを解説します。

背景

従来のRAGは、ユーザーの質問に対して、まずベクトル検索などを用いてナレッジベースから関連性の高い情報を探し出し、その情報を基に大規模言語モデル(LLM)が回答を生成する、という仕組みです。
RAGを構築する際に、関連性の低い細かい情報が大量にあると誤った回答をするという課題があります。

かといってベクトルDB(ナレッジベース・外部データソース)のデータを直接編集するのは時間がかかります。
そこで階層型RAGの導入によって精度向上をはかります。

階層型RAGの​仕組み

階層型RAGは検索する際に、上位レベルのベクトルDBから検索して、後に限定された範囲で検索を行うという検索範囲を絞り込む仕組みをしています。

従来のRAGでは、ベクトルDBは一つにまとまっています。
なので、大量のデータがあると間違えてしまう可能性が上がります。

そこで、階層型RAGでは検索を2段階に分けて検索範囲を絞り込みます。

  • 上位レベル(summary/parent):文書全体の概要やセクションごとの要約
  • 下位レベル(child/leaf):従来のRAGに入れているような詳細なデータ

検索の​仕組み

  1. 質問に対して、まずは上位レベルで検索し、関連するドキュメントを限定します。
  2. 限定されたドキュメントから直接回答の根拠になる情報を抽出します。(従来のRAGと同じ仕組み)

このようにして、限定されたドキュメントから検索することで間違える可能性を下げるという方法になっています。

検証結果

あるシステムの機能を検索するRAGを構築しました。

ベクトルDBは、次のように階層を分けました。(ベクトルDBを2個 作成しました。)

  • 上位レベル:
    同一機能かどうかの観点でフォルダを複数個作成。フォルダに対してベクトルDBを作成
  • 下位レベル:
    それぞれの機能ごとのフォルダに該当する文章を格納。各フォルダに含まれる全ファイルに対してベクトルDBを作成

今回はフォルダのベクトルDB(上位レベル)についてはフォルダ内に含まれるチャンクのベクトルの平均をとりました。
(他の方法としては機能書を概要にまとめたり・要約したりする方法が考えられます。)

これにより、次のように段階的に検索が行われ、検索範囲を限定、絞り込んだ範囲で検索が行われます。

  1. 機能ごとに分かれているフォルダから該当する機能のフォルダをいくつか挙げる
  2. 特定された機能フォルダ内の資料から、直接回答の根拠になる文章を抽出

階層型RAGによって、回答の根拠になる参照情報を検索する工程で、期待した情報がヒットする確率が上昇しました。
それによって、RAGの回答精度が上昇しました。

まとめ

階層型RAGの構築により、ベクトルDB(ナレッジベース・外部データソース)を階層ごとに分けることで検索範囲を限定、絞り込んだ範囲で検索することでRAGの回答精度が上がりました。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム