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

2024-07-08 15:58:21 浏览数 (4)

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。例如,

代码语言:javascript复制
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列的二进制值。例如,

代码语言:javascript复制
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()相反。例如,

代码语言:javascript复制
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):返回该向量包含的条目数量。例如,

代码语言:javascript复制
mysql> SELECT VECTOR_DIM(0xC3F548400000FD4400009041);
 ---------------------------------------- 
| VECTOR_DIM(0xC3F548400000FD4400009041) |
 ---------------------------------------- 
|                                      3 |
 ---------------------------------------- 
1 row in set (0.00 sec)

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

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

0 人点赞