> [!abstract] 概要 > RAG の前処理段階で各チャンクに LLM 生成の文脈テキストを付与することで検索精度を大幅に改善する「Contextual Retrieval」を [[Anthropic]] が提案・公開した記事(2024-09-19)。ベクトル埋め込みと BM25 の両索引に文脈テキストを付与し、さらにリランキングを組み合わせると、検索失敗率をベースラインの 5.7% から 1.9% まで 67% 削減できることを示した。[[Claude 3 Haiku]] とプロンプトキャッシングを組み合わせることで約 $1.02/百万ドキュメントトークンの低コスト実装を可能にしている。 ## 記事情報 - **タイトル**: Introducing Contextual Retrieval - **著者**: [[Daniel Ford]]([[Anthropic]]) - **媒体**: Anthropic Engineering Blog - **公開日**: 2024-09-19 - **URL**: https://www.anthropic.com/engineering/contextual-retrieval - **貢献者**: Orowa Sikder、Gautam Mittal、Kenneth Lien(フィードバック)、Samuel Flamini(実装) --- ## 概要 通常の RAG パイプラインは文書をチャンクに分割する際に文書全体の文脈情報を失い、検索精度が低下する。Contextual Retrieval は各チャンクを埋め込む前に LLM が生成した短い文脈テキスト(約 50〜100 トークン)を付与することで、チャンクが文書内でどのような役割を持つかを検索インデックスに組み込む。 ## 問題設定 - **入力**: 文書コーパス + クエリ - **課題**: チャンク分割で文書全体の文脈が失われ、チャンク単体では意味が不明確になる - **必要な追加データ**: チャンクが属する文書全体のテキスト(文脈付与のため) ## 提案手法 ### アーキテクチャ 2 つの相補的技術から構成する: 1. **Contextual Embeddings**: チャンクを埋め込みに変換する前に、[[Claude 3 Haiku]] が生成した文脈テキストをチャンク先頭に付与する 2. **Contextual BM25**: BM25 語彙一致インデックスを作成する前に同様の文脈テキストを付与する 生成段階ではオリジナルチャンクのみを LLM に渡す(文脈テキストは検索索引用)。 ### 文脈生成プロンプト ``` <document> {{文書全体}} </document> 以下のチャンクを文書全体に配置するための簡潔な文脈を提供してください。 検索結果の改善を目的とします。簡潔な文脈のみを回答し、それ以外は回答しないでください。 <chunk> {{チャンクテキスト}} </chunk> ``` 文書全体プレフィックスは全チャンクで共通のため、[[Claude]] のプロンプトキャッシングを利用することで大量チャンクを低コストで処理できる。 ### 実装パラメータ - **文脈テキスト長**: 約 50〜100 トークン/チャンク - **生成モデル**: Claude 3 Haiku - **コスト**: ~$1.02/百万入力ドキュメントトークン(プロンプトキャッシング適用時) - **チャンクサイズ**: ~800 トークン - **文書サイズ**: ~8k トークン ## 実験設定 - **実験環境**: Anthropic 社内 - **評価ドメイン**: コードベース、フィクション、arXiv 論文、科学文献(4 種) - **比較対象**: 標準埋め込み RAG(ベースライン)、Contextual Embeddings のみ、Contextual Embeddings + BM25 - **評価指標**: 1 − recall@20(Top-20 内に関連文書が含まれない割合。低いほど良い) - **取得深度**: Top-20(Top-5 / Top-10 より効果的) ## 実験結果 | 手法 | 失敗率 | 削減率 | |---|---|---| | ベースライン(標準 RAG) | 5.7% | — | | Contextual Embeddings のみ | 3.7% | 35% 削減 | | Contextual Embeddings + Contextual BM25 | 2.9% | 49% 削減 | | + リランキング | 1.9% | 67% 削減 | **埋め込みモデル比較**: Voyage と Gemini Text-004 が最高性能。 ## 考察 - BM25 語彙一致検索がベクトル埋め込み単体を上回ることは、語彙的マッチングが依然として重要であることを示す。ハイブリッド検索(ベクトル + BM25)の有効性を支持する。 - 文脈付与で失敗率が 35% 改善するという結果は、チャンク分割が RAG の主要ボトルネックであるという仮説を裏付ける。 - コスト(~$1/百万トークン)は大規模 RAG システムにおいては設計選択の対象になる範囲。 ## 強み / 弱点・課題 **強み**: - 実装が単純で既存 RAG パイプラインへの組み込みが容易 - プロンプトキャッシングによる低コスト化が実証されている - 複数技術の効果が累積的に積み重なる **弱点・課題**: - 文脈付与の品質は使用する LLM と文書ドメインに依存する - リランキングは追加レイテンシを生じる - チャンク境界設計が性能に影響するため、文書ごとのチューニングが必要な場合がある - 評価指標が recall@20 のみで、エンドツーエンドの生成品質への影響が未測定 > [!contradiction] [[joisino-否定文理解-2024]] と数値が相違 > 本一次資料ではベースライン失敗率を **5.7%**、Contextual Embeddings + BM25 後を **2.9%** と報告する。[[joisino-否定文理解-2024]] および [[Anthropic]] エンティティページは **5.0% → 2.9%** と記述している。測定条件の差異または引用誤りの可能性がある。一次資料(本ソース)の 5.7% を正とする。