試験前に教科書を開くのと同じこと
「有給休暇の繰り越しは何日までですか」と AI に聞いて、それらしい嘘を返されたことはないでしょうか。AI は就業規則を読んだことがないのに、確率的に自然な文を作ってしまうからです。
RAG(Retrieval-Augmented Generation、検索拡張生成) は、答えさせる前に、関係する文書を検索して AI に読ませる仕組みです。試験で分からない問題が出たとき、教科書の該当ページを開いてから答えるのと同じです。カンペ方式、と言ってもいいでしょう。重要なのは、モデル自体は何も変わらないことです。RAG はモデルのパラメータを更新しません。事前学習したデータが書き換わるわけでもありません。ただ、答えるときに参照する資料を渡しているだけです。
保存フェーズ:資料を探せる形にしておく
カンペ方式が成り立つには、教科書に付箋と目次が要ります。RAG でそれにあたるのが保存フェーズで、事前に3つの処理をします。
- チャンク分割: 長い文書を数百字程度のまとまりに切る。切られた1つ1つがチャンク。
- ベクトル化: 各チャンクの文章を数値の列に変換し、意味が近い文章どうしが近い位置に来るようにする。
- インデックス化: データベースに格納し、速く探せる索引を作る。
チャンクの大きさは重要な設計判断です。
- 大きすぎると、1つのチャンクに複数のトピックが混ざり、検索したときに関係ない内容まで一緒に持ってきてノイズになる。
- 小さすぎると、前後の文脈が切れて、手順の途中だけが返ってきて意味が取れない。
目安は 「1つのトピックが1つのチャンクに収まる」 大きさで、マニュアルなら見出しの単位が一般的です。最初から完璧を目指す必要はなく、運用しながら「OS の版ごとに分けた方がよい」「この手順は全体で1チャンクにまとめた方がよい」と調整していきます。完璧な設計を待ち続けて始められないことが、最も避けるべき状態です。
検索・生成フェーズ:質問が来たら
- 質問をベクトル化する。
- 意味の近さで関連チャンクを検索する。
- 関連性の高い順に並べ替え、上位のチャンクを LLM への入力に含める。
- LLM がそのチャンクを根拠にして回答を作る。
ここで使われるのが セマンティック検索(意味での検索)です。キーワードが一致していなくても、意味が近ければ見つかります。「年休」と「有給休暇」、「パスワードを忘れた」と「ログインできない」が結びつくのはこのためです。試験では、表現が違っていても意味が近いチャンクが最も類似度が高くなる、という理解が問われます。回答を外部の文書に基づかせることをグラウンディングとも呼びます。
答えが変なとき:検索の問題か、生成の問題か
RAG の精度は 2段階に分けて 見ます。
- 検索の精度: 質問に関係するチャンクを正しく取ってこられているか。ここが外れていれば、LLM がどれだけ賢くても正しく答えられません。
- 生成の精度: 取ってきたチャンクに忠実に、質問に過不足なく答えているか。
誤回答が出たら、まず「どのチャンクが検索されたか」を確認します。関係ないチャンクが返っていれば検索の問題で、チャンクの粒度、メタデータの不足、質問の言葉とナレッジベースの用語のずれを疑います。正しいチャンクが返っているのに答えが違うなら生成の問題で、プロンプトの指示や LLM の設定を見直します。この切り分けが改善の出発点です。
精度を上げる観点は4つあります。①質問の変換(曖昧な質問を検索に向く形に直す、複数の質問に分ける)、②検索先の振り分け(マニュアルはベクトルデータベース、社員情報はリレーショナルデータベース、と質問内容で分ける)、③検索結果の並べ替えと絞り込み(リランキング、フィルタリング)、④チャンクの設計と構造化(粒度、メタデータ、要約の併用)。
ストラテジストが押さえる原則は、ナレッジベースの品質が RAG の精度を直接決める、チャンク設計は最初から完璧を目指さない、メタデータが検索精度を大きく左右する、精度の問題は検索と生成に分けて原因を特定する、の4つです。導入初期は、回答を担当者がレビューしてから利用者に返す運用が基本です。
試験で問われる観点
- RAG に関する記述の正誤: パラメータは更新しない、事前学習データは書き換わらない、ナレッジベースが必要。
- チャンクサイズが大きすぎる場合(複数トピック混在で検索ノイズ)と小さすぎる場合(文脈が失われる)の組み合わせ。
- セマンティック検索: 表現が違っても意味が近いチャンクが最も類似度が高い。
- 誤回答の原因切り分け: まず検索されたチャンクを確認し、検索段階の問題ならメタデータ付与やチャンク分割の見直し。
- チャンク設計は運用で発見して段階的に調整する。完璧を待たない。