ベクトル検索とキーワード検索、AIネイティブなシステムはどう使い分けるか
社内FAQやマニュアル、契約書といった文書をAIに検索させたいという要件は増えていますが、「検索」の中身は一様ではありません。意味の近さで探すベクトル検索と、単語の一致で探すキーワード検索は、得意なことも苦手なことも異なります。どちらを選ぶか、あるいは両方を組み合わせるかは、実装の話である以前に、要件定義の段階で決めておくべき設計判断です。
キーワード検索が得意なこと
キーワード検索(全文検索)は、入力された単語がそのまま含まれる文書を探す仕組みです。ElasticsearchやOpenSearch、あるいはデータベースの全文検索機能(PostgreSQLのtsvectorなど)がこれにあたります。
- 型番・製品コード・固有名詞の完全一致に強い(「A-2024-105」のような品番を、揺れなく正確にヒットさせたい場合)
- 法律・契約書のように、表現の一言一句が意味を持つ文書の検索に向いている
- 検索結果が「なぜヒットしたか」を説明しやすい(この単語が含まれているから、という単純な理由)
反面、「有給休暇の繰越について」と検索したときに、文書側が「年次有給休暇の次年度への持ち越し」という表現しか使っていないと、単語が一致せずヒットしません。表現の揺れに弱いのが弱点です。
ベクトル検索が得意なこと
ベクトル検索は、文章を「意味」を表す数値の並び(ベクトル)に変換し、意味の近さで文書を探す仕組みです。pgvector(PostgreSQLの拡張)、Pinecone、Azure AI Search、Weaviateといった製品・機能がこれにあたります。
- 表現が違っても意味が近ければヒットする(「有給の繰越」と「年次有給休暇の次年度への持ち越し」を同じ質問として扱える)
- 利用者が正確な用語を知らない状態での検索に強い(社内用語や専門用語を知らない新入社員が、自分の言葉で質問しても探し当てられる)
- 「〜に似た事例」「〜と近い内容」といった、曖昧な類似性の検索ができる
反面、型番や固有名詞の完全一致には向いていません。意味が近いと判断されてしまい、本来別物であるはずの型番違いの製品がヒットしてしまう、といったことが起こり得ます。また「なぜヒットしたか」を利用者に説明しにくいという性質もあります。
要件定義で判断すべきこと
上流工程でこの2つを選ぶ際は、次の観点で整理すると判断しやすくなります。
| 観点 | キーワード検索が向く | ベクトル検索が向く |
|---|---|---|
| 検索する対象 | 型番・規程番号・固有名詞 | FAQ・マニュアル・過去の問い合わせ履歴 |
| 利用者の知識 | 検索語を正確に知っている | 検索語を正確には知らない |
| ヒット理由の説明責任 | 求められる(監査対応など) | 求められない、または許容される |
| 表現の揺れ | 少ない(社内規程で表現が統一されている) | 多い(利用者ごとに聞き方が違う) |
多くの業務システムでは、この2つはどちらか一方ではなく併用するのが現実的です。「型番検索は完全一致のキーワード検索、FAQ検索は意味検索」のように、機能ごとに使い分ける設計や、両方の検索結果を組み合わせて順位付けするハイブリッド検索という構成も一般的になっています。
ハイブリッド検索という選択肢
ハイブリッド検索は、同じクエリに対してキーワード検索とベクトル検索の両方を実行し、結果をスコアで統合して返す方式です。OpenSearchやAzure AI Searchなど、主要な検索基盤の多くがこの機能を標準で備えるようになってきました。
要件定義の観点では、「完全一致も意味的な近さも両方拾いたいが、実装をシンプルに保ちたい」という場合の落としどころになります。ただし、統合スコアの重み付け(キーワード一致をどれだけ優先するか)はチューニングが必要になるため、「導入して終わり」ではなく、運用しながら調整する前提で計画に組み込む必要があります。
精度検証の項目を要件に含める
どちらの方式を選ぶにせよ、要件定義の段階で「検索精度をどう検証するか」を決めておくことが重要です。実際の利用者が使いそうな質問文を10〜20件程度用意し、期待する文書が上位に出てくるかを、開発・導入の各段階でチェックする項目として組み込んでおきます。
検索は「動くか動かないか」ではなく「使える精度で動くか」が本質的な評価軸になるため、この検証工程を省略すると、リリース後に「検索しても欲しい情報が出てこない」という不満につながりやすくなります。
まとめ
ベクトル検索とキーワード検索は優劣の関係ではなく、それぞれ得意な検索対象が異なります。型番のような完全一致が重要な検索にはキーワード検索、利用者の言葉の揺れを吸収したいFAQ的な検索にはベクトル検索、そして両方が必要な場面ではハイブリッド検索を検討する。要件定義の段階でこの判断軸を持っておくことが、AIネイティブな検索システムの精度を左右します。