MySQL 9.0中的Vector数据类型与函数

Vector相关的信息和内容在MySQL 9.0中出现了,惊不惊喜,意不意外?该来的终将到来,虽然第一时间发布的发行一览和手册中没有任何关于Vector的内容,但在随后的更新中已经将这部分内容反映到文档当中,让我们一探究竟。

在当今生成式AI火爆的背景下,相关产品都在进行积极地开发,MySQL自然不能例外,尤其是新发布的MySQL Heatwave GenAI,提供了数据库内的向量存储及用自然语言进行语境对话的能力。既然Heatwave中支持了向量存储,那么本地部署的MySQL 9.0也要具备相应的能力才能够让用户顺利地使用MySQL Heatwave GenAI。

MySQL9.0中发布了新的数据类型Vector及相对于的三个函数。

Vector数据类型:VECTOR(N)是一个指定条目数量的数据结构。每一个条目是一个4字节单精度浮点值,条目的数量默认为2048,最大值为16383。例如,

Create Table: CREATE TABLE testtablev (
id int DEFAULT NULL,
3d vector(2048) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
需要注意,vector类型具有一些限制,例如,无法将其与其他类型的数据进行比较,可以将其与vector类型的数据进行等值比较,但无法进行其他的比较。vector列无法作为任何键使用。

vector值可以用于 BIT_LENGTH()、CHAR_LENGTH()、HEX()、 LENGTH(),及 TO_BASE64()函数,其他的字符串相关函数无法使用vector值作为参数。此外,vector值还可以用于 AES_ENCRYPT()、 COMPRESS()、MD5()、SHA1(),及SHA2()加密函数,及COALESCE()、IFNULL()、 NULLIF(),和IF()。

vector值无法作为聚合函数或窗口函数的参数使用,也无法进行下列操作或函数的参数使用:

数值函数和运算符
时间函数
全文检索功能
XML函数
位函数,AND和OR
JSON函数
Vector函数:伴随着vector类型的推出,9.0同时推出了三个函数与之配合,分别是:

STRING_TO_VECTOR(string):与TO_VECTOR()相同,将字符串表示为VECTOR列的二进制值。例如,

mysql> SELECT STRING_TO_VECTOR(“[3.14,2024,18]”);
+————————————————————————+
| STRING_TO_VECTOR(“[3.14,2024,18]”) |
+————————————————————————+
| 0xC3F548400000FD4400009041 |
+————————————————————————+
1 row in set (0.00 sec)
VECTOR_TO_STRING():与FROM_VECTOR()相同,所具有的功能与TO_VECTOR()相反。例如,

mysql> SELECT VECTOR_TO_STRING(0xC3F548400000FD4400009041);
+———————————————-+
| VECTOR_TO_STRING(0xC3F548400000FD4400009041) |
+———————————————-+
| [3.14000e+00,2.02400e+03,1.80000e+01] |
+———————————————-+
1 row in set (0.00 sec)
VECTOR_DIM(vector):返回该向量包含的条目数量。例如,

mysql> SELECT VECTOR_DIM(0xC3F548400000FD4400009041);
+—————————————-+
| VECTOR_DIM(0xC3F548400000FD4400009041) |
+—————————————-+
| 3 |
+—————————————-+
1 row in set (0.00 sec)

以上内容是关于MySQL9.0中Vector数据类型和函数的简介,详细内容请访问官方手册,期待您挖掘出MySQL有趣的内容。

感谢关注“MySQL解决方案工程师”!

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/418559.html

联系我们
联系我们
分享本页
返回顶部