さて先日、KandaSearch では Apache Solr 9 のサポート開始を発表しました。Solr 8からのメジャーバージョンアップは実に3年ぶり。長かったですね!
ところで Apache Solr 9 の目玉機能は、なんといってもセマンティックサーチが可能となったこと。ロンウイットでは、はじめてのセマンティックサーチ導入セミナーを開催(2022年8月17日開催)しますが、ここではその概要を先行して紹介します。
セマンティックサーチとは?
セマンティックサーチの「セマンティック」とは、「意味」「意味論」などと日本語訳されます。つまりセマンティックサーチでは、人間が理解するのと同じように、検索エンジンがテキストや画像を理解して検索できます。
検索エンジン業界において、「セマンティックサーチ」という、どちらかというとマーケティング目的の用語は昔から存在しましたが、ここでいうセマンティックサーチは昔のセマンティックサーチとははっきり異なると、まず最初に断言しておきましょう。次にデモを紹介しますが、デモを見ると、検索エンジンが人間のように検索対象オブジェクト(テキスト・画像・動画・音声データ)とクエリの意味を理解して検索しているようにしか思えません。検索エンジン業界に身を置いて約20年の私は大変衝撃を受けました。
ロンウイットではアプリケーション視点でしっくりくるので、「セマンティックサーチ」という用語を用いますが、以下のように呼ばれることもあるので注意してください。正解はありません。
- セマンティック検索(サーチを検索と置き換えただけ)
- ニューラルサーチ、ニューラル検索(意味理解にニューラルネットワークを用いていることから)
- ベクトルサーチ、ベクトル検索(後述するBoolean検索との対比)
「ニューラル〜」も「ベクトル〜」も技術視点の呼称です。どのように呼ぶかは視点と好みの問題ということで、これ以上追求しないことにします。
デモ
以下のデモを用意しました。本記事執筆時現在のデモなので、将来リンクが移動したり、コンテンツが変わる可能性があることをあらかじめご了承ください。
テキスト検索(日本語)
livedoorニュースコーパスをインデクシングした検索デモです。Semantic Search
というチェックボックスをチェックするとセマンティックサーチモードで動作します(チェックがない場合は従来型のキーワード検索で動作します)。Searchボタンの右側のコンボボックスで Livedoornews
を選び、さらにその下のコンボボックスで Body Vector
を選びます。
この状態で試しに「コロナ禍」をセマンティックサーチモードで検索してみましょう。検索結果を見ると、コンピューターウイルスやセキュリティ、災害に関する記事が上位表示されていることがわかります。livedoorニュースコーパスは収集時期が2012年9月頃です。当時は「コロナ禍」という用語が世の中に存在しませんでした(試しに Semantic Search
チェックボックスのチェックを外して検索してみてください。ヒット0件となります)。それでも「コロナ禍」という用語が持つ意味と近い意味を持つ文書が上位表示されているのはまさに驚きです。
他にもいろいろなクエリ(短い文章でも可)で試してみてください。以下に私が試したクエリも示しておきましょう。
当然、インデクシングされていない記事は出てきません。クエリの意図がコーパスでカバーできていなくても、スコア上位の10件が必ず表示される仕様なので、「セマンティックサーチできてないじゃん」と短絡的に判断する前にコーパス内容をよく確認してください。
テキスト検索(英語)
HuffPost News Category Datasetをデモデータに利用しています(記事の時期は2012〜2018年)。同様にSemantic Searchのチェックボックスでセマンティックサーチモードの切り替えを行いながら、コンボボックスでHuffPostを選び、更に使用するベクトルフィールドを選びます。以下にクエリ例を示します。
英語の面白いクエリはなかなか思いつかないのですが、何か適当なクエリが見つかったらぜひ教えてください。
類似画像検索
セマンティックサーチは検索対象とクエリをベクトル化できれば、テキストではなくても検索が可能です。そこで類似画像検索のデモも作ってみました。画像データはCOCOとImagenetteを混合して使っています。
デモの使い方ですが、類似画像検索デモのサイトにアクセスし、Uploadをクリックするかドラッグ&ドロップ操作で類似画像検索の元となる画像データをデモサイトにアップロードします。アップロードした画像は保存されませんのでご安心ください。アップロードしたらSearchボタンをクリックして類似画像を検索します。以下は、私がSNSでよく使うアイコン画像を類似画像検索した結果です。私はストローをくわえているのですが、類似画像と判断されたのは、歯磨きしている人が出てきました。「何か口から細い棒が出ている人間」と判断されたようです(笑)。
検索結果として表示された画像をクリックすることでも、類似画像検索ができます。いろいろな画像でやってみてください。なんと、イラスト画像でも大丈夫です。
キーワード検索との比較
従来型のキーワード検索とセマンティックサーチを簡単に比較考察すると、以下のようになるでしょう。
- 従来型のキーワード検索では、文書に含まれるキーワードがクエリとして与えられないと、基本的にヒットできない。したがって、ある程度の業務ドメイン知識が検索者に求められる。
- 一方、セマンティックサーチでは必ずしもクエリのキーワードはヒットする必要はない。そのため、検索者は業務ドメインの知識がなくても、調べたいことを自分なりの表現にできれば検索できる。
- 類似画像検索デモでも示したように、セマンティックサーチの検索対象はテキストに限る必要がない。
- 従来型キーワード検索の性能向上のためのさまざまな施策、たとえば、キーワードの表記揺れ対策(シノニム定義など)やフィールド重み付けなどが、セマンティックサーチでは一切不要である。
技術要素比較
キーワード検索とセマンティックサーチの、技術面での比較も簡単に示しておきましょう。
キーワード検索 | セマンティックサーチ | |
---|---|---|
ベクトル化の考え方 | Bag-of-Words | Semantic |
ベクトルの特徴 | Sparse Vector | Dense Vector |
検索アルゴリズム | Boolean | ANN Vector |
他社製検索エンジンのセマンティック検索との比較
最後に、他社製の某国産検索エンジンの「セマンティック検索」と本記事のセマンティックサーチを比較しておきましょう。
他社製検索エンジンのセマンティック検索は、従来型のキーワード検索技術の上に構文解析・意味解析を付加したものとなっています。そのため、
- 検索対象はテキストのみ。
- 文書の意味を理解しているわけではない。
- 結局はキーワードが当たらないとヒットしない。(再現率ではなく)精度向上のための補助的施策にすぎない。
- 改善のためにヒューリスティックスを多用することになる。類義語辞書登録のように切りがない。
一方、本書でのセマンティックサーチは、「人が理解するようにテキスト・画像・動画・音声データを検索エンジンが理解し、検索できる」ので、
- キーワードがヒットしなくても、調べたいことの意味が記述されていればヒットする。
- 検索対象はテキストに限らない。ベクトル化できればあらゆるものが検索可能。
- テキストクエリで画像を検索したり(またはその逆)できる。
といった優位性があります。
まとめ
以上、実際に動くデモを示しながら、セマンティックサーチについて概観しました。明後日開催のはじめてのセマンティックサーチ導入では、応用例も含めてもう少し詳しくセマンティックサーチについて紹介していきます。また、セマンティックサーチを初めて導入する企業様向けに、お得なスタートアップ・パッケージのご案内も致します。お時間のある方は、ぜひご参加ください!