向量存储

RDS MySQL深度集成企业级向量数据处理能力,原生支持最高16,383维向量数据的存储及计算,集成主流向量运算函数,并基于深度优化的HNSW(Hierarchical Navigable Small World)算法构建高效近邻搜索能力,支持对全维度向量列建立索引。

功能说明

RDS MySQL原生支持包括向量存储、相似性计算及高性能索引构建在内的向量数据处理能力。可为大规模语义检索、智能推荐、多模态分析等场景提供开箱即用的向量化解决方案。用户可通过标准SQL接口无缝实现高精度向量匹配与复杂业务逻辑的融合计算,助力企业以低成本、高兼容性架构快速落地AI创新应用。

  • 高维向量的高效存取与计算:支持最高 16,383 维度的浮点型向量数据存储,并引入 VECTOR 数据类型。兼容标准SQL操作接口,可直接实现向量化数据的写入、更新及批量管理。支持的主流向量处理函数如下:

    函数名

    说明

    VECTOR_DIM

    获取向量维度

    VEC_FROMTEXT

    字符串转向量

    TO_VECTOR

    STRING_TO_VECTOR

    VEC_TOTEXT

    向量转字符串

    FROM_VECTOR

    VECTOR_TO_STRING

    VEC_DISTANCE

    计算两向量间的距离(若参数之一是索引列,可自动识别索引的距离类型)

    VEC_DISTANCE_EUCLIDEAN

    VEC_DISTANCE_COSINE

  • 高性能向量索引:基于深度优化的HNSW (Hierarchical Navigable Small World) 算法构建向量索引,通过SIMD硬件加速、布隆过滤器搜索剪枝、LIMIT条件下推等技术,显著提升大规模向量数据的检索效率。同时支持向量数据与标量数据的混合存储与联合查询。

  • 开源生态,开箱即用:完全兼容MySQL协议,支持JDBC/ORM工具及主流开发框架。集成阿里云DTS、DMS等服务,提供数据同步、管理、备份恢复等全生命周期能力。支持存量实例一键升级,无需新建集群。

适用范围

  • 数据库版本: MySQL 8.0。

  • 内核小版本20251031 或以上。当版本不符合要求时,可以升级升级内核小版本数据库大版本

  • 使用该功能时有以下限制

    • 仅支持在InnoDB引擎表上创建向量索引。

    • 表主键长度不能超过256字节。

    • 创建、修改、删除向量索引无法使用inplace语法。

    • 向量索引不能被设置为INVISIBLE

    • 包含向量索引的表不支持Recycle Bin功能。

    • 向量索引的数据修改和查询只支持RC (Read Committed) 隔离级别。

    • 由于HNSW算法的随机性,包括 level 的随机、启发式算法等,无法保证主备的向量索引的图结构完全一致。

    • 在源数据库中的存储过程、函数中使用vector类型,会导致同步或迁移到不支持向量的目标数据库失败。

参数管理

参数说明

参数名称

说明

vidx_default_distance

• 描述:默认向量距离类型。
• 参数范围:Session。
• 数据类型:String
• 默认值:EUCLIDEAN
• 取值范围:

  • EUCLIDEAN-欧氏距离,计算两个向量在多维空间中的直线距离(几何距离)。

  • COSINE-余弦距离,计算两个向量之间的夹角余弦值,衡量方向相似度(忽略向量长度)

vidx_hnsw_default_m

• 描述:HNSW索引的默认m值(图中每个节点的最大出边数)。
• 参数范围:Session。
• 数据类型:Integer
• 默认值:6
• 取值范围:[3, 200]

vidx_hnsw_ef_search

• 描述:HNSW索引查询时的默认ef_search值(搜索范围)。
• 参数范围:Session。
• 数据类型:Integer
• 默认值:20
• 取值范围:[1, 10000]

vidx_hnsw_cache_size

• 描述:HNSW索引缓存可使用的最大内存(单位:字节)。
• 参数范围:Global。
• 数据类型:BigInt
• 默认值:1048576
• 取值范围:[1048576, 18446744073709551615]

修改参数

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏中单击参数设置

  3. 可修改参数页签内搜索待修改参数,并配置参数值。

  4. 单击确定,然后单击提交参数,并在弹出的窗口中选择生效的时间段。

说明

所有向量相关参数均为动态参数,修改后无需重启实例即可生效。

开启功能与使用

说明

开启/关闭向量功能无需重启实例。

第一步:开启向量支持

  1. 访问 RDS管理控制台,选择目标地域并单击实例ID。

  2. 基本信息页的运行状态区域,找到向量存储,单击其右侧的开启

  3. 状态变为已开启后,功能即刻生效。

第二步:创建表和向量索引

-- 创建一个包含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;