← 記事一覧
RAG

本番品質のRAGシステムを設計する

検索拡張生成(RAG)は、大規模言語モデルを自社データに根拠づける標準的な手法になりました。デモは簡単ですが、本番システムはそうではありません。その差はアーキテクチャ——どう取り込み、検索し、ランク付けし、評価するか——にあります。

1. 取り込みとチャンク分割

検索品質は、クエリが走る前に決まります。文書(表・見出し・コード)を忠実にパースし、固定文字数ではなく意味の境界でチャンク分割します。出典・セクション・タイムスタンプ・権限などのメタデータを付与し、フィルタリングと引用を可能にします。内容の変化に応じて増分で再インデックスします。

2. 埋め込みとベクトルストア

ドメインと言語に適した埋め込みモデルを選び、インデックスの両側で同じモデルを使います。ベクトルDBは運用システムであり、おもちゃではありません。フィルタ検索、メタデータインデックス、シャーディング、更新コストを設計に織り込みます。生成時にクリーンで引用可能なコンテキストを渡せるよう、元テキストもベクトルと併せて保存します。

3. ハイブリッド検索とリランキング

ベクトル検索だけでは厳密な語句を取りこぼし、キーワード検索だけでは意味を取りこぼします。両者(密ベクトル+BM25)を組み合わせて結果を統合し、上位候補をクロスエンコーダでリランクして、本当に関連する箇所を上位へ押し上げます。広めに検索し、積極的にリランクし、密度の高いコンテキストだけをモデルへ渡します。

4. 根拠づけと生成

検索結果のコンテキストのみから回答し、出典を引用し、情報が不十分なときは「わかりません」と答えるようモデルに指示します。UIに引用を返し、ユーザーが検証できるようにします。これが、それらしく話すチャットボットを、信頼できるアシスタントへと変えます。

5. 評価と運用

測定できないものは改善できません。固定したテストセットで検索指標(再現率・適合率)と回答指標(忠実性・関連性)を追跡し、変更のたびに再実行します。クエリ・取得チャンク・フィードバックをログ化し、改善のフライホイールを作ります。クエリあたりのレイテンシとコストを一級のSLOとして監視します。

うまく作れば、RAGはモデルそのものより、その周囲の検索パイプラインが主役です。取り込み・ハイブリッド検索・リランキング・評価を正しく設計すれば、モデルはほぼ自ずと機能します。