游侠云服务,免实名免备案服务器 游侠云域名,免实名免备案域名

统一声明:

1.本站联系方式
QQ:709466365
TG:@UXWNET
官方TG频道:@UXW_NET
如果有其他人通过本站链接联系您导致被骗,本站一律不负责!

2.需要付费搭建请联系站长QQ:709466365 TG:@UXWNET
3.免实名域名注册购买- 游侠云域名
4.免实名国外服务器购买- 游侠云服务

严少安严少安注册登录关注作者注册登录最新发布!MySQL 9.0 的向量 (VECTOR) 类型文档更新严少安2024-07-04 北京阅读 5 分钟07月1日,MySQL 9.0.0 创新版本, 8.4.1 LTS, 8.0.38 三版齐发。

发版当天安装包已经可以下载,我也在第一时间做了分享:

当时参考手册还未上线,这两天文档虽已上线,但似乎仍在更新中,大家关注的向量数据类型也从文档中找不到踪影。

不过,在最新版本的文档中 (Document generated on: 2024-07-03 (revision: 78966)),数据类型章节已经添加了 VECTOR 页面。

https://dev.mysql.com/doc/refman/9.0/en/mysql-nutshell.html

MySQL 9.0 新功能:支持 VECTOR 类型

MySQL 9.0 支持 VECTOR 列类型。向量是一种数据结构,由条目列表(4 字节浮点值)组成,可以表示为二进制字符串值或列表格式的字符串。VECTOR 列声明有最大长度或条目数(在括号中);默认值为 2048,最大值为 16383。

VECTOR_DIM()(也在 MySQL 9.0 中添加)返回向量的长度。提供了转换函数。STRING_TO_VECTOR()(别名:TO_VECTOR())采用向量的列表格式表示并返回二进制字符串表示;VECTOR_TO_STRING()(别名:FROM_VECTOR())执行相反的操作,如下所示:

mysql> SELECT STRING_TO_VECTOR(‘[2, 3, 5, 7]’);

+——————————————————————–+

| STRING_TO_VECTOR(‘[2, 3, 5, 7]’) |

+——————————————————————–+

| 0x00000040000040400000A0400000E040 |

+——————————————————————–+

1 row in set (0.00 sec)

mysql> SELECT VECTOR_TO_STRING(0x00000040000040400000A0400000E040);

+——————————————————+

| VECTOR_TO_STRING(0x00000040000040400000A0400000E040) |

+——————————————————+

| [2.00000e+00,3.00000e+00,5.00000e+00,7.00000e+00] |

+——————————————————+

1 row in set (0.00 sec)VECTORhttps://dev.mysql.com/doc/refman/9.0/en/vector.html

VECTOR 是一种可以容纳最多指定数量 N 的条目的结构,定义如下:VECTOR(N)

每个条目是一个 4 字节(单精度)浮点值。

默认长度为 2048;最大长度为 16383 个条目。

mysql> create table tv1 (c1 vector);

Query OK, 0 rows affected (0.01 sec)

mysql> show create table tv1\G

*************************** 1. row ***************************

Create Table: CREATE TABLE `tv1` (

`c1` vector(2048) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

1 row in set (0.00 sec)

mysql> create table tv2 (c1 vector(16384));

ERROR 6137 (HY000): Data size (65536 Bytes, 16384 dimensions) exceeds VECTOR max (65532 Bytes, 16383 dimensions) for column: ‘c1’

mysql> create table tv3 (c1 vector(1));

Query OK, 0 rows affected (0.02 sec)

mysql> insert tv3 select to_vector(‘[1]’);

Query OK, 1 row affected (0.00 sec)

Records: 1 Duplicates: 0 Warnings: 0

mysql> select from_vector(c1) from tv3;

+—————–+

| from_vector(c1) |

+—————–+

| [1.00000e+00] |

+—————–+

1 row in set (0.00 sec)VECTOR 不能与任何其他类型进行比较。它可以与另一个 VECTOR 进行比较以确定相等性,但无法进行其他比较。

VECTOR 列不能用作任何类型的键,包括:主键,外键,唯一键,分区键。

VECTOR 值可与 MySQL 字符串函数 BIT_LENGTH()、CHAR_LENGTH()、HEX()、LENGTH() 和 TO_BASE64() 一起使用。其他字符串函数不接受 VECTOR 类型作为参数。