コンテンツへスキップ
中級読了時間 18分·

RAG でナレッジベース Q&A システムを構築

LLM はあなたのプライベートで最新の資料を知らず、ハルシネーションも起きがちです。RAG(検索拡張生成)は「まず検索、そして生成」により、信頼できるナレッジベースに基づいて回答させます。現在最も実用的な本番手法の一つです。

著者:AI Resource Hub

なぜ RAG が必要か

モデルを直接ファインチューニングして知識を注入するのは高コストで更新も遅いです。RAG は知識を外部データベースに置き、回答時に関連箇所を検索してモデルに渡すため、安価で常に最新に保てます。

パイプラインの概要

典型的な RAG システムは2段階です。オフラインの「インデックス段階」で文書を検索可能なベクトルに変換し、オンラインの「クエリ段階」でユーザーの質問に基づいて検索・生成します。

文書分割と Embedding

まず文書を適切な大きさのチャンクに分割します。大きすぎると検索が不正確に、小さすぎると文脈が失われます。一般的には数百トークンで一定の重複を持たせます。

次に Embedding モデルで各チャンクをベクトル化し、ベクトルデータベース(pgvector、Milvus、Qdrant など)に保存します。

ベクトル検索と Top-K

ユーザーが質問したら、質問もベクトル化してデータベースで類似度検索を行い、最も関連するチャンク(Top-K)を取得します。

キーワード検索と組み合わせた「ハイブリッド検索」や、リランキングで再現品質をさらに高められます。

コンテキストを組み立て回答を生成

検索したチャンクをプロンプトに挿入し、「提供された資料のみに基づいて回答し、資料にない場合はその旨を明記する」と指示することで、ハルシネーションを大幅に減らせます。

高度な最適化には、クエリ書き換え、出典引用、コンテキスト長の制御、検索結果の重複排除とフィルタリングがあります。

RAGベクトルDBEmbeddingナレッジベース

関連チュートリアル