第6章

RAG 検索拡張生成

検索拡張生成(RAG)は、外部知識ベースとコンテキスト注入によって、大規模モデルの知識更新、説明可能性、コストの問題を解決し、企業向けアプリケーションの主流アーキテクチャとなっています。

RAG の仕組み

RAG は外部ナレッジベースを検索し、関連情報を生成プロセスに注入することで、知識強化生成を実現します。

完全なワークフロー

1
クエリ理解:ユーザーの問い合わせの意図とニーズを理解する
2
ベクトル化:クエリをベクトル表現(Embedding)に変換する
3
検索:ベクトルデータベースで類似文書を検索する
4
コンテキスト注入:検索した文書をコンテキストとしてPromptに注入する
5
生成:強化されたコンテキストに基づいて回答を生成する

コアコンポーネント

  • ベクトルデータベース:ドキュメントのベクトル表現を保存する(例:Pinecone、Weaviate、Milvus)
  • 埋め込みモデル:テキストをベクトルに変換する(例:OpenAI Embeddings、BGE)
  • 検索機能:類似度検索を実行する(ベクトル検索、キーワード検索、ハイブリッド検索)
  • 生成モデル:検索結果に基づいて回答を生成する(例:GPT-4、Claude)

RAG の利点

RAG は大規模モデルの重要な問題を解決し、企業アプリケーションにより適したものにした。

知識の更新

  • リアルタイム更新:知識ベースはいつでも更新でき、モデルの再学習は不要
  • ドメイン知識:特定分野の専門知識を注入できる
  • 時宜性:最新の情報にアクセスできる
  • 柔軟性:異なるクエリには異なるナレッジベースを使用できます

説明可能性

  • 出典の追跡:答えの出典文書まで追跡できる
  • 透明性:ユーザーは検索された文書を閲覧できます
  • 信頼度:情報源の信頼性を評価できます
  • 監査:監査とコンプライアンスに便利

費用対効果

  • 微調整不要:各ドメインごとにモデルをファインチューニングする必要がない
  • ナレッジベースの再利用:同じナレッジベースを複数のアプリケーションで利用できる
  • コスト管理:微調整と比べて、コストが低い
  • 迅速なデプロイ:新しいアプリを迅速にデプロイできる

幻覚を減らす

  • 事実の基盤:取得した文書に基づいて生成し、作り話を減らす
  • 正確性:回答の精度を高める
  • 信頼性:より正確な情報が必要な場面に適している
  • 品質管理:ナレッジベースの品質管理によって回答品質をコントロールできる

RAG の課題

RAGは強力ですが、解決すべきいくつかの課題もあります。

検索品質に依存

RAGの効果は検索品質に大きく依存する:

  • 検索精度:関連文書を検索できないと、誤った回答につながる
  • 検索関連性:関連性のない文書を検索すると、生成品質に影響する
  • ドキュメント品質:ナレッジベースの品質は RAG の効果に直接影響する
  • 最適化の方向性:検索アルゴリズムを改善し、ドキュメントの分割を最適化し、ハイブリッド検索を使用する

遅延の問題

  • 検索の遅延:ベクトル検索には時間がかかる
  • 生成遅延:生成モデルはより長いコンテキストを処理する必要がある
  • 全体遅延:RAG の全体的な遅延は直接生成より高い
  • 最適化:キャッシュ、非同期検索、検索アルゴリズムの最適化

コンテキストの制限

  • コンテキストウィンドウ:モデルにはコンテキスト長の制限がある
  • ドキュメントの選択:大量の検索結果から最も関連性の高いものを選ぶ必要がある
  • 情報圧縮:取得した文書を圧縮または要約する必要がある場合があります
  • 解決策:再ランキング、文書要約、階層検索

RAG のベストプラクティス

高品質なRAGシステムを構築するための重要な実践。

ベクターデータベースの選定

Pinecone

ホスティングサービス、使いやすく、迅速なプロトタイピングに最適

Weaviate

オープンソース、機能豊富、ハイブリッド検索をサポート

Milvus

高性能で、大規模なデプロイに適しています

Chroma

軽量で、統合しやすい

検索戦略

  • ベクトル検索:意味的類似度に基づき、意味検索に適している
  • キーワード検索:キーワード一致に基づき、正確一致に適している
  • ハイブリッド検索:ベクトル検索とキーワード検索を組み合わせることで、より良い効果が得られる
  • 並べ替え:再ランキングモデルを使用して検索結果を最適化する

文書処理

  • チャンク戦略:適切に分割し、意味の完全性を保つ
  • メタデータ:メタデータ(ソース、時間、種類など)を追加する
  • 前処理:整理、標準化、重複排除
  • 更新メカニズム:文書更新とバージョン管理の仕組みを構築する

Prompt エンジニアリング

  • コンテキストの整理:取得した文書を適切に整理する
  • 指示が明確:検索した情報をモデルにどのように使用させるかを明確に指示する
  • 引用要件:ソースを引用することを要求する
  • 品質管理:品質管理指示を追加する(例:「情報が不足している場合は、その旨を明記してください」)

RAG vs 微調整:どのように選ぶ?

RAG とファインチューニングの適用シーンを理解し、正しい選択を行う。

RAG を選択するシナリオ

  • 知識の更新が頻繁:頻繁に知識を更新する必要がある
  • 多分野での応用:複数の分野を扱う必要がある
  • 解釈可能性要件:答えの出典を追跡する必要がある
  • 迅速なデプロイ:新しいアプリを迅速にデプロイする必要がある
  • コスト管理:コストを管理する必要がある

微調整を選択するシナリオ

  • タスク固有:特定のタスクパターンを学習する必要がある
  • スタイルの適応:特定の出力スタイルに適応する必要がある
  • パフォーマンス最適化:特定のタスクで性能を最適化する必要がある
  • 知識の定着:知識は比較的安定しており、頻繁な更新は不要
  • 遅延に敏感:遅延要件が非常に高い

ハイブリッドアプローチ

実際のアプリケーションでは、RAGとファインチューニングを組み合わせて使用できます。ファインチューニングで基礎能力を最適化し、RAGでドメイン知識を注入します。

学習成果

この章を終えると、あなたは:

  • 1RAGの完全なワークフロー(検索→拡張→生成)とコアコンポーネントを理解する
  • 2RAG の利点(知識更新、説明可能性、費用対効果)と課題(検索品質、遅延、コンテキスト制限)を理解する
  • 3RAGのベストプラクティス(ベクターデータベースの選択、検索戦略、文書処理、Promptエンジニアリング)を理解する
  • 4RAG とファインチューニングの選択を評価でき、状況に応じて適切なアーキテクチャ判断を下せる