RDS for MySQL は、深く統合されたエンタープライズグレードのベクトルデータ処理機能を提供します。最大 16,383 ディメンションのベクトルデータの格納と演算をネイティブにサポートし、主要なベクトル関数を統合し、高度に最適化された HNSW (Hierarchical Navigable Small World) アルゴリズムを使用して、効率的な最近傍検索機能を提供します。全ディメンションのベクトル列にインデックスを作成できます。
機能
RDS for MySQL は、ベクトルの格納、類似度計算、高性能なインデックス作成など、ベクトルデータ処理をネイティブにサポートしています。大規模なセマンティック検索、インテリジェントな推薦、マルチモーダル分析などのシナリオ向けに、すぐに使用できるベクトルソリューションを提供します。標準的な SQL インターフェイスを使用して、高精度のベクトルマッチングと複雑なビジネスロジックをシームレスに統合できます。この統合により、低コストで互換性の高いアーキテクチャ上で、革新的な AI アプリケーションを迅速に構築およびデプロイできます。
高ディメンションベクトルの効率的な格納、アクセス、演算:最大 16,383 ディメンションの浮動小数点ベクトルデータの格納をサポートし、
VECTORデータ型を導入しています。標準的な SQL インターフェイスをサポートしており、ベクトルデータを直接書き込み、更新、一括管理できます。次の表は、サポートされているベクトル処理関数を示しています。関数名
説明
VECTOR_DIMベクトルのディメンション数を返します。
VEC_FROMTEXT文字列をベクトルに変換します。
TO_VECTORSTRING_TO_VECTORVEC_TOTEXTベクトルを文字列に変換します。
FROM_VECTORVECTOR_TO_STRINGVEC_DISTANCE2 つのベクトル間の距離を計算します。オペランドの一方がインデックス付きの列の場合、関数はインデックスの距離タイプを自動的に検出します。
VEC_DISTANCE_EUCLIDEANVEC_DISTANCE_COSINE高性能なベクトルインデックス:ベクトルインデックスは、高度に最適化された HNSW (Hierarchical Navigable Small World) アルゴリズムを使用しています。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;