RDS MySQL深度集成企业级向量数据处理能力,原生支持最高16,383维向量数据的存储及计算,集成主流向量运算函数,并基于深度优化的HNSW(Hierarchical Navigable Small World)算法构建高效近邻搜索能力,支持对全维度向量列建立索引。
RDS MySQL原生支持包括向量存储、相似性计算及高性能索引构建在内的向量数据处理能力。可为大规模语义检索、智能推荐、多模态分析等场景提供开箱即用的向量化解决方案。用户可通过标准SQL接口无缝实现高精度向量匹配与复杂业务逻辑的融合计算,助力企业以低成本、高兼容性架构快速落地AI创新应用。 高维向量的高效存取与计算:支持最高 16,383 维度的浮点型向量数据存储,并引入 函数名 说明 获取向量维度 字符串转向量 向量转字符串 计算两向量间的距离(若参数之一是索引列,可自动识别索引的距离类型) 高性能向量索引:基于深度优化的HNSW (Hierarchical Navigable Small World) 算法构建向量索引,通过SIMD硬件加速、布隆过滤器搜索剪枝、LIMIT条件下推等技术,显著提升大规模向量数据的检索效率。同时支持向量数据与标量数据的混合存储与联合查询。 开源生态,开箱即用:完全兼容MySQL协议,支持JDBC/ORM工具及主流开发框架。集成阿里云DTS、DMS等服务,提供数据同步、管理、备份恢复等全生命周期能力。支持存量实例一键升级,无需新建集群。 数据库版本:MySQL 8.0(内核小版本在20251031或以上)。当版本不符合要求时,可以升级升级内核小版本或数据库大版本。 使用该功能时有以下限制: 仅支持在InnoDB引擎表上创建向量索引。 表主键长度不能超过256字节。 创建、修改、删除向量索引无法使用 向量索引不能被设置为 包含向量索引的表不支持Recycle Bin功能。 向量索引的数据修改和查询只支持RC (Read Committed) 隔离级别。 由于HNSW算法的随机性,包括 level 的随机、启发式算法等,无法保证主备的向量索引的图结构完全一致。 在源数据库中的存储过程、函数中使用 参数名称 说明 • 描述:默认向量距离类型。 • 描述:HNSW索引的默认m值(图中每个节点的最大出边数)。 • 描述:HNSW索引查询时的默认ef_search值(搜索范围)。 • 描述:HNSW索引缓存可使用的最大内存(单位:字节)。 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。 在左侧导航栏中单击参数设置。 在可修改参数页签内搜索待修改参数,并配置参数值。 单击确定,然后单击提交参数,并在弹出的窗口中选择生效的时间段。 说明 所有向量相关参数均为动态参数,修改后无需重启实例即可生效。 说明 开启/关闭向量功能无需重启实例。 第一步:开启向量支持 访问 RDS管理控制台,选择目标地域并单击实例ID。 在基本信息页的运行状态区域,找到向量存储,单击其右侧的开启。 状态变为已开启后,功能即刻生效。 第二步:创建表和向量索引 第三步:插入数据 第四步:进行向量相似度查询功能说明
VECTOR 数据类型。兼容标准SQL操作接口,可直接实现向量化数据的写入、更新及批量管理。支持的主流向量处理函数如下:VECTOR_DIMVEC_FROMTEXTTO_VECTORSTRING_TO_VECTORVEC_TOTEXTFROM_VECTORVECTOR_TO_STRINGVEC_DISTANCEVEC_DISTANCE_EUCLIDEANVEC_DISTANCE_COSINE适用范围
inplace语法。INVISIBLE。vector类型,会导致同步或迁移到不支持向量的目标数据库失败。参数管理
参数说明
vidx_default_distance
• 参数范围:Session。
• 数据类型:String。
• 默认值:EUCLIDEAN。
• 取值范围:EUCLIDEAN-欧氏距离,计算两个向量在多维空间中的直线距离(几何距离)。COSINE-余弦距离,计算两个向量之间的夹角余弦值,衡量方向相似度(忽略向量长度)vidx_hnsw_default_m
• 参数范围:Session。
• 数据类型:Integer。
• 默认值:6。
• 取值范围:[3, 200]。vidx_hnsw_ef_search
• 参数范围:Session。
• 数据类型:Integer。
• 默认值:20。
• 取值范围:[1, 10000]。vidx_hnsw_cache_size
• 参数范围:Global。
• 数据类型:BigInt。
• 默认值:1048576。
• 取值范围:[1048576, 18446744073709551615]。修改参数
开启功能与使用
-- 创建一个包含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;