RAG・エージェント — 外部知識と自律的な処理
LLM単体は「学習済みの知識」しか持たず、手順も1回の応答で完結します。これを超えて、外部知識を取り込む(RAG)、**自ら手順やツール使用を決める(エージェント)**という2つの発展があります。
注: このページは概念と設計パターンを扱います。個別ツールや製品の仕様・価格は本文に含めていません(最新は各社公式を参照)。
RAG(検索拡張生成)とは ★★
RAG は、モデルの内部知識(パラメトリックな記憶)に加えて、外部の知識源(非パラメトリックな記憶)を検索して文脈に与える手法です。原論文では、生成モデルにベクトル検索を組み合わせることで、知識集約的なタスクでより具体的・多様で事実に即した出力が得られると示されました。
典型的な流れは次のとおりです。
- 質問に関連する文書を検索する(ベクトル検索など)。
- 検索結果を文脈としてプロンプトに与える。
- その文脈に基づいて回答を生成する。
RAGの利点は、(1) 学習後の最新情報や社内知識を扱える、(2) 出典を提示できる、(3) ハルシネーションを抑えやすい、という点にあります。
エージェントとワークフロー ★★
自律性の観点で、LLMを使うシステムは2種類に分けられます。
- ワークフロー: あらかじめ決めた手順(コードパス)に沿ってLLMとツールを組み合わせる。挙動が予測しやすい。
- エージェント: LLMが自ら処理の流れやツール使用を動的に決める。柔軟だが制御は難しくなる。
多くの実務では、まずワークフローで十分なことが多く、必要になって初めてエージェントを検討する、という順序が現実的です。
代表的なパターン ★★★
エージェント的システムの構成要素として、次のようなパターンが知られています。
- 拡張LLM: 検索・ツール・記憶を付与した基本単位。
- プロンプト連鎖: 逐次的にLLMを呼び、前の出力を次に渡す。
- ルーティング: 入力を分類し、適切な専門処理へ振り分ける。
- 並列化: 複数のLLM処理を同時に走らせ、分担や多数決を行う。
- オーケストレーター–ワーカー: 中心のLLMがタスクを分解し、下位のLLMに委譲する。
- 評価–最適化: 一方が生成し、もう一方が評価してフィードバックする。
重要なのは、複雑なフレームワークより、単純で組み合わせやすいパターンを選ぶことです。
まとめ
- RAGは外部知識を検索して文脈に与え、最新性・出典・事実性を高める。
- ワークフロー(定義済み手順)とエージェント(動的判断)を使い分ける。
- まずは単純なパターンから始め、必要な分だけ複雑さを足す。
確認問題
問1. RAG(検索拡張生成)の説明として正しいものはどれか。
- モデルのパラメータを再学習して知識を更新する
- 外部知識を検索し、文脈としてプロンプトに与えて生成する
- 出力を必ず短くする技法である
- モデルを複数同時に動かすこと自体を指す
正解: 2 解説: RAGは外部知識源を検索し、その結果を文脈に与えて生成します。再学習せずに最新情報や社内知識を扱え、出典提示やハルシネーション抑制に役立ちます。
問2. ワークフローとエージェントの違いとして正しいものはどれか。
- ワークフローはLLMが手順を動的に決める
- エージェントはあらかじめ決めた手順だけを実行する
- ワークフローは定義済みの手順、エージェントは処理を動的に決める
- 両者に違いはない
正解: 3 解説: ワークフローは定義済みの手順に沿い挙動が予測しやすく、エージェントはLLMが処理やツール使用を動的に決めます。柔軟な分、制御は難しくなります。
問3. エージェント的システムを設計する際の指針として適切なものはどれか。
- 常に最も複雑なフレームワークを使う
- 単純で組み合わせやすいパターンを優先する
- ルーティングや分割は避ける
- まず必ずフルエージェントから始める
正解: 2 解説: 実務では単純で構成可能なパターンが有効です。まずワークフローで足り、必要になってからエージェントや高度なパターンを足すのが現実的です。
参考にした考え方の出典
RAG の定義は原論文 (Lewis et al., 2020)、エージェントの分類とパターンは Anthropic「Building Effective AI Agents」に基づき、自分の言葉で整理しました(末尾の参考文献を参照)。