wiki/vidx/vidx_readme_zh.md
[ AliSQL | Vector Index | 向量索引 ]
AliSQL 原生支持最高 16,383 维向量数据的存储及计算,集成余弦相似度(COSINE)、欧式距离(EUCLIDEAN)等主流向量运算函数,并基于深度优化的 HNSW(Hierarchical Navigable Small World)算法构建高效近邻搜索能力,支持对全维度向量列建立索引。
AliSQL 向量能力可为大规模语义检索、智能推荐、多模态分析等场景提供开箱即用的向量化解决方案,用户可通过标准SQL接口无缝实现高精度向量匹配与复杂业务逻辑的融合计算。
向量字段使用特殊的 Field_vector 类型定义,继承自 Field_varstring,使用二进制字符集存储浮点数数组。
CREATE TABLE table_name (
id INT PRIMARY KEY,
vector_col VECTOR(128) -- 128维向量
);
向量索引可以通过以下语法创建:
CREATE VECTOR INDEX vidx_name ON table_name (vector_col); -- 使用默认参数
或者在表定义中直接指定:
CREATE TABLE table_name (
id INT PRIMARY KEY,
vector_col VECTOR(128),
VECTOR INDEX vidx_name (vector_col) M=6 DISTANCE=COSINE -- 指定参数
);
| 函数名 | 含义 |
|---|---|
| VEC_FROMTEXT, TO_VECTOR, STRING_TO_VECTOR | 字符串转向量 |
| VEC_TOTEXT, FROM_VECTOR, VECTOR_TO_STRING | 向量转字符串 |
| 函数名 | 含义 |
|---|---|
| VECTOR_DIM | 向量维度 |
| VEC_DISTANCE, VEC_DISTANCE_EUCLIDEAN, VEC_DISTANCE_COSINE | 计算两向量间的距离 |
| 若参数之一是向量索引中的列,可以不指定距离类型,会自动识别向量索引的距离类型 |
使用示例:
-- 使用向量距离进行排序
SELECT * FROM table_name ORDER BY VEC_DISTANCE(vector_col, VEC_FROMTEXT("[1,2,3,4,5]")) LIMIT 10;
-- 在结果中显示距离值
SELECT id, VEC_DISTANCE(vector_col, VEC_FROMTEXT("[1,2,3,4,5]")) AS distance
FROM table_name ORDER BY distance LIMIT 10;
| 变量名 | 描述 | 类型 | 默认值 | 范围 |
|---|---|---|---|---|
| vidx_disabled | 禁用向量列和向量索引的创建 | global | ON | ON, OFF |
| vidx_default_distance | 默认向量距离类型 | session | EUCLIDEAN | EUCLIDEAN,COSINE |
| vidx_hnsw_default_m | HNSW 算法默认 m | session | 6 | [3, 200] |
| vidx_hnsw_ef_search | HNSW 算法默认 ef_search | session | 20 | [1, 10000] |
| vidx_hnsw_cache_size | HNSW 算法默认使用内存限制 | global | 1024 * 1024 | [1048576,18446744073709551615] |
M: 控制图中每个节点的连接数,默认值为 6,有效范围是 3 到 200DISTANCE: 构建索引的距离类型,默认值为 EUCLIDEANER_NOT_SUPPORTED_YET: 不支持的事务隔离级别ER_WRONG_ARGUMENTS: 函数参数错误ER_VECTOR_INDEX_USAGE: 向量索引使用错误ER_VECTOR_INDEX_FAILED: 向量索引操作失败HNSW 作为最为流行的 ANN 算法之一,在机构测评和工程实现上取得了广泛的认可和验证。目前 AliSQL 优先支持了基于 HNSW 算法的向量索引,向量搜索总体架构如下图所示。
<div style="text-align: center;"> </div>HNSW(Hierarchical Navigable Small World)是一种基于多层图结构的高效近似最近邻(ANN)搜索算法。其设计可以概括为:
AliSQL 引入了向量数据的公共缓存(MHNSW Share)和事务缓存(MHNSW Trx),用于加速向量查询性能并保证向量更新的事务安全,实现资源隔离与性能优化的平衡。公共缓存和事务��存供不同的操作访问,有不同的设计目标:
欢迎访问阿里云 RDS MySQL 向量能力,开源生态,开箱即用。