MySQL 9.0新特性:向量存储
创作时间:
作者:
@小白创作中心
MySQL 9.0新特性:向量存储
引用
CSDN
1.
https://blog.csdn.net/horses/article/details/140260186
MySQL 9.0 正式版已经发布,其中一个亮点就是向量(VECTOR)数据类型的支持,本文给大家详细介绍一下这个新功能。
向量类型
MySQL 9.0 增加了一个新的向量数据类型:VECTOR。它是一种可以存储 N 个数据项的数据结构(数组),定义方式如下:
VECTOR(N)
其中,每个数据项都是一个 4 字节的单精度浮点数。默认的数据项为 2048 个,最大值为 16383。
向量类型的数据可以使用二进制字符串或者列表分隔的字符串表示,例如:
CREATE TABLE t(id int, rgb vector(3));
INSERT INTO t VALUES (1, to_vector('[255,255,255]'));
INSERT INTO t VALUES (2, to_vector('[128,255,0]'));
INSERT INTO t VALUES (3, to_vector('[0,65,225]'));
向量函数
MySQL 9.0 同时还增加了一些用于操作 VECTOR 数据的向量函数。
首先, STRING_TO_VECTOR 函数用于将字符串形式的向量数据转换为二进制,例如:
SELECT HEX(STRING_TO_VECTOR("[1.05, -17.8, 32]"));
HEX(STRING_TO_VECTOR("[1.05, -17.8, 32]"))|
---+
6666863F66668EC100000042 |
STRING_TO_VECTOR 函数的参数是一个字符串,包含一组由逗号分隔的浮点数,并且使用方括号([])进行引用。
TO_VECTOR 函数是 STRING_TO_VECTOR 函数的同义词。
其次, VECTOR_TO_STRING 函数用于将向量数据转换为字符串,例如:
SELECT VECTOR_TO_STRING(STRING_TO_VECTOR("[1.05, -17.8, 32]"));
VECTOR_TO_STRING(STRING_TO_VECTOR("[1.05, -17.8, 32]"))|
---+
[1.05000e+00,-1.78000e+01,3.20000e+01] |
SELECT VECTOR_TO_STRING(0x00000040000040400000A0400000E040);
VECTOR_TO_STRING(0x00000040000040400000A0400000E040)|
---+
[2.00000e+00,3.00000e+00,5.00000e+00,7.00000e+00] |
输出结果中的浮点数使用科学计数法表示。
FROM_VECTOR 函数是 VECTOR_TO_STRING 函数的同义词。
最后, VECTOR_DIM 函数用于返回向量数据的维度,也就是数据项的个数。例如:
SELECT VECTOR_DIM(rgb) FROM t;
VECTOR_DIM(rgb)|
---+
3|
3|
3|
使用限制
VECTOR 数据类型存在以下限制:
- VECTOR 数据不能和其他类型的数据进行比较,VECTOR 数据只能和其他 VECTOR 数据进行等值比较。
- VECTOR 类型的字段不能作为任何类型的键值,包括主键、外键、唯一键以及分区键。
- VECTOR 类型的字段不能作为直方图的统计源。
- 一些 MySQL 字符串函数可以使用 VECTOR 数据作为参数,包括 BIT_LENGTH()、CHAR_LENGTH()、HEX()、LENGTH() 以及 TO_BASE64()。其他字符串函数不支持 VECTOR 类型的参数。
- VECTOR 数据可以作为以下加密函数的参数:AES_ENCRYPT()、COMPRESS()、MD5()、SHA1()、SHA2()。其他加密函数不支持 VECTOR 类型的参数。
- VECTOR 数据可以作为 CASE 运算符和 COALESCE()、IFNULL()、NULLIF() 以及 IF() 函数的参数。
- VECTOR 数据可以作为 CAST(expression AS BINARY) 的参数,结果返回 VECTOR 数据的二进制字符串。CAST 函数不支持将数据转换为 VECTOR 类型,推荐使用 STRING_TO_VECTOR 函数。
- 除了COUNT 函数之外,VECTOR 数据类型不能作为其他聚合函数或者窗口函数的参数。
- VECTOR 数据不能作为以下函数或运算符的参数:数字函数和运算符、时间函数、全文检索函数、XML 函数、位操作函数以及 JSON 函数。
总结
首先,对于向量数据的支持是一个重大的改进,可以为 MySQL 增加向量存储功能。
不过,目前 MySQL 9.0 只有简单的 VECTOR 数据类型和转换函数,还没有提供向量相似度(余弦相似性、欧氏距离、内积相似性等)检索功能,以及优化查询性能的向量索引,距离一个实用的向量数据库还有一些差距。
热门推荐
如何缓解睡眠中频繁做梦的困扰?
容易产生胀气的食物有哪些?胀气怎么办?
呕吐头疼浑身酸痛无力是怎么回事
内双怎么画眼线?这些方法你get到了吗?
孔圣枕中丹:治疗心肾不足的名方
深入了解左旋肉碱:减脂、提升运动表现的潜在益处与副作用
精选山景描写优美段落,提升写作水平!
养鱼新手必看!水族箱氧气泵选购指南
特应性皮炎迁延难愈,治疗重点把握这几种药物
开外贸公司需要办理哪些相关证件和手续?如何确保合法合规经营?
诗情画意门头沟 在诗与画中走向振兴
双向奔赴 共赢互鉴——中国大熊猫金丝猴双宝文化艺术展巴黎成功举办
如何在室内弱光环境中养护植物:完整指南
同样都是葱,“大葱”与“小葱”有何不同?搞懂再买不吃亏
“幻海”不“幻”,在城市喧闹中将自己的内心之静和盘托出
糖化血色素(HbA1c)是什麼?糖化血色素的正常值與改善方法
智能锁具有哪些安全特性?
一家独大对市场有何影响?这种影响如何应对?
虚假宣传与医疗美容纠纷的法律解析
蒸制生蚝,是一种保留其原汁原味、营养丰富的烹饪方式
男人必读的5本好书,强烈推荐!
无人机机载武器发展综述
瑜伽馆的设计适合采用什么风格?
要想猫咪生活幸福?多做这10件事,提高猫的“幸福指数”
爱因斯坦与柏格森:关于时间的世纪争论
世界观第一章:创世传说与宇宙三古神
"死肥宅":从贬义词到网络流行文化的演变
以最快速度寄电池到美国:您必须了解的国际快递技巧
从公关的角度看,袁绍在官渡之战中失败的原因
天津博物馆的三件宝物