11. まとめと発展的アプローチ
本書のまとめ
本書では、RAG システムの回答精度を劇的に向上させるための重要技術である「BM25」と「ハイブリッド検索」、主要なデータストアの選定、実運用データソースの索引化、そして大規模データにおける実践アーキテクチャについて解説しました。
-
BM25 の役割:
単語の出現頻度と希少性(IDF)を活かし、型番やエラーコード、固有名詞などの完全一致検索において絶対的な信頼性を発揮します。
-
密ベクトル検索の役割:
文章の意味的なニュアンスや同義語を理解し、自然言語による柔軟な検索を可能にします。
-
ハイブリッド検索と2段階検索:
BM25 とベクトル検索を融合し、さらに Cross-Encoder によるリランキングを挟むことで、速度と精度の両立を実現できます。
-
データストアの適材適所:
PoC では Chroma、既存資産の活用なら PostgreSQL (pgvector)、本格的なハイブリッド運用なら Qdrant や Elasticsearch など、要件に合わせた選定が重要です。
-
大規模データにおける実装・運用の現実解:
数百万件規模のテキストでは、Pure Python(
rank_bm25)のインメモリ保持によるメモリ爆発や起動遅延を回避するため、SQLite FTS5 を用いた C 言語レベルの高速 BM25 と文字バイグラムの組み合わせが極めて有効です。また、「全件ベクトル化」のボトルネックを避け、語彙検索(BM25)、意味探索(局所ベクトルDB)、文脈推論(ローカルLLM)を適材適所で分担させる階層的ハイブリッド戦略が成功の鍵となります。
本番運用に向けた実践的ベストプラクティス
実際の業務環境で RAG を安定して運用するには、検索アルゴリズム以外にも以下の設計配慮が必要です。
▸ 適切なチャンキング(文書の分割設計)
長大なドキュメントをそのまま登録すると、検索の焦点がぼやけてしまいます。 文字数(例:300〜500文字程度)や見出し単位で適切に分割し、前後の文脈が途切れないようオーバーラップ(50文字程度)を設定することが大切です。
▸ メタデータフィルタリングの活用
社内の機密文書やマニュアルを検索する際、ユーザーの所属部署やアクセス権限、文書の作成年度などで検索対象を事前に絞り込む「事前フィルタリング」が不可欠です。 データストア選定時は、このメタデータ絞り込みが高速に機能するかを必ず確認しましょう。
▸ 検索クエリの改善(クエリ拡張やリライト)
ユーザーが入力する検索文が短すぎたり曖昧だったりする場合、LLM を使って検索キーワードを増やしたり、検索しやすい形式に言い換えたりする「クエリ拡張(Query Expansion)」を行うと検索精度がさらに向上します。
検索精度の評価手法(RAG Evaluation)
RAG の開発・改善を継続するためには、勘に頼らず数値で精度を測定する仕組みが必要です。
Ragas や TruLens といった評価フレームワークを活用すると、以下の指標を自動測定できます。
- 忠実度(Faithfulness): LLM の回答が、検索された参考文書の事実に基づいているか(ハルシネーションの測定)。
- 回答関連性(Answer Relevance): 生成された回答が、ユーザーの質問に的確に答えているか。
- 文脈適合率(Context Precision): 検索された文書群の中に、回答に必要な情報が過不足なく含まれているか。
ハイブリッド検索の重みパラメータ(weights)やチャンクサイズを変更した際には、これらの指標を継続的にトラッキングして最適解を導き出しましょう。