RAG(Retrie-Augmented Generation)をデモから本番サービスへと移行するチームは、有用なアシスタントか、それともノイズの多いアシスタントかを分けるいくつかの重要な決断に直面します。チャンキング、埋め込みモデル、ベクトルストア、ハイブリッド検索、評価という5つの設計上の選択が、実際のユーザーが体験する精度、再現率(recall)、およびレイテンシを左右します。
プロトタイプから本番環境への移行が重要な理由
ほとんどのチュートリアルでは、数十行のコードでRAGパイプラインを動作させることには成功しますが、実際のトラフィックを処理するために必要なエンジニアリングの厳密さには至っていません。
1. チャンキング戦略 – 最初の品質ゲート
チャンクサイズが最も重要です。大きすぎるチャンクは、無関係なテキストによって信号(重要な情報)をかき消してしまい、小さすぎるチャンクは、モデルが首尾一貫した回答を生成するために必要な周囲のコンテキストを削ぎ落としてしまいます。固定サイズの分割は、ソース資料の自然な構造を無視してしまいます。
実践的な目安
- 論理的な境界で分割する:ドキュメントの見出し、記事の段落、コードの関数定義など。
- チャンクは正確な検索ができる程度に小さく保ちつつ、LLMの生成ステップのために、より大きな親セクションを保持します。この「親・子(parent-child)」パターンにより、リトリーバーはピンポイントなスニペットを提示でき、ジェネレーターは事実に基づいた回答を維持するために十分なコンテキストを確認できます。
2. 埋め込みモデル – 類似性の判断基準
埋め込みモデルは、テキストを類似性検索エンジンが比較するためのベクトルに変換します。OpenAIのtext-embedding-3-largeのような強力な汎用モデルは、ほとんどのドメインにおいて堅実なベースラインとなります。コーパスが、法律意見書、医療記録、技術仕様書などの高度に専門化された分野である場合は、ドメイン特化型のモデルをテストしてください。ただし、自社のデータで具体的な改善が見込めることを確認してからにしてください。
切り替えるタイミング
- アプリケーションにとって重要な関連性スコア(例:コンテキスト精度(context precision)の向上)において、測定可能な利得が見られる場合にのみ切り替えてください。
3. ベクトルデータベース – ストアのスケーリング
既存のインフラストラクチャと予想されるベクトル数に適合するベクトルストアを選択してください。
- pgvectorはPostgreSQL内で動作し、最大100万個程度のベクトルを快適に処理できます。すでにリレーショナルデータベースを運用しており、メンテナンスの手間を抑えたいチームに最適です。
- Qdrantは100万〜1億の範囲で真価を発揮し、大規模なコーパスに対してより高いスループットと低いレイテンシを提供します。
- Pineconeはフルマネージドのクラウドサービスを提供し、セルフホスティングによる運用負荷を排除します。
4. ハイブリッド検索とリランキング – 意味と正確性のバランス
純粋なベクトル検索は意味的な類似性に優れていますが、ユーザーが期待する正確なキーワード一致を見逃すことがあります。ハイブリッド検索は、ベクトルインデックスの上に従来のBM25キーワードインデックスを重ね、2つの結果リストを融合させます。Reciprocal Rank Fusion (RRF)は、両方のリストにおけるランクに基づいて各候補にスコアを割り当て、それらを組み合わせることで、どちらかのリストで上位に表示されたアイテムの優先度を高めます。
リランキング(再ランキング)は、最終的な精度のフィルターを追加します。ハイブリッド検索の後、上位N個(通常は50個)の候補をクロスエンコーダー(クエリとドキュメントのペアを共同でスコアリングするモデル)に渡します。クロスエンコーダーのスコアが元の類似性スコアに置き換わり、LLMに渡す前に最も関連性の高いチャンクを選択できるようになります。この追加ステップにより、特に長文やノイズの多いコーパスにおいて、回答の質が目に見えて向上することがよくあります。
5. 評価と棄権 – 重要な指標の測定
測定できないシステムを改善することはできません。RAGASフレームワークは、RAGパイプラインの健全性を総合的に捉える4つの指標を提案しています。
- Context Precision – 検索されたチャンクのうち、実際に回答を含んでいる割合。
- Context Recall – 関連するすべてのチャンクのうち、検索された割合。
- Faithfulness – 生成された回答が検索されたコンテキストの範囲内に留まり、ハルシネーション(幻覚)を回避している度合い。
- Answer Relevance – 最終的な回答が元のクエリにどの程度適合しているか。
これらの指標を、本番環境のトラフィックを反映したローリングテストセットで追跡してください。
最後に見落とされがちな安全策が、**棄権(abstention)**です。確信度が低いにもかかわらずモデルに無理やり回答させるのではなく、Faithfulness(忠実性)やRelevance(関連性)のスコアに閾値を設定し、「わかりません」という回答をトリガーするようにします。ユーザーは、自信満々だが間違っている回答よりも、不確実であることを明確に認める回答を好みます。また、このフォールバック(代替策)は、ダウンストリームのサポートコストを削減します。
これら5つの領域を、一度設定したら終わり(set-and-forget)の構成ではなく、継続的な意思決定のポイントとして扱うことで、RAGを派手なデモから信頼できる本番サービスへと進化させることができます。その成果は、素早く回答し、トピックから逸れず、沈黙すべき時を知っているシステムです。
