第1章 RAG(検索拡張生成)の導入部
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
あるAIエンジニアが、自社向けのシンプルな社内サポートチャットボットを構築していると想像してほしい。彼女は、市販の大規模言語モデル(LLM)であるGPT-5.1を使って、たった半日でプロトタイピングを行った。 初期の結果は印象的だ。モデルは流暢に会話し、長い文書を要約し、さらにはコードの草案まで作成する。しかし、自社のシステムに基づいた質問――「来年1月以降の返金ポリシーはどうなるのか?」や「今週フォローアップが必要な顧客アカウントはどれか?」――を投げかけると、回答は崩壊する。モデルは自信満々に、もっともらしい文章を返すものの、それは自社の実際のデータとは無関係なものばかりだ。 時には、すでに廃止されたポリシーをでっち上げたり、全くのナンセンスな回答を提示したりすることもある。根本的な問題は、モデルの流暢さではなく、その「盲目さ」にある。
この「 (現実世界との乖離)」こそが、最も高度なLLMsでさえも抱える根本的な限界である。1 LLMは、書籍、記事、コードリポジトリ、公開されたウェブコンテンツといった膨大なコーパスでトレーニングされている。これにより、言語に対する広範で一般化された理解が得られ、明示的にトレーニングされていないタスクも実行できるようになる。 しかし、訓練データセットがどれほど巨大であっても、企業の機密文書や社内ナレッジベース、あるいは先週更新されたニッチなライブラリの情報を含むことは決してない。その結果、タスクが訓練範囲外の情報を必要とする場合、LLMsは流暢ではあるが誤った回答を返すことがある。こうしたエラーは、しばしば「 (情報欠如)」によるハルシネーションとして現れる。つまり、流暢で自信に満ちた生成コンテンツでありながら、実際のデータによって全く裏付けられていないものなのである。
トレーニングセットの規模を拡大することは、現実的な解決策ではない。世界の情報——公開されているもの、機密情報、構造化されたもの、非構造化されたもの、安定しているもの、絶えず変化しているもの——をすべて収集し、クリーニングし、単一のトレーニング実行に組み込むことは不可能だ。どのようなモデルであれ、トレーニングが終了した瞬間に、常に不完全で、わずかに時代遅れのものになってしまう。
これが、RAG(検索拡張生成)が登場した理由だ。静的なモデルにすべてを「知っている」ことを期待する代わりに、RAGはモデルが本来欠いている関連事実を動的に取り込むことを可能にする。当社のAIエンジニアが開発したチャットボットでは、RAGを追加することで、ユーザが質問した瞬間に、モデルが正確なウィキページ、ポリシー文書、またはサポートチケットの履歴を取得できるようになる。 その後、LLMはその生成能力を用いて、検索した資料に基づいた最終的な回答を合成する。その結果、必要な情報をようやく備えることになったため、より正確で信頼性が高く、ハルシネーションを起こしにくいシステムが実現する。
本書は、この変換に焦点を当てている。つまり、事前学習のみに依存するLLMsから、検索を通じて非公開の、ドメイン固有の、そして絶えず更新されるデータについて推論できるシステムへの移行である。RAGは単なる技術的な改良ではない。生成AIを実際のアプリケーションで真に有用なものにするための鍵なのだ。
RAGはどのように機能するのか? ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access