ベクトルによるセマンティック検索

公開: 2022-11-01

検索に関する最新ニュースをフォローしている場合は、ベクター検索について聞いたことがあるでしょう。

そして、そのトピックについて詳しく学ぼうと、そのトピックを掘り下げ始めたとしても、相手は混乱してしまうかもしれません。 その数学を大学に戻さなかったのですか?

建物のベクトル検索は難しい。 それを理解する必要はありません。

そして、ベクトル検索が未来ではなく、ハイブリッド検索が未来であることを理解することも同様に重要です。

ベクトルとは

機械学習のコンテキストでベクトルについて話すときは、次のことを意味します。ベクトルは、何かを表す数値のグループです。

それは、画像、単語、またはほとんど何でもかまいません。

もちろん、問題は、これらのベクトルがなぜ役立つのか、どのように作成されるのかということです。

まず、これらのベクトルがどこから来るのかを見てみましょう。 簡単に言えば、機械学習です。

Jay Alammar は、ベクターとは何かについて、おそらくこれまでに書かれた最高のブログ記事を書いています

ただし、要約すると、機械学習モデルは項目を入力し (ここからは単語だけを想定します)、他の何かを予測するための最適な式を見つけようとします。

たとえば、「ミツバチ」という単語を取り込むモデルがあり、「ミツバチ」が「昆虫」や「スズメバチ」と同様の文脈で見られることを正確に予測する最適な式を見つけようとしているとします。

そのモデルがその最適な式を見つけたら、「ハチ」という単語を、たまたま「昆虫」や「ハチ」の数字のグループに似た数字のグループに変換できます。

ベクトルが強力な理由

ベクトルが非常に強力な理由は次のとおりです。Generative Pre-trained Transformer 3 (GPT-3) や Google の言語モデルなどの大規模な言語モデルは、何十億もの単語や文を考慮に入れるため、これらの接続を作成し始めて、本当にインテリジェントになることができます。

その知性を検索に適用することに人々が興奮する理由は簡単に理解できます。

ベクター検索は、私たちが何十年も愛してきたキーワード検索に取って代わるだろうと言う人さえいます.

ただし、問題は、ベクトル検索がキーワード検索全体に取って代わるものではないということです。 キーワード検索が莫大な価値を維持できないと考えることは、新しくて輝かしいものに楽観的になりすぎます。

ベクトル検索とキーワード検索にはそれぞれ独自の強みがあり、組み合わせて使用​​すると最も効果的です。

ロングテール クエリのベクトル検索

あなたが検索の仕事をしているなら、クエリのロングテールについてよく知っているでしょう。

Chris Anderson がデジタル コンテンツを説明するために広めたこの概念は、 (検索クエリに対して) 他のすべてよりもはるかに人気のあるアイテムがいくつかあるが、それでも誰かが欲しがっている個々のアイテムがたくさんあることを示しています。

だからそれは検索です。

いくつかのクエリ (「ヘッド」クエリとも呼ばれます) はそれぞれ頻繁に検索されますが、大多数のクエリはほとんど検索されません。

数値はサイトごとに異なりますが、平均的なサイトでは、総検索数の約 3 分の 1 が数十件のクエリから発生しているのに対し、検索ボリュームのほぼ半分は、最も人気のある 1,000 件以外のクエリから発生しています。

ロングテール クエリは長くなる傾向があり、自然言語クエリである場合もあります。

私の会社 Algolia の調査によると、クエリの 75% は 2 語以下であることがわかりました。 クエリの 90% は 4 語以下です。 次に、クエリの 99% に到達するには、13 語が必要です。

ただし、常に長いとは限りません。あいまいな場合があります。 女性ファッションのウェブサイトの場合、「藤色のドレス」はロングテール クエリになる可能性があります。なぜなら、人々はその色をあまり求めないからです。 Web サイトでブレスレットが販売されていたとしても、「リストレット」も同様にめったに見られないクエリである可能性があります。

ベクトル検索は、通常、ロングテール クエリに最適です。 リストレットがブレスレットに似ていることを理解でき、同義語が設定されていなくてもブレスレットが表面化します。 誰かが藤色の何かを検索すると、ピンクや紫のドレスが表示されることがあります。

ベクトル検索は、長いクエリや自然言語のクエリでもうまく機能します。 「飲み物を冷たく保つもの」は、よく調整されたベクトル検索で冷蔵庫を表示しますが、キーワード検索では、テキストが製品説明のどこかにあることを願っています.

言い換えれば、ベクトル検索は検索結果の再現率、つまり検索結果の数を増やします。

ベクトル検索の仕組み

ベクトル検索は、上記の数字のグループを取得し、ベクトル検索エンジンに「これらの数字のグループを線としてグラフ化すると、どれが最も近くなるか?」と尋ねることによって行われます。

これを概念化する簡単な方法は、数が 2 つしかないグループを考えることです。 グループ [1,2] は、グループ [2,500] よりもグループ [2,2] に近くなります。

(もちろん、ベクトルには数十の数値が含まれているため、数十の次元で「グラフ化」されているため、視覚化するのは簡単ではありません。)

「医者」や「薬」などの単語を表すベクトルは、「医者」や「岩」という単語よりもはるかに似ているため、類似性を判断するこのアプローチは強力です。

ベクトル検索の欠点

ただし、ベクトル検索には欠点があります。

まずコストです。 上で説明したすべての機械学習でしょうか。 費用がかかります。

