ベクトル検索の概念
ベクトル検索は、Cassandra 5.0 に追加された新機能です。これは、大規模なデータセット内で関連性の高いコンテンツを見つけるための強力な手法であり、特に AI アプリケーションで役立ちます。ベクトル検索は、ストレージアタッチインデックス (SAI) も利用し、後者の新モジュール性を活用しています。ベクトル検索は、SAI の拡張性を検証する最初の事例です。
データベースに保存されたデータは有用ですが、そのデータのコンテキストはアプリケーションにとって非常に重要です。アプリケーションでの機械学習により、ユーザーは製品の推奨を受けたり、類似した画像をマッチングしたり、その他多くの機能を利用できます。機械学習モデルは、以前に見られていないデータセットからパターンを見つけたり、意思決定を行ったりできるプログラムです。アプリケーションで機械学習モデルを強化するために、ベクトル検索は保存されたデータベースデータの類似性比較を行い、明示的に定義されていない可能性のあるデータの関連性を発見します。
機械学習モデルで類似性比較を行うための重要な鍵の 1 つは、特定のオブジェクトまたはエンティティの類似性を表す浮動小数点数の配列である埋め込みベクターを保存する機能です。ベクトル検索は、その機能を高可用性 Apache Cassandra データベースにもたらします。
ベクトル検索の基礎は、テキストや画像を浮動小数点数の高次元ベクターとしてコンパクトに表現した埋め込みにあります。テキスト処理の場合、埋め込みはテキストを機械学習モデルにフィードすることで生成されます。これらのモデルは通常、ニューラルネットワークを使用して入力を固定長のベクターに変換します。単語が高次元ベクターとして表現される場合、目的は、類似した単語がベクタースペースで互いに近くになり、類似していない単語が互いに遠くになるようにベクターを配置することです。この方法でベクターを作成することは、セマンティックまたは構造的な類似性を保持すると呼ばれます。埋め込みはテキストのセマンティックな意味を捉えるため、クエリは従来の用語ベースのアプローチとは対照的に、テキストのより微妙な理解に依存できます。
大規模言語モデル (LLM) は、データの文脈的な埋め込みを生成し、クエリの埋め込みを最適化します。LLM によって生成されたようなトレーニング済みの埋め込みは、テキスト分類、感情分析、機械翻訳などの自然言語処理 (NLP) タスクで使用できます。ほとんどすべての種類のデータを埋め込み、ベクトル検索で良好な結果を得ることができます。モデルが改善し続けるにつれて、結果の品質も向上し続けます。
ストレージアタッチインデックス (SAI)
SAI は、データベースがベクトル検索やその他の検索インデックスを使用するための比類のない I/O スループットを提供する必須の機能です。SAI は、任意のベクターデータ型カラムにカラムレベルのインデックスを追加する、高度にスケーラブルでグローバルに分散されたインデックスです。
SAI は、セマンティクスをキャプチャするために、クエリとコンテンツ (ドキュメント、単語、画像などの大きな入力項目を含む) の両方をインデックス付けする、利用可能なインデックス機能を提供します。
SAI の詳細については、「ストレージアタッチインデックス」ドキュメントを参照してください。
インデックスをドロップして再構築しないと、インデックス設定を変更できません。 |
インデックスを作成してからデータをロードすることをお勧めします。この方法により、データロード時にインデックスの同時構築を回避できます。
新しいベクター CQL データ型
ベクトル検索をサポートするために、新しいベクターデータ型が CQL に追加されました。これは、埋め込みベクターを保存および取得するように設計されています。