【今更聞けない】全文検索/セマンティック検索/ベクトル検索/ハイブリッド検索の違い
はじめに
この記事では全文検索・セマンティック検索・ベクトル検索・ハイブリッド検索の違いについて解説しています。
弊社のプロジェクトの中で、GPTを活用した社内文書検索などのナレッジが溜まっています。社内の会話で「全文検索が…」とか「セマンティックだと全文検索より…」などいろんな検索手段の名前が飛び交っていて、正直細かく違いやメリデメがわかっていませんでした。
名前からして検索の流れはざっくり分かるものの、この際しっかり言語化できるようになりたくて執筆しています。
ちなみにどの検索方法もAzure AI Searchでは対応しています。GPTとの親和性が高いので、このあたりの概要を理解していることは重要だと考えます。
それでは、それぞれの検索方法について、比較検討を行いましょう!
全文検索
全文検索とは、ドキュメントやDB内のすべての文書から検索キーワードが含まれる部分を探す方法です。例えば、"赤いバラ"というキーワードで検索をかけると、そのフレーズが文書内にある場所・ドキュメントをすべて見つけ出します。Googleなどの検索エンジンは全文検索の技術が用いられています。キーワード検索とも呼ばれるようですね。
全文検索には大きく分けてgrep型と索引型の2つの種類があります。
grep型
検索のたびに文書を1から10まで調べる方法です。実装がシンプルになり小規模なデータに対する検索速度は良好な一方で、データ量が増えると検索する文書数が単純に増えるため速度が低下します。
索引型
あらかじめ文書から索引(インデックス)を作成して検索する方法です。
大量のデータに対しても高速に検索ができるメリットがあります。
「単語AはドキュメントXの10行目とドキュメントYの30行目にでてくる」というようなインデックスのリストを作り、その中から検索するためgrep型に比べて検索対象が狭まります。そのため処理が高速になるのです。
しかし、インデックスの作成に時間がかかったりドキュメントの更新のたびにインデックスの再構築が必要になったりしてしまうデメリットもあります。
ビジネスシーンにおいては大量のデータから検索することを求められることが多いため、索引型の全文検索が一般的です。
セマンティック検索
セマンティック検索は、検索キーワードの意味や意図を理解し、その解釈に基づいて最も関連性の高い文書を探す方法です。例えば、「ジョブズの発明品」と検索すれば、「Mac」や「iPhone」などの結果が得られます。高度な自然言語処理(NLP)やAIの技術が利用され、曖昧な表現でも関連性を判断できます。
ChatGPTなどのLLMとの親和性の高い技術だと思いました。
メリット:
文脈を理解するため、自然言語でのクエリに対してより適切な結果を提供できます。
例えば「バット」が野球の道具を指すのか、コウモリのことを指すのかの判断は、文脈によって変わります。文脈を踏まえて意味を切り分けて検索できるのでユーザー満足度を高めることも出来ます。
デメリット:
意味を解析するための高度なアルゴリズムやリソースが必要で、その精度は必ずしも完全ではありません。
また、高度なNLPやAI技術を求められるので、開発や運用コストは高くなってしまうでしょう。
ベクトル検索
テキストや画像などの非構造化データから意味とコンテキストを取り込み、数値表現(ベクトル)に変換します。検索クエリも同様にベクトル化してその距離を測ることで関連性を評価する方法がベクトル検索です。
近似近傍(ANN)アルゴリズムを使用して類似データを検索します。
このベクトル検索は、セマンティック検索に内包されます。セマンティック検索の種類の1つとしてベクトル検索があるといえます。
ベクトル検索は、従来のキーワー検索に比べてより高速で、より関連性の高い結果を生成できます。
メリット:
文書の意味的な近さを考慮できるため、より関連性の高い結果を見つけられます。例えば「王」と「女王」はベクトルの距離が近いですが、「王」と「アップル」はベクトルの距離が遠いイメージです。
画像や動画などの非構造データもベクトル化できるので、クエリの意味に近しい画像や動画なども検索できるのは便利ですね。
また、大量のデータに対しても高速に検索を実行できます。なぜなら数学的な計算に基づいて検索をしているためです。
デメリット:
ベクトル化の結果は直感的には理解しづらいと思います。また、一部の意味の曖昧さを排除できない可能性もあります。
コスト面では、ベクトル化するための開発コストや学習データが必要です。
例えば、会社の正式名称と略称があり、それが同義の言葉だという学習データが必要です。弊社の場合、「株式会社ヘッドウォータース」と「HWS」は同義だというデータを学習させなければ、おそらくヘッドウォータースかHWSどちらの単語を使うかによって検索結果が大きく代わってきてしまうかもしれません。
ハイブリッド検索
ハイブリッド検索の定義は様々あります。
本記事では、Azure AI Search(旧Azure Cognitive Search)に搭載されているキーワード検索とベクトル検索を組み合わせた文書検索の手法をハイブリッド検索と定義します。
キーワード検索による明確さ・正確性と、ベクトル検索の意味的な類似度比較の強みを併せ持つ検索手法であるため、より高い精度で文書を検索することができます。ハイブリッド検索を使う理由はまさにこれです。
キーワード検索やベクトル検索の処理速度や検索精度のデメリットを解消しつつ、
メリットを更に強く発揮できるのがこのハイブリッド検索のようです。
個人的に、GPTを使ったソリューションでRAGを活用する際には、現時点ではハイブリッド検索を実装することが推奨されていく気がします。
おわりに
それぞれの検索手法を解説していきました。
特にIT業界に入りたての方や、生成AIまわりの知識をキャッチアップ中の方は、〇〇検索の言葉の定義をしっかりと理解できた上で業務に望むことが大切だと思います。
各検索手法の特徴について、この記事で概要レベルで理解いただければ幸いです!
最後まで読んでいただきありがとうございました。
Discussion
分かりやすい!有難う。