新特性 | MySQL 9.0中的Vector数据类型与函数

2024年 7月 29日 86.5k 0

推选一篇徐老师的文章,正文如下: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有趣的内容。

          文章至此。

          相关文章

          Oracle如何使用授予和撤销权限的语法和示例
          Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
          下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
          社区版oceanbase安装
          Oracle 导出CSV工具-sqluldr2
          ETL数据集成丨快速将MySQL数据迁移至Doris数据库

          发布评论