RDS for MySQL は、深く統合されたエンタープライズグレードのベクトルデータ処理を提供します。最大 16,383 次元のベクトルデータのストレージと計算をネイティブにサポートし、主流のベクトル関数を統合し、高度に最適化された階層的ナビゲーブルスモールワールド (HNSW) アルゴリズムを使用して効率的な最近傍検索機能を提供します。ベクトル列にインデックスを作成できます。
機能
RDS for MySQL は、ベクトルストレージ、類似度計算、高性能なインデックス作成を含むベクトルデータ処理をネイティブにサポートしています。大規模なセマンティック検索、インテリジェントレコメンデーション、マルチモーダル分析などのシナリオ向けに、すぐに使えるベクトルソリューションを提供します。標準の SQL インターフェイスを使用して、高精度なベクトルマッチングと複雑なビジネスロジックをシームレスに統合します。この統合により、低コストで互換性の高いアーキテクチャ上で、革新的な AI アプリケーションを迅速に構築およびデプロイできます。
-
高次元ベクトルの効率的なストレージ、アクセス、計算:最大 16,383 次元の浮動小数点ベクトルデータの格納をサポートし、
VECTORデータ型を導入しています。標準の SQL インターフェイスをサポートし、ベクトル化されたデータを直接バッチで書き込み、更新、管理できます。次の表に、サポートされているベクトル処理関数を示します。関数名
説明
VECTOR_DIMベクトル内の次元数を返します。
VEC_FROMTEXT文字列をベクトルに変換します。
TO_VECTORSTRING_TO_VECTORVEC_TOTEXTベクトルを文字列に変換します。
FROM_VECTORVECTOR_TO_STRINGVEC_DISTANCE2 つのベクトル間の距離を計算します。オペランドの 1 つがインデックス付きの列である場合、関数はインデックスの距離タイプを自動的に検出します。
VEC_DISTANCE_EUCLIDEANVEC_DISTANCE_COSINE -
高性能ベクトルインデックス:ベクトルインデックスは、深く最適化された HNSW (階層的ナビゲーブルスモールワールド) アルゴリズムを使用します。SIMD ハードウェアアクセラレーション、ブルームフィルターによる検索プルーニング、LIMIT 条件のプッシュダウンなどの技術を使用して、大規模なベクトルデータのリトリーブ効率を大幅に向上させます。また、ベクトルデータとスカラーデータのハイブリッドストレージと共同クエリもサポートしています。
-
オープンソースエコシステムとすぐに使えるユーザビリティ:この機能は MySQL プロトコルと完全に互換性があり、JDBC/ORM ツールや主要な開発フレームワークをサポートしています。DTS や DMS などの Alibaba Cloud サービスと統合し、データ同期、管理、バックアップ、リカバリなどのライフサイクル全体の機能を提供します。新しいクラスターを作成することなく、ワンクリックで既存のインスタンスをアップグレードできます。
適用範囲
-
データベースバージョン:MySQL 8.0 (マイナーエンジンバージョン 20251031 以降)。インスタンスがバージョン要件を満たしていない場合は、マイナーエンジンバージョンをアップグレードするか、メジャーエンジンバージョンをアップグレードできます。
-
この機能には次の制限があります:
-
ベクトルインデックスは、InnoDB エンジンを使用するテーブルにのみ作成できます。
-
テーブルの主キーの長さは 256 バイトを超えることはできません。
-
inplace構文を使用してベクトルインデックスを作成、変更、または削除することはできません。 -
ベクトルインデックスを
INVISIBLEに設定することはできません。 -
ベクトルインデックスを含むテーブルで ごみ箱 機能を使用することはできません。
-
ベクトルインデックスに対するデータの変更とクエリは、リードコミッティド (RC) 分離レベルのみをサポートします。
-
HNSW アルゴリズムのランダム性 (ランダムなレベル割り当てやヒューリスティックアルゴリズムなど) のため、プライマリ/スタンバイインスタンス上のベクトルインデックスのグラフ構造が同一であることは保証されません。
-
ソースデータベースのストアドプロシージャまたは関数が
vector型を使用している場合、ベクトルをサポートしていない移行先データベースへの同期または移行は失敗します。
-
パラメーター管理
パラメーター
|
パラメーター |
説明 |
|
|
• 説明:デフォルトのベクトル距離タイプ。
|
|
|
• 説明:HNSW インデックスのデフォルトの M 値 (グラフ内の各ノードの最大出次数)。 |
|
|
• 説明:HNSW インデックス クエリのデフォルトの ef_search 値 (検索範囲)。 |
|
|
• 説明:HNSW インデックスキャッシュが使用できる最大メモリ (バイト単位)。 |
パラメーターの変更
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
-
左側メニューで、[パラメーター設定] をクリックします。
-
[編集可能なパラメーター] タブで、変更するパラメーターを検索し、その値を設定します。
-
[OK] をクリックし、[パラメーターの送信] をクリックします。表示されたダイアログボックスで、変更を有効にするタイミングを選択します。
すべてのベクトル関連パラメーターは動的です。変更はインスタンスを再起動することなく、すぐに有効になります。
ベクトルストレージの有効化と使用
インスタンスを再起動することなく、ベクトル機能を有効または無効にできます。
ステップ 1:ベクトルストレージの有効化
-
RDS コンソール に移動し、対象のリージョンを選択してから、インスタンス ID をクリックします。
-
[基本情報] ページの [実行ステータス] セクションで [ベクトルストレージ] を見つけ、[有効にする] をクリックします。
-
ステータスが [有効] に変わると、この機能はすぐに有効になります。
ステップ 2:テーブルとベクトルインデックスの作成
-- 5 次元のベクトル列と HNSW インデックスを持つテーブルを作成
CREATE TABLE product_embeddings (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255),
embedding VECTOR(5) NOT NULL,
-- ベクトルインデックスを作成し、M (グラフの接続性) と距離メトリックを指定
VECTOR INDEX idx_embedding(embedding) M=16 DISTANCE=COSINE
);
ステップ 3:データの挿入
-- VEC_FROMTEXT 関数を使用してベクトルデータを挿入
INSERT INTO product_embeddings (product_name, embedding) VALUES
('product_A', VEC_FROMTEXT('[0.1, 0.2, 0.3, 0.4, 0.5]')),
('product_B', VEC_FROMTEXT('[0.6, 0.7, 0.8, 0.9, 1.0]')),
('product_C', VEC_FROMTEXT('[0.11, 0.22, 0.33, 0.44, 0.55]'));
ステップ 4:ベクトル類似度検索の実行
-- 指定されたベクトル '[0.1, 0.2, 0.3, 0.4, 0.51]' に最も類似する 2 つの製品を検索
SELECT
id,
product_name,
VEC_DISTANCE(embedding, VEC_FROMTEXT('[0.1, 0.2, 0.3, 0.4, 0.51]')) AS similarity_score
FROM
product_embeddings
ORDER BY
similarity_score ASC -- コサイン距離が小さいほど、ベクトルの類似度が高くなります
LIMIT 2;