ベクトル エンベディングは、意味的類似度が N 次元ベクトル空間の距離で表される方法でコンテンツをマッピングするため、非構造化データの有用な表現です。これにより、類似性の検索、ナレッジベース内の関連コンテンツの検索、ユーザーが生成した複雑なクエリに最も一致するアイテムの取得が容易になります。
一部の専用データベースはベクトル エンベディングのみをサポートしていますが、他のデータベースはベクトル エンベディング以外の多くのデータやクエリタイプをサポートしています。豊富な実際のデータを基に生成 AI アプリケーションを構築するには、幅広いデータ型とクエリタイプのサポートが不可欠です。ベクトル エンベディングを使用したセマンティック クエリのメリットが明らかになると、ほとんどのデータベースでベクトルのサポートが追加される予定です。将来的には、すべてのデータベースがベクトル データベースになると考えています。
Vertex AI のベクトル検索が高パフォーマンスの生成 AI アプリケーションの構築にどのように役立つかを確認します。Vertex AI のベクトル検索は、Google Research が開発したスケーラブルで効率的なベクトル検索技術であるスケーラブルな最近傍探索(ScaNN)をベースにしており、大規模なデータセットやリアルタイム検索の要件を処理するのに最適です。ベクトル検索とエンベディングの詳細については、こちらの動画をご覧ください。また、こちらのクイックスタート ガイドを使ってみてください。
他のデータ型と同様に、大規模なベクトルセットを効率的にクエリするにはインデックスが必要です。ベクトル データベースはベクトル専用のインデックスをサポートしています。他の多くのデータ型(テキストや数値など)は論理的な順序が 1 つであるのとは異なり、ベクトルには実際のユースケースに対応する自然な順序がありません。代わりに、ドット積、コサイン類似度、ユークリッド距離などの距離指標に関して他のベクトルに最も近い k 個のベクトルをクエリするのが最も一般的なユースケースです。この種類のクエリは「k 最近傍」(KNN)クエリと呼ばれます。
残念ながら、効率的な KNN クエリのための一般的なアルゴリズムはありません。特定のベクトル q に k 個の最近傍を確実に見つけるには、q と他のすべてのベクトルとの間の距離を計算する必要があります。しかし、k の近似最近傍探索(「ANN」)を効率的に見つけるアルゴリズムもあります。これらの ANN アルゴリズムは、ある程度の精度(具体的には、再現率であり、アルゴリズムは実際の最近傍の一部を省略する可能性があります)と引き換えに、速度を大幅に向上させます。多くのユースケースでは、ベクトル エンベディングの計算プロセスがすでに不正確として扱われているため、多くの場合、パフォーマンスが大幅に向上する代わりに、再現率の低下を許容できます。
他のベクトルからの距離に基づくベクトルの ANN クエリを可能にするために、ベクトル インデックスは、一般的に近接するベクトルのクラスタがグループ化されるような構造になっています。一般的なベクトル インデックス タイプは、各リストが特定のクラスタ内のベクトルを表すリストの集合、各ベクトルがいくつかの最近傍に接続されたグラフ、枝が親ノードのクラスタのサブセットに対応するツリー、およびその他のものとして構造化することができます。各インデックス タイプによって、検索速度、再現率、メモリ消費、インデックス作成時間などの要因間のトレードオフが決まります。
しかし、ほとんどのデータベース クエリは、意味的類似性だけに基づくものではありません。たとえば、ユーザーが探している書籍の内容が「子どもと犬についての心温まる物語」に似ているが、ペーパーバック形式で入手できる 20 ドル未満の書籍に限定したい場合。特殊目的のベクトル データベースは、追加のフィルタリング機能(「制限」と呼ばれることもあります)が限られている場合があります。一方、汎用データベースでは、SQL などの標準言語を使用して豊富な述語を作成できます。ベクトル類似性の順序付けと組み合わせることで、非常に強力で表現力豊かなクエリを実現できます。
ベクトル エンベディングは非構造化データの意味を表現する機能と、ベクトル データベースの近くのベクトルを効率的に検索する機能を組み合わせることで、多くの重要なユースケースを実現します。
ベクトル データベースが重要なのは、関係述語やテキスト検索技術だけでは解決が困難または不可能なさまざまな問題を解決できるからです。
ベクトル データベースは、関連するチャット履歴やビジネス固有の非構造化コンテンツなどの重要なビジネス コンテキストやアプリケーション コンテキストを簡単に取得して、LLM が複雑なユーザークエリに応答できるため、生成 AI アプリケーションに適しています。
また、自然言語を使用してコンテンツを検索したり、例で照会したりすることも簡単にできます。