エージェントが検索を制御する RAG | メタデータフィルタリングの活用
はじめに
システムゼウスの池田です。
近年、生成AIを活用した検索・回答システムとして、RAG(Retrieval-Augmented Generation、検索拡張生成)が注目を集めています。特に、検索精度を向上させるためのメタデータフィルタリングや、エージェントによる検索プロセスの制御を組み合わせることで、より高度な RAG の検索システムを構築することが可能です。
本記事では、メタデータフィルタリングとエージェントの検索制御を組み合わせた RAG の検索システムを紹介します。特に、エージェントがどのように検索の必要性を判断し、必要な場合のみ追加検索を行う仕組みに焦点を当てます。
今回紹介するRAGの検索システム
本記事で紹介するのは、メタデータフィルタリングを活用し、エージェントが検索の要否を判断しながら検索を制御する RAG の検索システムです。このシステムでは、以下の2段階の検索プロセスを採用しています。このアプローチは、業務ナレッジを活用した Q&A システムや技術ドキュメント検索など、特定の情報群を対象に段階的な検索を行うことが有効なデータ構造 の場合に適用しやすい構成になっています。
- 第1段階 : 広範なデータを検索し、関連情報の ID を取得
- 第2段階 : 取得した ID をもとに、対象範囲を絞り込んで詳細な検索を実施
🧰検索システムの概要図
以下の図は、業務について回答する RAG の検索システムの全体フローです。
エージェントがユーザーの質問を受け取った後、2段階の検索プロセスを通じて情報を取得し、追加検索の必要性を判断する仕組みになっています。
検索システムの全体フロー
このシステムの実際の構成は以下の通りです。
検索にはアクショングループを利用し、1段階目と2段階目では異なるアクショングループを実行しています。
システム構成図
🤔エージェントが検索をどのように制御するのか?
検索の流れは、エージェントが「追加の検索が必要か?」を判断することで制御されます。
- 第1段階の検索結果をもとに、エージェントが「追加の検索が必要か?」を判断する
- 第1段階の検索結果のみで回答可能な場合は、そこで検索を終了し、回答生成へ
- より詳細な情報が必要な場合のみ、第1段階の検索結果を活用して第2段階の検索を実行する
この仕組みを導入することで、無駄な検索を省きながら、必要な情報は確実に取得できるようになります。また、検索範囲を適切に絞り込むことで、より正確な回答が可能になります。
🪄エージェントによる検索クエリの生成
エージェントは検索を実行する際に、検索対象に応じた適切なクエリを生成します。
第1段階と第2段階では、エージェントが生成するクエリの内容が異なります。
- 第1段階の検索クエリ : 広範な情報を取得するためのクエリ
-
第2段階の検索クエリ : 第1段階の検索結果を踏まえ、詳細な情報を取得するためのクエリ
※場合によっては新たなクエリを作成しないこともある(エージェントが独自に判断しているため、明確な条件は不明)
この仕組みにより、エージェントは検索範囲を動的に調整しながら、最適な情報を取得します。
🔎検索の実行とフィルタリング
第1段階の検索では、エージェントは Lambda に検索のための クエリ を渡します。第2段階の検索では、エージェントは Lambda に検索のための クエリ と ID を渡します。Lambda 内では、この情報を使ってベクトルデータベースに対する検索を実行します。
検索の流れ
ベクトルデータベースでは、以下のように処理が行われます。
-
検索クエリの適用
- エージェントが生成した検索クエリを使用し、対象のデータを検索
-
ID によるフィルタリング
- 検索対象を「 指定された ID に一致するデータのみに限定 」して検索を実行
- 1段階目 : 業務一覧のみ(変わらないため直接 ID を指定)
- 2段階目 : 質問の業務に対応するマニュアルのみ(エージェントが ID を指定)
- 検索対象を「 指定された ID に一致するデータのみに限定 」して検索を実行
例えば、第1段階で取得した業務 ID をもとに、第2段階ではその業務に紐づくマニュアル情報のみを対象として検索します。
これにより、特定の ID に紐づくデータの中から、検索クエリに適合する情報が取得されます。
Lambda は、エージェントから受け取った 検索クエリと ID を用いて、ベクトルデータベースの検索を実行 します。検索処理はデータベース側で行われ、Lambda は検索条件を適切に設定する役割を担っています。
📝まとめ
本記事では、エージェントによる検索の制御と 2 段階検索を組み合わせた RAG システム について紹介しました。
本システムでは、エージェントが 検索の必要性を判断 し、
- 第1段階の検索 で ID を取得
- 第2段階の検索 で ID をもとに対象範囲を絞り込む
という検索フローを構築することで、無駄な検索を省きながら、適切な情報を取得 できる仕組みを実現しています。また、検索の実行は Lambda を通じてベクトルデータベースの API を呼び出す形 で行われており、エージェントは「検索クエリ」+「ID」を渡し、検索範囲を動的に制御しています。
このアプローチにより、
- 検索精度の向上(不要なデータを排除し、関連性の高い情報のみ取得)
- 効率的な検索(検索回数を最小限に抑え、リソースを節約)
- 柔軟な拡張性(検索ロジックを変更しやすい設計)
といったメリットが得られます。
このアプローチは、業務ナレッジを活用した Q&A システムや技術ドキュメント検索など、特定の情報群を対象に段階的な検索を行うことが有効なデータ構造 の場合に適用しやすい構成になっています。
免責事項
作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。
Discussion