Anthropic Contextual Retrieval

Anthropicは、Contextual Retrievalを導入しました。これは、Retrieval-Augmented Generation (RAG) のための前処理技術であり、コンテキスト付き埋め込み(contextual embeddings)とBM25を組み合わせることで検索失敗率を49%削減し、さらにrerankingと統合することで67%削減します。この手法は、従来のRAGのチャンクが、AIモデルによって正確に検索または利用されるために必要な背景情報を失ってしまうという「コンテキストの難問(context conundrum)」を解決します。

従来のRAGにおけるコンテキストの難問

従来のRAGシステムは、通常、効率を維持するためにドキュメントを小さなチャンク(多くの場合、数百トークン)に分割します。しかし、このプロセスはしばしば重要なコンテキストを破壊してしまいます。例えば、「その会社の収益は3%増加した」というチャンクは、そのチャンクがどの会社やどの期間を指しているのかをシステムが判断できない場合、役に立ちません。その結果、ユーザーが特定のエンティティに関する具体的な質問をした際に、検索失敗につながります。

Contextual Retrievalの仕組み

Contextual Retrievalは、各チャンクが埋め込みまたはインデックス化される前に、短く簡潔な説明的なコンテキスト(通常は50-100トークン)を各チャンクの先頭に付加することで、コンテキストの喪失問題を解決します。

Claudeによる実装

手動のアノテーションを避けるため、AnthropicはClaude 3 Haikuを使用して、このコンテキストを自動生成します。モデルにはドキュメント全体と特定のチャンクが提供され、検索のための検索リトリーバル目的で、そのチャンクをドキュメント全体の中で位置づけるための短いコンテキストを提供するようプロンプトされます。

前処理パイプライン

  1. Context Generation: Claudeがドキュメント全体に基づき、各チャンクに対して簡潔なコンテキストを生成します。
  2. Contextual Embeddings: コンテキスト化されたチャンクは、ベクトル埋め込みに変換されます。
  3. Contextual BM25: コンテキスト化されたチャンクは、語彙的マッチングのためにBM25 (Best Matching 25) を用いてインデックス化されます。
  4. Hybrid Search: システムは、rank fusionを使用して、セマンティック埋め込みとBM25の両方の結果を組み合わせ、最も関連性の高いチャンクを特定します。

パフォーマンス・ベンチマーク

Anthropicは、コードベース、フィクション、科学論文など、さまざまなドメインにおいてこの手法をテストしました。1 minus recall@20を指標(関連するドキュメントが検索に失敗する割合を測定)として使用し、以下の改善が見られました:

  • Contextual Embeddings: top-20-chunkの検索失敗率を35%削減(5.7%から3.7%へ)。
  • Contextual Embeddings + Contextual BM25: 検索失敗率を49%削減(5.7%から2.9%へ)。
  • Contextual Retrieval + Reranking: 上記の手法をrerankingステップ(Cohere rerankerを使用)と組み合わせることで、検索失敗率を67%削減(5.7%から1.9%へ)。

コストとレイテンシの最適化

Prompt Caching

すべてのチャンクに対してコンテキストを生成することは、コストがかかる場合があります。Anthropicは、これらのコストを削減するためにprompt cachingを活用しています。リファレンス・ドキュメントを一度キャッシュし、各チャンクに対してそれを参照することで、コンテキスト化されたチャンクを生成するための1回限りのコストは、約**$1.02 per million document tokens**(800トークン・チャンクと8kトークン・ドキュメントに基づく)となります。

Rerankingのトレードオフ

rerankingは精度を精度を大幅に向上させますが、実行時のステップが追加されるため、レイテンシとコストが増加します。開発者は、rerankされるチャンクの数(例:150個を検索し、20個にrerankする)と、要求される応答速度のバランスを定る必要があります。

主要な実装推奨事項

Anthropicの広範なテストに基づき、AnthropicはRAGのパフォーマンスを最大化するための以下のガイドラインを提供しています:

  • Use Hybrid Search: 埋め込み(embeddings)とBM25を組み合わせることは、埋め込み単独の使用よりも優れています。
  • Select High-Performing Embeddings: GeminiとVoyageの埋め込みは、特に効果的であることが分かりました。
  • Optimize Chunk Volume: モデルに渡すチャンクの数を、5個または10個ではなく、top 20 chunksとして渡すことが、一般的に優れたパフォーマンスを示しました。
  • Stack Techniques: コンテキスト付き埋め込み(contextual embeddings)、コンテキスト付きBM25、コンテキスト付きBM25、およびrerankingステップを組み合わせることで、最高のパフォーマンスが達成されます。

Sources

関連