はじめに
これまでの記事では、キーワードベースの全文検索を中心に扱ってきました。 利用者が適切なキーワードを入力できれば、全文検索は非常に効果的です。 しかし、「どういうキーワードで検索すればいいかわからない」「概念的な質問に答えてほしい」というニーズには、キーワード検索だけでは対応が難しい場合があります。
本記事では、検索技術のスペクトラムを整理し、キーワード検索からセマンティック検索へどのように進化するかを解説します。
対象読者
AI 検索に興味があるが、概念を整理したい方
セマンティック検索の導入を検討している方
Fess の AI 関連機能を理解したい方
検索技術のスペクトラム
検索技術は、単純なものから高度なものまで、以下のようなスペクトラムを形成しています。
| 技術 | 仕組み | 特徴 |
|---|---|---|
| キーワード検索 | 入力語と文書中の語を照合 | 高速・確実。語の一致が必要 |
| ファジー検索 | 類似した綴りの語も照合 | タイプミスへの対応 |
| シノニム検索 | 同義語を展開して照合 | 表記揺れへの対応(手動設定) |
| セマンティック検索 | 意味の類似度で照合 | 語の一致なしでも関連文書を発見 |
| ハイブリッド検索 | キーワード + セマンティックの組み合わせ | 両方の長所を活かす |
キーワード検索の限界
キーワード検索は多くの場面で有効ですが、以下のような場面で限界が見えます。
語彙のミスマッチ
利用者が使う言葉と、ドキュメントで使われている言葉が異なるケースです。
例: 利用者が「給料の振込先を変更したい」と検索しても、社内文書では「給与口座の変更手続き」と記載されている場合、キーワードが一致しない可能性があります。
シノニム(第8回参照)で部分的に対応できますが、すべての語彙の組み合わせを事前に登録することは現実的ではありません。
概念的な検索
「リモートワークに関する社内ルール」のように、特定のキーワードではなく概念で検索したいケースです。 この場合、「在宅勤務」「テレワーク」「出社ルール」「勤怠管理」など、関連する様々なドキュメントが対象になり得ます。
セマンティック検索の仕組み
ベクトル表現(エンベディング)
セマンティック検索の基本は、テキストを「ベクトル(数値の配列)」に変換することです。 このベクトルは、テキストの「意味」を数学的に表現したものです。
意味が近いテキスト同士は、ベクトル空間上で近い位置に配置されます。 例えば、「犬」と「ペット」のベクトルは近く、「犬」と「自動車」のベクトルは遠くなります。
検索時の動作
利用者が検索クエリを入力
クエリをベクトルに変換
インデックス内のドキュメントベクトルとの類似度を計算
類似度が高い順にドキュメントを返却
これにより、キーワードが完全に一致しなくても、意味的に関連するドキュメントを見つけることができます。
Fess でのセマンティック検索
Fess はセマンティック検索プラグインを通じて、ベクトルベースの検索を実現できます。
セマンティック検索の有効化
セマンティック検索プラグインをインストール
エンベディングモデルの設定
インデックスの再構築(既存ドキュメントのベクトル化)
エンベディングモデルの選択
テキストをベクトルに変換するためのモデル(エンベディングモデル)を選択します。
選択の観点は以下の通りです。
言語対応: 日本語を適切に扱えるか
精度: ベクトルの品質(意味の捉え方の正確さ)
速度: 変換にかかる時間
コスト: API 利用料、ハードウェア要件
ハイブリッド検索: Rank Fusion
セマンティック検索は強力ですが、万能ではありません。 固有名詞の検索や完全一致が必要なケースでは、キーワード検索の方が適切です。
ハイブリッド検索の考え方
ハイブリッド検索は、キーワード検索とセマンティック検索の両方を実行し、結果を統合します。
Fess では Rank Fusion(ランク融合)を使って、異なる検索手法の結果をマージします。 具体的には、RRF(Reciprocal Rank Fusion)というアルゴリズムにより、両方の検索結果で上位に来るドキュメントが最終的に上位にランクされます。
ハイブリッド検索のメリット
キーワード検索の「確実性」とセマンティック検索の「柔軟性」を両立
固有名詞はキーワード検索でカバー
概念的な検索はセマンティック検索でカバー
どちらか一方だけよりも、総合的な検索品質が向上
導入の判断基準
セマンティック検索をすべての環境に導入すべきかというと、そうとは限りません。
導入を検討すべきケース
検索ログに「ゼロヒットクエリ」が多い
利用者から「キーワードがわからない」という声がある
自然言語での質問に対応したい(第19回の RAG の前提)
多言語ドキュメントのクロス言語検索を強化したい
まだ不要なケース
キーワード検索 + シノニムで十分な検索品質が得られている
ドキュメント数が少なく、利用者が適切なキーワードを知っている
計算リソース(GPU やクラウド API 費用)が限られている
段階的な導入
まずキーワード検索 + シノニム(第8回)で品質を改善
それでもゼロヒットが多い場合にセマンティック検索を検討
ハイブリッド検索で両方の恩恵を得る
まとめ
本記事では、キーワード検索からセマンティック検索への進化の道筋を整理しました。
検索技術のスペクトラム(キーワード→ファジー→シノニム→セマンティック→ハイブリッド)
セマンティック検索の仕組み(ベクトル表現と類似度計算)
Fess でのセマンティック検索とハイブリッド検索(Rank Fusion)
導入の判断基準と段階的アプローチ
次回は、セマンティック検索をさらに発展させ、RAG による AI アシスタントを構築します。