# 文脈付き検索
## 定義
文脈付き検索(Contextual Retrieval)は、[[Anthropic]] の [[Daniel Ford]] らが 2024 年に提案した RAG 検索精度改善手法である。従来の RAG は文書をチャンクに分割して検索インデックスを作成するため、チャンク単体では文書全体の文脈が失われ、検索精度が低下する。文脈付き検索では、各チャンクをベクトル埋め込みや BM25 インデックスに格納する前に、LLM が生成した約 50〜100 トークンの文脈テキスト(チャンクが文書内でどのような役割を持つかを説明する短文)を先頭に付与する。生成段階にはオリジナルチャンクのみを使用する。(Source: [[@2024__Anthropic Engineering Blog__Introducing Contextual Retrieval]])
## 構成技術
文脈付き検索は 2 つの補完的技術から構成される:
1. **Contextual Embeddings**: チャンクのベクトル埋め込み前に文脈テキストを付与する
2. **Contextual BM25**: BM25 語彙一致インデックス作成前に文脈テキストを付与する
さらにオプションとして**リランキング**を組み合わせることで更なる精度向上が得られる。
## 文脈生成プロンプト
```
<document>
{{文書全体}}
</document>
以下のチャンクを文書全体に配置するための簡潔な文脈を提供してください。
<chunk>
{{チャンクテキスト}}
</chunk>
```
文書全体プレフィックスは全チャンクで共通のため、Claude のプロンプトキャッシングを利用すると約 $1.02/百万ドキュメントトークンの低コストで大量チャンクを処理できる。(Source: [[@2024__Anthropic Engineering Blog__Introducing Contextual Retrieval]])
## 実験結果
Anthropic の評価(Top-20 チャンク取得、4 ドメイン横断、評価指標: 1 − recall@20):
| 手法 | 失敗率 | 削減率 |
|---|---|---|
| ベースライン(標準 RAG) | 5.7% | — |
| Contextual Embeddings のみ | 3.7% | 35% 削減 |
| + Contextual BM25 | 2.9% | 49% 削減 |
| + リランキング | 1.9% | 67% 削減 |
優秀な埋め込みモデル: Voyage、Gemini Text-004。(Source: [[@2024__Anthropic Engineering Blog__Introducing Contextual Retrieval]])
> [!contradiction] 二次ソースとの数値相違
> [[joisino-否定文理解-2024]] および [[Anthropic]] エンティティページでは失敗率が「5.0% → 2.9%」と記載されている。一次資料([[@2024__Anthropic Engineering Blog__Introducing Contextual Retrieval]])では **5.7% → 2.9%** であり、ベースライン値が異なる。測定条件の差異または引用誤りの可能性がある。一次資料の数値(5.7%)を正とする。
## 横断的知見
- **BM25 の復権**: Contextual BM25 の追加でさらに 14% の削減が生じる(3.7% → 2.9%)ことは、語彙一致検索がベクトル検索単体を補完することを示す。[[LLM向け情報検索]] が指摘する「dense retrieval だけでは不十分」という問題に実証的根拠を与える。(Source: [[@2024__Anthropic Engineering Blog__Introducing Contextual Retrieval]], [[@2026__SIGIR__LLM-Oriented Information Retrieval - A Denoising-First Perspective]])
- **ノイズ除去との相補性**: [[RAGノイズ除去]] はどの文書を LLM に渡すかを絞る問題を扱い、文脈付き検索はチャンクの索引精度を上げる問題を扱う。両者は独立した軸の改善であり、スタック可能。(Source: [[@2024__Anthropic Engineering Blog__Introducing Contextual Retrieval]], [[@2026__SIGIR__LLM-Oriented Information Retrieval - A Denoising-First Perspective]])
- **否定文緩和との関係**: [[テキスト埋め込み]] の構造的制約(否定文を正文と近接させる)に対して、文脈付き検索はチャンクに肯定的な文脈情報を補完することで間接的に問題を緩和する。ただし否定文の根本的な埋め込み問題は残る。(Source: [[@2024__Anthropic Engineering Blog__Introducing Contextual Retrieval]], [[joisino-否定文理解-2024]])
## 未解決の問い
- 文脈付与のプロンプトをドメイン特化にすると、汎用プロンプトと比較して効果はどの程度変わるか?
- 否定文を含むチャンクでの取得ミス削減率は全体平均(5.7%→2.9%)と同程度か、それ以上か?
- 文脈テキストの長さ(50〜100 トークン)を変えると性能とコストのトレードオフはどうなるか?
- エンドツーエンドの生成品質(RAG 全体の最終回答品質)への影響はどの程度か?(本記事では検索精度のみ測定)
- チャンクサイズ(~800 トークン)や文書サイズ(~8k トークン)を変えたときの頑健性は?
## 関連
- [[テキスト埋め込み]] — 文脈付き検索が補完する埋め込みの限界
- [[否定文理解]] — 文脈付き検索で緩和できる問題の一つ
- [[LLM向け情報検索]] — より広い情報検索の文脈
- [[RAGノイズ除去]] — RAG の別の改善方向(検索結果の絞り込み)
- [[Anthropic]] — 提案元の組織
- [[Daniel Ford]] — 提案者
## 出典
- [[@2024__Anthropic Engineering Blog__Introducing Contextual Retrieval]] — 一次資料(Anthropic Engineering Blog, 2024-09-19)
- [[joisino-否定文理解-2024]] — 文脈付き検索に言及した二次資料