検索拡張生成(Retrieval-Augmented Generation、RAG)は、自然言語処理(NLP)で検索の仕組みと生成モデルを組み合わせ、テキスト生成を強化する手法です。
既存の外部知識を取り込むことで、RAG は文脈に沿い、情報量のあるテキストを生成しやすくします。この組み合わせにより、従来の生成モデルの限界を補い、生成テキストを事実と文脈に根拠づけられます。RAG は情報過多の問題にも対応します。関連性の高い情報だけを効率よく取り出し、生成テキストへ組み込むことで、一貫性と正確さを高めます。RAG は NLP の大きな前進であり、文脈をより正しく捉えたテキスト生成を実現します。
この手法の例として、ナレッジベースを使ってサポート依頼に答えるカスタマーサービス用チャットボットがあります。
検索拡張生成(RAG)では、ナレッジの投入(knowledge seeding)は既存ソースの外部情報を生成プロセスへ取り込むことを指します。クエリは、これらのソースから関連知識を取り出し、一貫して文脈に沿った正確なテキスト生成に使う仕組みです。どちらも以下に示します。
- クライアントのアップロード: API エンドポイントへドキュメントを POST します。
- 入力の処理: Workers で受信リクエストを処理し、Queues にメッセージを送って処理バックログへ追加します。
- バッチ処理: Queues で コンシューマー を起動し、入力ドキュメントをバッチで処理して下流の過負荷を防ぎます。
- 埋め込みの生成: Workers AI の テキスト埋め込みモデル を呼び出して、ドキュメントの埋め込みベクトルを生成します。
- ベクトルの保存: 埋め込みベクトルを Vectorize に挿入します。
- ドキュメントの保存: ドキュメントを D1 に挿入して永続化します。
- Ack/Retry の仕組み: コンシューマーでドキュメントごとに Queues Runtime API を使い、成功 / エラーを通知します。必要に応じて Queues が再試行をスケジュールします。
- クライアントのクエリ: API エンドポイントへクエリを GET します。
- 埋め込みの生成: Workers AI の テキスト埋め込みモデル を呼び出して、受信クエリの埋め込みベクトルを生成します。
- ベクトル検索: クエリのベクトル表現で Vectorize を検索し、関連ベクトルを取得します。
- ドキュメントの参照: Vectorize の検索結果をもとに、D1 から関連ドキュメントを取得します。
- テキスト生成: 元のクエリと取得したドキュメントをコンテキストとして Workers AI の テキスト生成モデル に渡し、応答を生成します。