RDS MySQL深度整合企業級向量資料處理能力,原生支援最高16,383維向量資料的儲存及計算,整合主流向量運算函數,並基於深度最佳化的HNSW(Hierarchical Navigable Small World)演算法構建高效近鄰搜尋能力,支援對全維度向量列建立索引。
功能說明
RDS MySQL原生支援包括向量儲存、相似性計算及高效能索引構建在內的向量資料處理能力。可為大規模語義檢索、智能推薦、多模態分析等情境提供開箱即用的向量化解決方案。使用者可通過標準SQL介面無縫實現高精度向量匹配與複雜商務邏輯的融合計算,助力企業以低成本、高相容性架構快速落地AI創新應用。
高維向量的高效存取與計算:支援最高 16,383 維度浮點型向量資料存放區,並引入
VECTOR資料類型。相容標準SQL操作介面,可直接實現向量化資料的寫入、更新及批量管理。支援的主流向量處理函數如下:函數名
說明
VECTOR_DIM擷取向量維度
VEC_FROMTEXT字串轉向量
TO_VECTORSTRING_TO_VECTORVEC_TOTEXT向量轉字串
FROM_VECTORVECTOR_TO_STRINGVEC_DISTANCE計算兩向量間的距離(若參數之一是索引列,可自動識別索引的距離類型)
VEC_DISTANCE_EUCLIDEANVEC_DISTANCE_COSINE高效能向量索引:基於深度最佳化的HNSW (Hierarchical Navigable Small World) 演算法構建向量索引,通過SIMD硬體加速、布隆過濾器搜尋剪枝、LIMIT條件下推等技術,顯著提升大規模向量資料的檢索效率。同時支援向量資料與標量資料的混合儲存與聯集查詢。
開源生態,開箱即用:完全相容MySQL協議,支援JDBC/ORM工具及主流開發架構。整合阿里雲DTS、DMS等服務,提供資料同步、管理、備份恢複等全生命週期能力。支援存量執行個體一鍵升級,無需建立叢集。
適用範圍
資料庫版本: MySQL 8.0。
使用該功能時有以下限制:
僅支援在InnoDB引擎表上建立向量索引。
表主鍵長度不能超過256位元組。
建立、修改、刪除向量索引無法使用
inplace文法。向量索引不能被設定為
INVISIBLE。包含向量索引的表不支援Recycle Bin功能。
向量索引的資料修改和查詢只支援RC (Read Committed) 隔離等級。
由於HNSW演算法的隨機性,包括 level 的隨機、啟發學習法演算法等,無法保證主備的向量索引的圖結構完全一致。
在來源資料庫中的預存程序、函數中使用
vector類型,會導致同步或遷移到不支援向量的目標資料庫失敗。
參數管理
參數說明
參數名稱 | 說明 |
| • 描述:預設向量距離類型。
|
| • 描述:HNSW索引的預設m值(圖中每個節點的最大出邊數)。 |
| • 描述:HNSW索引查詢時的預設ef_search值(搜尋範圍)。 |
| • 描述:HNSW索引緩衝可使用的最大記憶體(單位:位元組)。 |
修改參數
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列中單擊參數設定。
在可修改參數頁簽內搜尋待修改參數,並配置參數值。
單擊確定,然後單擊提交參數,並在彈出的視窗中選擇生效的時間段。
所有向量相關參數均為動態參數,修改後無需重啟執行個體即可生效。
開啟功能與使用
開啟/關閉向量功能無需重啟執行個體。
第一步:開啟向量支援
訪問 RDS管理主控台,選擇目標地區並單擊執行個體ID。
在基本資料頁的運行狀態地區,找到向量儲存,單擊其右側的開啟。
狀態變為已開啟後,功能即刻生效。
第二步:建立表和向量索引
-- 建立一個包含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
);第三步:插入資料
-- 使用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]'));第四步:進行向量相似性查詢
-- 尋找與給定向量 '[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;