社内検索を生まれ変わらせる:Elasticsearch + LLMのハイブリッド検索
社内文書の検索は、キーワード検索だけでは「言葉は違うが意味は同じ」質問に弱く、ベクトル検索だけでは 固有名詞の完全一致に弱いという弱点がある。両者を組み合わせたハイブリッド検索を導入することで、 検索結果の的中率を大きく改善できる。
背景・現状の課題
企業内のドキュメントが増えるほど、目的の情報にたどり着くまでの時間が長くなる。従来の全文検索は キーワードの一致度で結果を並べるため、言い回しが違うだけで見つからないことが多い。ベクトル検索は 意味的な近さで結果を返せるが、型番・エラーコードのような完全一致が重要な検索には向かない。
検索方式の比較
| 方式 | 強み | 弱み |
|---|---|---|
| 全文検索(Elasticsearch等) | 固有名詞・型番など完全一致が重要な検索に強い | 言い回しの違いに弱い |
| ベクトル検索 | 意味的に近い文書を発見できる | 完全一致が重要な検索には不向き |
| ハイブリッド検索 | 両方のスコアを統合し、両方の弱点を補い合う | スコアの統合方法(重み付け)にチューニングが必要 |
実装のポイント
ハイブリッド検索の構築では、全文検索とベクトル検索それぞれのスコアをどう統合するかが精度を左右する。 単純な加重平均だけでなく、上位N件を全文検索で絞り込んでからベクトル検索で並べ替える段階的な方式など、 データの性質に応じた設計が必要になる。検索結果をLLMに渡して回答を生成する場合は、検索結果の文書を そのまま引用させ、LLMが独自に情報を補完しないようプロンプトで制約することが、誤情報の混入を防ぐ鍵になる。
実装上の落とし穴と対策
- チャンク分割の粒度:文書を検索用に分割する際、粒度が粗すぎると関連度が下がり、細かすぎると文脈が失われる。段落単位を基本にしつつ、見出し構造を保持する分割方式が扱いやすい。
- インデックスの陳腐化:元文書が更新されてもインデックスが自動更新されない設計だと、古い情報が検索結果に残り続ける。文書更新のたびにインデックスを再構築する運用を組み込む。
- 権限管理の欠落:全社検索にすると、アクセス権限のない文書まで検索結果に出てしまうリスクがある。検索結果には文書ごとの閲覧権限チェックを必ず組み込む。
導入後の使われ方
検索精度が上がっても、そもそも社員が検索を使わなければ効果は出ない。定着させる工夫として、 Slack等の普段使うツールに検索ボットを組み込み、検索窓を開かずに質問できるようにする方法が効果的だった。 また、検索結果に「この情報の最終更新日」を必ず表示するようにしたところ、古い情報を鵜呑みにする 誤用が減り、利用者からの信頼度も上がった。ツールの精度改善だけでなく、日常業務への組み込み方まで 設計することが、実際の利用定着には欠かせない。
まとめ
ハイブリッド検索は、全文検索とベクトル検索それぞれの弱点を補い合う設計である。スコア統合の チューニングと、インデックスの鮮度・権限管理の運用まで含めて設計することで、実用的な社内検索基盤になる。
公式ドキュメント: Elasticsearch Reference