通常のRAG(Retrieval-Augmented Generation)は「文書をベクトル化 → 検索 → 回答生成」という流れを取りますが、OpenAIは ベクトル化を必要としないRAG の事例を公開しています。
これは、大規模な文書から関連情報を直接抽出し、LLMに回答を生成させるアプローチであり、特に 大きなコンテキストウィンドウを持つLLM の強みを活かした方法です。
本記事では、この仕組みを解説します。
OpenAIの「ベクトル化不要RAG」の仕組み
OpenAIが提案するRAGは、主に以下の5つのフェーズで構成されます。特徴的なのは「コンテンツ分割」と「コンテンツ選択」が 多段階で繰り返される 点です。
1. ファイルロード(文書読み込み)
- 数百〜千ページ規模のPDF(例: 法律文書)を読み込み、テキストを抽出。
- GPT-4.1 Mini(100万トークンのコンテキスト)に収まるように、例えば920ページ程度までを処理対象に調整。
- これにより「前の内容を忘れる」問題を防ぎます。
2. コンテンツ分割 & コンテンツ選択
-
この工程は3回ほど繰り返されます。
-
狙い: 一度に細かく分割しすぎるとモデルが混乱するため、人間の読解のように「粗→細」へ段階的に絞り込みます。
-
プロセス例
- 文書を20チャンクに分割 → モデルに渡し、関連チャンクを3つ抽出
- 抽出チャンクをさらに分割 → 6チャンクを生成 → 再度選別
- 最終的に「関連性が高く情報が濃い少数のチャンク(例: 3つ)」を抽出
-
使用モデル: GPT-4.1 Mini
- 大規模コンテキスト処理が可能
- コスト効率が高い
-
Scratchpad: モデルは選択前に思考ログを持ち、次フェーズに引き継ぎ精度を向上。
3. 回答生成(Answer Generation)
- 選ばれた少数のチャンク + ユーザー質問 → GPT-4.1 に渡して回答を生成。
- 正確性を重視し、コスト制約も緩和される段階です。
4. 回答検証(Answer Verification)
- 回答はそのまま返さず、GPT-4 で「幻覚がないか」「引用が正しいか」をチェック。
- 検証をパスしたもののみユーザーに返却。
利点と課題
利点
- ベクトル化不要: 埋め込み生成やDB構築が不要。
- 文書更新に即応: 修正が即システムに反映。
- 人間的読解に近い: 段階的絞り込みにより精度向上。
- 広範な情報検索: 従来のRAGより文書全体から柔軟に検索可能。
課題
- クエリコストが高い: 複数回のLLM利用により、1回あたり数十セント規模のコスト。
- 応答時間が長い: フェーズ数が多いため、レスポンスは遅め。
- 文書サイズ制約: LLMのコンテキスト長に依存。
日本語適用時のポイント
仕組み自体は言語非依存ですが、日本語文書で利用する場合には以下が重要です。
-
チャンク設計:
日本語は1トークン ≒ 1.5漢字程度とされるため、段落や文節単位で自然に分割する工夫が必要。 -
文脈保持:
OpenAI事例では「オーバーラップ」という言葉は明示されていませんが、
実際には「階層チャンク(Small-to-Big Retrieval)」に近いアプローチで文脈を失わないよう配慮されています。
まとめ
「ベクトル化不要RAG」は、
- 大規模コンテキストLLMを活かし
- 多段階の分割 & 選択で精度を高め
- 回答検証で信頼性を確保する
という新しいRAGの形です。
特に 日本語文書にも適用可能 であり、ベクトル検索ベースのRAGに代わる選択肢となる可能性があります。