Contextual Retrieval の紹介
- AIモデルが特定の文脈で有用であるためには、背景知識が必要
- カスタマーサポートのチャットボットには特定のビジネスに関する知識が必要であり、法務分析ボットには過去の事例に関する膨大な知識が必要
- 開発者は一般的に Retrieval-Augmented Generation (RAG) を使ってAIモデルの知識を強化する
- 従来のRAGソリューションは、情報をエンコードする際に文脈を取り除いてしまうため、関連情報を検索できないことが多い
Contextual Retrieval の方法
- Contextual Retrieval は、RAGの検索段階を大幅に改善する方法
- Contextual Embeddings と Contextual BM25 という2つの下位技術を使用する
- 検索失敗回数を49%削減し、再ランキングと組み合わせれば67%まで削減できる
- Claude を使って Contextual Retrieval ソリューションを簡単に展開できる
単純により長いプロンプトを使う
- ナレッジベースが200,000トークン以下の場合、ナレッジベース全体をモデルに提供するほうがより良い方法である可能性がある
- Claude のプロンプトキャッシュ機能を使えば、このアプローチはより高速でコスト効率も高い
- ナレッジベースが大きくなると、よりスケーラブルなソリューションが必要になる
RAG の基本概念
- RAG は大規模なナレッジベースを扱うために使われる
- ナレッジベースを小さなテキスト断片に分割し、埋め込みモデルを使って意味をエンコードする
- ベクターデータベースに保存し、意味的類似性に基づいて検索する
- BM25 は正確な単語またはフレーズ一致を見つけるのに効果的
従来の RAG の限界
- 文書を小さな断片に分割する過程で文脈が失われることがある
- たとえば、特定企業の財務情報を探す質問に対して、十分な文脈を持たない断片が返されることがある
Contextual Retrieval の実装
- 各断片に説明的な文脈を追加して、埋め込みおよび BM25 インデックスを生成する
- Claude を使って各断片の簡潔な文脈を生成する
- プロンプトキャッシュを使ってコストを削減できる
性能改善
- Contextual Embeddings は検索失敗率を35%削減する
- Contextual Embeddings と Contextual BM25 を組み合わせると、検索失敗率を49%削減する
実装時の考慮事項
- 文書を断片に分割する方法、埋め込みモデルの選択、カスタム文脈化プロンプトなどを考慮する必要がある
- より多くの断片を含めるほど、関連情報を含む可能性が高くなる
再ランキングによる性能向上
- 再ランキングは、最も関連性の高い断片だけをモデルに渡すことで応答品質を向上させる
- 再ランキングした Contextual Embedding と Contextual BM25 は検索失敗率を67%削減する
結論
- Embeddings と BM25 を組み合わせると、より良い結果を得られる
- Voyage と Gemini の埋め込みが最も効果的
- 上位20個の断片をモデルに渡すのが最も効果的
- 文脈を追加すると検索精度が大幅に向上する
- 再ランキングは性能をさらに向上させる
GN⁺ のまとめ
- Contextual Retrieval はAIモデルの検索精度を大幅に向上させられる方法
- 特に大規模なナレッジベースを扱う際に有用
- Claude のプロンプトキャッシュ機能を使えば、コスト効率よく実装できる
- 類似した機能を持つ他のプロジェクトとして、OpenAI の GPT-3 や Google の BERT がある
1件のコメント
Hacker Newsの意見
1つ目の意見
2つ目の意見
3つ目の意見
4つ目の意見
5つ目の意見
6つ目の意見
7つ目の意見
8つ目の意見
9つ目の意見
10つ目の意見