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;