セマンティック検索を理解する
セマンティック検索の基礎を見てみましょう。
- 標準の字句検索とどのように異なるか。
- ベクター埋め込みとは
- ベクター データベースの機能
セマンティック検索とは
標準の字句検索 (キーワード検索) は、一致する文字を使用してドキュメントにクエリを実行します。 たとえば、ドキュメントに文字 light が表示されるため、クエリ "light" はテキスト "bright light" と一致します。
字句検索はあいまい一致を使用して拡張できます。たとえば、"lights" というクエリは、1 文字の欠落 (lihgts の不足や s, と g の入れ替わり) にも関わらず、"bright light" というテキストやミススペルの h とマッチさせることができます。 あいまい一致や ステミング などの他の手法は役に立ちますが、この手法はシノニムまたは意味的に似た言語 (異なる言い回し、スラング、技術的なボキャブラリなど) と一致する必要があります。構文検索で最も関連性の高い検索結果を提供するには、作成者はキーワードをメタデータまたはテキスト自体に埋め込む必要があります (これは扱いにくいユーザー エクスペリエンスになる可能性があります)。
セマンティック検索を入力します。 セマンティック検索では、文字の類似性は使用されません。 代わりに、単語と語句の概念の数値表現を使用します。 これらの数値表現は、埋め込みベクトルまたは単に 埋め込みと呼ばれます。
2 つの埋め込み関数が数値的に似ている場合は、意味的にも似ています。 この類似性は、キーワードの重複をテストするよりも一般的です。これは、正確なキーワードの選択や言い回しの影響を受けにくいためです。
セマンティック検索を実行するには、最初にクエリの埋め込みベクターを生成します。 次に、そのベクトルをベクトルのデータベースと比較します。 クエリの埋め込みに最も近い埋め込みは、クエリと最も意味的に似たドキュメントです。
ほとんどのリレーショナル データベースのユース ケースでは、 n 次元ベクトルを格納し、それらの間の数値距離を計算する必要はありません。 効率的なセマンティック検索には 、ベクター データベース の機能が必要です。

埋め込み
埋め込みは、セマンティクスの数値表現です。 埋め込みは n 次元ベクトルとして表されます。 n 個の数値の配列です。 各ディメンションは、埋め込みモデルによって決定されるセマンティック品質を表します。

2 つの埋め込みベクトルが同じ方向を指している場合、"bright" や "sunny" などの同様の概念を表します。互いに離れている場合は、"悲しい" や "幸せ" などの反対の概念を表します。埋め込みモデルの構造とトレーニング データによって、類似と異なると見なされる内容が決まります。
埋め込みをテキストや画像やオーディオなどのあらゆる種類のデータに適用できます。 重要な部分は、モデルまたは関数に基づいてデータを n 次元埋め込みベクトルに変換することです。 埋め込みの数値の類似性は、対応するデータのセマンティック類似性を示します。
2つのn次元ベクトルv1とv2の数値の類似性は、書かれたv1·v2によって与えられる。 ドット積を計算するには、各ディメンションの値をペアで乗算し、結果を合計します。
dot_product(v1, v2) = SUM(
v1[0] * v2[0],
v1[1] * v2[1],
...,
v1[n-1] * v2[n-1],
v1[n] * v2[n]
)
埋め込みは単位ベクトル (長さ 1 のベクトル) であるため、ドット積はベクトルの コサインの類似性と等しく、-1 (正確に反対の方向) と 1 (まったく同じ方向) の間の値です。 コサインの類似性が 0 のベクトルは直交しています。意味的には無関係です。
主成分分析 (PCA) を使用して 3 次元空間に投影することで、n 次元空間を視覚化できます。 PCA は、ベクトル次元を減らす標準的な手法です。 結果は、 n 次元空間の簡略化された視覚化可能な投影になります。 この方法でドキュメント埋め込みをレンダリングすると、より類似したドキュメントがクラスターにグループ化され、さらに異なるドキュメントがさらに離れていることが示されます。
これらの定義を考えると、ドキュメント埋め込みのコレクションに対してクエリのセマンティック検索を実行するのは、数学的に簡単です。
- 言語モデルを使用してクエリ埋め込みを生成します。
- 各ドキュメントの事前計算された埋め込みに対して、クエリ埋め込みのドット積を計算します。
- ドット積を -1 から 1 の数値に並べ替えます。
- 最も関連性の高い (意味的に類似した) ドキュメントのスコアが最も高く、最も関連性の低い (意味的に異なる) ドキュメントのスコアは最も低くなります。
数学的には単純ですが、これはリレーショナル データベースの単純なクエリやパフォーマンスの高いクエリではありません。 この種のベクター類似性クエリを格納して処理するには、 ベクター データベースを使用します。
ベクトル データベース
ベクター データベースは、埋め込みなどの多次元ベクトルの格納と計算を最適化します。 特に、ベクター データベースは、ベクトル類似性クエリを実行するための高速かつ正確なドット積計算を提供します。
ベクター類似性検索には、いくつかのユース ケースがあります。
- クエリ イメージの埋め込みのような画像を検索する
- クエリ テキストに似た意味的にドキュメントを検索する
- レコメンデーション システムの類似の機能と評価を持つ製品を検索する
セマンティック検索は、ベクター データベースにクエリを実行して、格納されている各埋め込みへのクエリ埋め込みの類似性を確認します。 その後、アプリケーションは対応する埋め込みデータを取得できます。
選択できるネイティブ ベクター データベースとデータベース拡張機能は多数あります。 次の Azure サービスは、ベクター データベースのニーズを満たすのに役立ちます。