RDS for MySQL は、エンタープライズレベルのベクトルデータ処理のための緊密な統合機能を提供します。最大 16,383 次元のベクトルデータの保存と計算をネイティブにサポートしています。このサービスは、主要なベクトル操作関数を統合し、高度に最適化された階層的ナビゲーブルスモールワールド (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 つのベクトル間の距離を計算します。パラメーターのいずれかがインデックス付きの列である場合、インデックスの距離タイプが自動的に検出されます。
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;