RDS for MySQL は、エンタープライズレベルのベクトルデータ処理機能を提供します。最大 16,383 ディメンションのベクトルデータのストレージと計算をネイティブにサポートし、主要なベクトル操作関数を含み、高度に最適化された Hierarchical Navigable Small World (HNSW) アルゴリズムを使用して効率的な近傍探索を行います。全次元のベクトル列にインデックスを作成できます。
特長
RDS for MySQL は、ベクトルストレージ、類似度計算、高性能なインデックス作成など、ベクトルデータ処理をネイティブにサポートします。大規模なセマンティック検索、AI レコメンデーション、マルチモーダル分析などのシナリオに対応した、すぐに使えるベクトルソリューションを提供します。標準の SQL インターフェイスを使用して、高精度なベクトルマッチングと複雑なビジネスロジックをシームレスに組み合わせることができます。これにより、低コストで互換性の高いアーキテクチャを使用して、革新的な AI アプリケーションを迅速にデプロイできます。
高次元ベクターの効率的なストレージ、アクセス、計算:
VECTORデータの型を使用すると、最大 16,383 ディメンションの浮動小数点ベクターデータを保存できます。 この機能は標準 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 プロトコルと完全に互換性があります。Java Database Connectivity (JDBC)/ORM ツールおよび主要な開発者フレームワークをサポートしています。DTS や DMS などの Alibaba Cloud サービスと統合し、データ同期、管理、バックアップ、リカバリなど、完全なライフサイクル機能を提供します。新しいクラスターを作成することなく、ワンクリックで既存のインスタンスをアップグレードできます。
適用範囲
データベースバージョン:MySQL 8.0。
マイナーエンジンバージョン:
20251031以降。ご利用のインスタンスがこのバージョン要件を満たしていない場合は、マイナーエンジンバージョンをアップグレードするか、メジャーデータベースバージョンをアップグレードしてください。この機能には、次の制限事項が適用されます:
ベクトルインデックスは、InnoDB エンジンを使用するテーブルにのみ作成できます。
テーブルのプライマリキーの長さは 256 バイトを超えることはできません。
inplace構文を使用して、ベクトルインデックスを作成、変更、または削除することはできません。ベクトルインデックスを
INVISIBLEに設定することはできません。ベクトルインデックスを含むテーブルは、ごみ箱機能をサポートしていません。
ベクトルインデックスでのデータ変更とクエリは、Read Committed (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 -- COSINE 距離が小さいほど、ベクトルはより類似していることを意味します
LIMIT 2;