ベクトルの保存は、キーワードベースの検索インデックスを保存するよりもコストがかかります。 これらのベクトルでの検索も、ほとんどの場合、キーワード検索よりも遅くなります。

現在、ハッシュはこれらの問題の両方を軽減できます。

はい、より技術的な概念を紹介していますが、これは基本を理解するのがかなり簡単なもう 1 つの概念です。

ハッシュは、一連の手順を実行して、一部の情報 (文字列や数値など) を数値に変換します。数値は、元の情報よりもメモリを消費しません。

ハッシュを使用してベクトルのサイズを縮小しながら、ベクトルを便利にするもの、つまり概念的に類似したアイテムに一致させる機能を維持できることがわかりました。

ハッシュを使用することで、ベクトル検索を大幅に高速化し、ベクトルが全体的に使用するスペースを減らすことができます。

詳細は非常に専門的ですが、重要なのはそれが可能であることを理解することです。

キーワード検索の継続的な有用性

これは、キーワード検索がまだ役に立たないという意味ではありません。 一般に、キーワード検索はベクトル検索よりも高速です。

さらに、結果がそのようにランク付けされる理由を理解しやすくなります。

潜在的な単語一致としてクエリ「texas」と「tejano」と「state」の例を取り上げます。 純粋なキーワード検索の観点から比較すると、明らかに「tejano」の方が近いです。 ただし、どちらがベクトル検索アプローチに近いかを判断するのは簡単ではありません。

キーワードベースの検索では、テキストベースのアプローチを使用してレコードを検索するため、「texas」が「tejano」に似ていると認識されます。

レコードにクエリの内容とまったく同じ (またはタイプミスを考慮して特定のレベルの差の範囲内にある) 単語が含まれている場合、そのレコードは関連性があると見なされ、結果セットに返されます。

言い換えれば、キーワード検索は、検索結果の精度、または返されるレコードが少なくても関連性があることを保証することに重点を置いています。

ヘッドクエリに有益なキーワード検索

このため、キーワード検索は、ヘッド クエリ (最も人気のあるクエリ) に対して非常に優れたパフォーマンスを発揮します。

ヘッド クエリは短くなる傾向があり、最適化も容易です。 つまり、何らかの理由でキーワードがレコード内の適切なテキストと一致しない場合、多くの場合、分析によって検出され、同義語を追加できます

キーワード検索はヘッド クエリに最適に機能し、ベクトル検索はロング テール クエリに最適に機能するため、この 2 つは協調して最適に機能します。

これは、ハイブリッド検索として知られています。

ハイブリッド検索とは、検索エンジンが 1 つのクエリに対してキーワード検索とベクトル検索の両方を使用し、どの検索アプローチでレコードがもたらされたかに関係なく、レコードを正しくランク付けすることです。

検索ソース全体でのレコードのランキング

2 つの異なるソースから得られたランキング レコードは簡単ではありません。

この 2 つのアプローチは、その性質上、記録の採点方法が異なります。

ベクター検索ではスコアが返されますが、一部のキーワード ベースのエンジンでは返されません。 キーワード ベースのエンジンがスコアを返したとしても、2 つのスコアが等しいという保証はありません。

スコアが同等でない場合、キーワード エンジンのスコア 0.8 は、ベクター エンジンのスコア 0.79 よりも関連性が高いとは言えません。

もう 1 つの方法は、ベクター エンジンまたはキーワード エンジンのいずれかのスコアリングを通じてすべての結果を実行することです。

これには、ベクトル エンジンから追加のリコールを取得できるという利点がありますが、いくつかの欠点もあります。 ベクター エンジンから得られたこれらの追加のリコール結果は、キーワード スコアから関連性があるとは評価されません。

別の方法として、すべての結果 (キーワードまたはその他) をベクトル スコアリングで実行することもできますが、これは時間とコストがかかります。

フォールバックとしてのベクトル検索

そのため、一部の検索エンジンはこの 2 つをブレンドしようとさえせず、代わりに常にキーワードの結果を最初に表示し、次にベクターの結果を 2 番目に表示します。

ここでの考え方は、検索でゼロまたは少数の結果が返された場合、ベクトルの結果にフォールバックできるということです。

ベクター検索は、再現率の向上やより多くの結果を見つけることを目的としているため、キーワード検索では見つからなかった関連性のある結果が見つかる可能性があることに注意してください。

これはまともな一時しのぎですが、真のハイブリッド検索の未来ではありません。

真のハイブリッド検索は、異なるソース間で比較可能なスコアを作成することにより、同じ結果セット内の複数の異なる検索ソースをランク付けします。

今日、このアプローチについて多くの研究が行われていますが、それをうまく行ってエンジンを公開している人はほとんどいません。

これはあなたにとって何を意味するのでしょうか?

現時点でできる最善のことは、おそらく、じっと座って、業界で起こっていることを最新の状態に保つことです。

ベクターとキーワードベースのハイブリッド検索は、今後数年間で提供される予定で、データ サイエンス チームを持たないユーザーも利用できるようになります。

それまでの間、キーワード検索は依然として価値があり、後でベクトル検索が導入されたときにのみ改善されます。

その他のリソース:

  • セマンティック検索: 仕組みと対象者
  • セマンティック検索での NLP と NLU の仕組み
  • 検索エンジンのしくみ

主な画像: pluie_r/Shutterstock