検索拡張生成(RAG)は、回答を生成する前に知識ベースから関連文書を取り出し、モデルの記憶だけでなく実際の資料に基づいて答えるAI技術です。学習時に見ていない文書についても回答でき、参照元を示せる点が特徴です。

ステップ1:チャンク化とインデックス作成 — 知識ベースを準備する。

この前処理は、利用者が質問する前にオフラインで行われます。その結果、完全一致のキーワードだけではなく意味の近さで断片を探せる索引ができます。チャンク化の品質は検索精度を直接左右します。無関係な話題を混ぜた断片は、質問時にノイズの多い候補を返します。

質問が入力されると、システムは索引作成時と同じ埋め込みモデルで質問をベクトル化します。そして質問ベクトルとすべての断片ベクトルの類似度を計算し、意味的に近い上位k件を次の処理に渡します。

これは、司書が質問を聞き、記憶から蔵書全体を暗唱するのではなく、最も関連する数冊を棚から持ってくるようなものです。検索は単語の一致を必要としません。「契約更新が拒否された理由」という質問から、共通する語がなくても「契約終了条項」に関する文章を見つけられます。

RAGは質問時に知識を取り出し、ファインチューニングは知識をモデルの重みに埋め込みます。両者は同じ問題を競う方式ではなく、異なる目的を解く手段です。どちらを選ぶかは、実際に何を解決したいのかで決まります。

透明性

・RAG:各回答の根拠となった文書を記録でき、誤りを特定の断片まで追跡できます。 ・ファインチューニング:知識は多数の重みに分散し、特定の出力へ影響した学習例を監査する仕組みはありません。

ベクトルデータベースは、埋め込みを保存して類似検索を支える部品です。RAGはそれを含む完全なアーキテクチャであり、検索結果を言語モデルへ渡して回答まで作ります。この二つを同じものと考えると、実装に必要な役割を見失います。

たとえば、ベクトルデータベースは図書館の書架と目録、RAGは関連する本を見つけ、該当箇所を読み、平易な答えを説明する図書館サービス全体に相当します。検索だけを作ることはできますが、RAGには検索層が欠かせません。製品がベクトル検索を掲げる場合、取得した文脈から回答も生成するのかを確認しましょう。

RAGは検索と生成を一つの製品体験へまとめます。ベクトル検索が関連文章の一覧を返すのに対し、検索拡張生成はそれらをもとに直接的な自然言語の回答を作ります。関係は深いものの、抽象化の層は異なります。

検索した文章と問いを言語モデルに渡して回答案を生成します。重要な主張を資料と照合し、原典へのリンクを残してください。検索の見落としや生成時の誤りは起こり得るため、RAGは正確性を保証しません。

関連記事
参考資料

ツールディレクトリを見る →