Apache Solrにおけるハイブリッド検索技術の解析

検索技術の課題とハイブリッド検索の必要性

近年、ベクトル検索技術は高次元データの類似性評価に広く利用されているが、その限界も明らかにされている。ベクトル検索の主な課題は以下の3點である。

  1. 説明性の欠如:高次元ベクトルの數値は語義を直接示さず、個々の次元が関連性に與える影響を明示的に説明できない。
  2. キーワードマッチングの不足:ユーザーが習慣的にキーワードを検索する際、ベクトル検索はキーワードの出現を無視する可能性があり、検索結果の位置がずれる。
  3. 結果の多様性の欠如:ベクトル検索は類似度に基づく結果を返すため、重複した結果が発生しやすく、多様性を確保するための追加処理が必要となる。

これらの課題に対応するため、Apache Solrはベクトル検索とキーワード検索を組み合わせたハイブリッド検索を実裝している。

Apache Solrのハイブリッド検索実裝

機能とバージョンの進化

Apache Solrは以下の進化を遂げており、ハイブリッド検索の実現を可能にしている。

  • Solr 9.0:KNN検索を初めてサポート(2022年5月)
  • Solr 9.1:ベクトル検索にデフォルトでprefilterを導入
  • Solr 9.6:KNNクエリの柔軟性が向上し、prefilterinclude tagsexclude tagsなどのパラメータをサポート

検索フェーズの戦略

1. Unionによる結果の統合

語義検索(KNN)とキーワード検索を組み合わせるため、Booleanクエリパーサーを使用する。

{!edismax qf=text} keyword_query AND {!knn field=vector_field topK=10} vector_query

結果セットは両者の結果數の合計となり、重複はSolrが自動で除去する。

2. Intersectionによる結果の統合

語義検索結果とキーワード検索結果の重複部分を抽出する。後処理(post-filter)と同様のメカニズムだが、クエリフェーズで処理する。

3. フィルターメカニズム

  • prefilter:KNN検索フェーズで候補を絞り込み、候補セットのサイズを削減
  • post-filter:結果セットの後処理でフィルタリングを行うが、結果數が予期せず減少する可能性がある
  • タグ制御include tags / exclude tagsでフィルタの適用範囲を管理

排序フェーズの戦略

1. 得點の組み合わせ方法

  • 加算方式:キーワード得點(0-1正規化)とベクトル類似度得點(例:コサイン類似度)を加算し、functionクエリパーサーで公式を定義する
{!func} sum(normalized_lexical_score, vector_similarity_score)
  • 乗算方式:異なるスケールの得點を組み合わせる場合に適した方法

2. 學習によるランク付け(Learning to Rank, LTR)

  • トレーニングセットの構築:クエリ-ドキュメント対を用意し、ランクを指定
  • 特徴の定義:キーワード得點(正規化後の語義得點)とベクトル類似度得點(例:浮動小數點32bitによるベクトル內積)
  • モデル選択:線形モデル、決定木、ニューラルネットワークなど
  • Solrでのサポート:Solr 6.4から導入され、Solr 9.3ではベクトル類似度を特徴としてサポート

今後の展開方向

1. Rank Fusion

複數の検索関數とソート関數を組み合わせたハイブリッド戦略を実現。結果の順位に基づいて統合する方法であり、単一のスコアに依存しない。Solrでは技術的課題が存在するが、今後の開発で検討が進む。

2. ベクトル検索の最適化

KNN検索の性能向上と柔軟性の拡張を図る。歐氏距離やコサイン類似度など、多様な類似度計算方式をサポートする予定。

3. LTRの深化

LTRモデルの自適応能力を高め、より多くの語義特徴を組み合わせる。複雑な特徴組み合わせやモデル訓練プロセスの改善が進む。

結論

Apache Solrのハイブリッド検索は、ベクトル検索の限界を補うための重要な技術として注目されている。キーワード検索とベクトル検索を組み合わせることで、説明性、キーワードマッチング、結果の多様性を向上させることができる。今後はRank FusionやLTRの進化により、さらなる検索精度の向上が期待される。実裝においては、検索フェーズとソートフェーズの戦略を明確にし、柔軟なパラメータ調整を行うことが重要である。