王牌站士Ⅴ--mysql9.0发布向量类型糊弄了事

前言

MySQL在本月发布了9.0大版本,作为一个老用户,忍不住关注了一下,简单说下这次大版本更新。

2023年,AI爆火,带动了向量数据库赛道。当下几乎所有主流 DBMS 都已经提供向量数据类型支持 —— MySQL 除外

大家原本期待着在 9.0 创新版,向量支持能弥补一些缺憾,结果发布后等到的只有震撼 —— 竟然还可以这么糊弄?

向量Vector类型说说明

在 MySQL 9.0 的 官方文档上,只有三个关于向量类型的函数。抛开与字符串互转的两个,真正的功能函数就一个 VECTOR_DIM:返回向量的维度!(计算数组长度)

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)

向量数据库的门槛不是一般的低 —— 有个向量距离度量函数就行(内积,10行C代码,小学生水平编程任务),这样可以通过全表扫描求距离 + ORDER BY d LIMIT n 实现向量检索,至少是个可用的状态。

但 MySQL 9 甚至连这样一个最基本的向量距离函数都懒得去实现,这绝对不是能力问题,而是 Oracle 根本就不想好好做 MySQL 了。老司机一眼就能看出这里的所谓 “向量类型” 不过是 BLOB 的别名 —— 它只管你写入二进制数据,压根不管用户怎么查找使用。最后交付个十分钟就能写完的东西糊弄了事。

不糊弄的例子可以参考 MySQL 的老对手 PostgreSQL。在过去一年中,PG 生态里就涌现出了至少六款向量数据库扩展( pgvector,pgvector.rs,pg_embedding,latern,pase,pgvectorscale),并在你追我赶的赛马中卷出了新高度。最后的胜出者是 2021 年就出来的 pgvector[7] ,它在无数开发者、厂商、用户的共同努力下,站在 PostgreSQL 的肩膀上,很快便达到了许多专业向量数据库都无法企及的高度,甚至可以说凭借一己之力,干死了这个数据库细分领域

拿 pgvector 与来比似乎不太合适,因为 MySQL 9 所谓的“向量”,甚至都远远不如 1996 年 PG 诞生时自带的“多维数组类型” —— “至少它还有一大把数组函数,而不是只能求个数组长度”。

向量是新的JSON,然而向量数据库的宴席都已经散场了,MySQL 都还没来得及上桌 —— 它完美错过了下一个十年 AI 时代的增长动能,正如它在上一个十年里错过互联网时代的JSON文档数据库一样。

为 MySQL 提供矢量搜索

既然新版本如此拉胯,但是有数据基础设施现实存在,将其与现有数据基础设施集成可能是一个挑战。传统的 SQL 数据库(如 MySQL)虽然对结构化数据很强大,但难以处理向量数据和向量搜索操作的复杂性。

为了更好地理解这些挑战,让我们考虑一位电子商务开发人员的任务,他需要创建一个智能产品推荐系统,该系统根据与用户浏览和购买历史的语义关系来推荐产品。

为了实现这一点,开发人员通常会依赖 MySQL 之类的数据库系统来存储和检索必要的数据。但是,传统的 SQL 数据库并非设计用于高效处理向量搜索。幸运的是,有解决方案可用于在 MySQL 中启用向量搜索功能。

基本思路:MySQL数据库+矢量数据库

一种基本方法是维护两个独立的数据库——一个用于结构化产品数据和订单记录的 MySQL 存储库,而一个专用的向量数据库则存储产品描述的向量嵌入。为了提出建议,应用程序首先从向量数据库中检索并比较向量嵌入以识别相似的项目。之后,它会查询 MySQL 数据库以获取匹配产品的详细信息。这种方法可以比作同时驾驶两艘船——在充满挑战的语义复杂性浪潮中管理和传输它们之间的数据。

欢迎你分享你的作品到我们的平台上:www.shxcj.com 或者 www.2img.ai 让更多的人看到你的才华。

创作不易,觉得不错的话,点个赞吧!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/376052.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【vue教程】二. Vue特性原理详解

目录 回顾本章涵盖知识点Vue 实例和选项创建 Vue 实例Vue 实例的选项 Vue 模板语法插值表达式指令v-bindv-modelv-on 自定义指令创建自定义指令在模板中使用自定义指令自定义指令的钩子函数自定义指令的实例演示 指令注册局部注册指令过滤器 数据绑定和响应式原理响应式数据绑定…

【CUDA|CUDNN】安装

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 显卡驱动安装参考之前的文章 cuda、cudnn 安装 1. cuda 安装 访问https://developer.nvidia.com/cuda-toolkit-archive 选择需要的版本:h…

css实现渐进中嵌套渐进的方法

这是我们想要的实现效果: 思路: 1.有一个底色的背景渐变 2.需要几个小的块级元素做绝对定位通过渐变filter模糊来实现 注意:这里的采用的定位方法,所以在内部的元素一律要使用绝对定位,否则会出现层级的问题&…

面试经验之谈

优质博文:IT-BLOG-CN ​通常面试官会把每一轮面试分为三个环节:① 行为面试 ② 技术面试 ③ 应聘者提问 行为面试环节 面试开始的5~10分钟通常是行为面试的时间,面试官会参照简历和你的自我介绍了解应聘者的过往经验和项目经历。由于面试官…

Hangfire发布托管到iis无法正常执行任务

本文以windowsServer2012R2iis8示例。 当我们设置了一个后台周期性任务后发布到iis,如果出现网站间隔时间较长没有用户去访问,这是iis可能就会自动回收导致Hangfire服务停止,导致我们的后台任务终止执行,直到进来一个请求&#xf…

基于全国产复旦微JFM7K325T+ARM人工智能数据处理平台

复旦微可以配合的ARM平台有:RK3588/TI AM62X/ NXP IMX.8P/飞腾FT2000等。 产品概述 基于PCIE总线架构的高性能数据预处理FMC载板,板卡采用复旦微的JFM7K325T FPGA作为实时处理器,实现各个接口之间的互联。该板卡可以实现100%国产化。 板卡具…

window下tqdm进度条

原代码是linux下运行&#xff0c;修改后可在window下运行。 #ifndef TQDM_H #define TQDM_H#include <chrono> #include <ctime> #include <numeric> #include <ios> #include <string> #include <cstdlib> #include <iostream> #i…

系统吃swap问题排查

目录 背景 问题 分析并解决 1.控制线程数 2.更换IO组件 3.Linux进程信息文件分析 总结加餐 参考文档 背景 隔壁业务组系统是简单的主从结构&#xff0c;写索引的服务(主)叫primary&#xff0c; 读索引并提供搜索功能的服务(从)叫replica。业务线同步数据并不是平滑的&…

【新书速递】使用MATLAB进行雷达系统分析和设计(第四版)(2022)

来源&#xff1a;公众号高山防务 一、目录 目录 1雷达定义和术语 1.1雷达系统分类和波段 1.1.1高频&#xff08;HF&#xff09;和甚高频&#xff08;VHF&#xff09;雷达&#xff08;A和B波段&#xff09; 1.1.2超高频&#xff08;UHF&#xff09;雷达&#xff08;C波段&am…

【学习css1】flex布局-页面footer部分保持在网页底部

中间内容高度不够屏幕高度撑不开的页面时候&#xff0c;页面footer部分都能保持在网页页脚&#xff08;最底部&#xff09;的方法 1、首先上图看显示效果 2、奉上源码 2.1、html部分 <body><header>头部</header><main>主区域</main><foot…

循环结构(一)——for语句【互三互三】

文章目录 &#x1f341; 引言 &#x1f341; 一、语句格式 &#x1f341; 二、语句执行过程 &#x1f341; 三、语句格式举例 &#x1f341;四、例题 &#x1f449;【例1】 &#x1f680;示例代码: &#x1f449;【例2】 【方法1】 &#x1f680;示例代码: 【方法2】…

通过git将文件push到github 远程仓库

1.先git clone 代码地址 git clone htttp://github.com/用户名/test.git 2. 添加文件 例如&#xff1a;touch 1.txt 3.将文件添加到暂存区 git add 1.txt 4.提交 git commit -m "commit 1.txt" 5.与远程仓库建立关联 git remote add 远程仓库名 远程仓库…

华为浏览器,Chrome的平替,插件无缝连接

文章目录 背景插件书签 背景 不知道各位小伙伴有没有这样的痛点&#xff0c;办公电脑、家里的电脑还有手机、平板等&#xff0c;收藏了一个网址或者在手机上浏览了某个网页&#xff0c;保存起来&#xff0c;可是一换平台或者换个电脑&#xff0c;在想要浏览之前收藏的东西&…

Elasticsearch 8 支持别名查询

在 Elasticsearch 8 中&#xff0c;使用 Java 高级 REST 客户端进行别名管理的过程与之前的版本类似&#xff0c;但有一些API细节上的变化。以下是如何使用 Java 和 Elasticsearch 8 进行别名操作的例子&#xff1a; 引入依赖 确保你的项目中包含了 Elasticsearch 的高级 RES…

iPad锁屏密码忘记怎么办?有什么方法可以解锁?

当我们在日常使用iPad时&#xff0c;偶尔可能会遇到忘记锁屏密码的尴尬情况。这时&#xff0c;不必过于担心&#xff0c;因为有多种方法可以帮助您解锁iPad。接下来&#xff0c;小编将为您详细介绍这些解决方案。 一、使用iCloud的“查找我的iPhone”功能 如果你曾经启用了“查…

亚马逊IP关联是什么?要怎么解决呢?

亚马逊不仅提供了广泛的商品和服务&#xff0c;也是许多企业和个人选择的电子商务平台。然而&#xff0c;与亚马逊相关的IP关联问题&#xff0c;特别是在网络安全和运营管理方面&#xff0c;经常成为使用亚马逊服务的用户和商家关注的焦点。通过了解亚马逊IP关联的含义、可能的…

数学建模国赛入门指南

文章目录 认识数学建模及国赛认识数学建模什么是数学建模&#xff1f;数学建模比赛 国赛参赛规则、评奖原则如何评省、国奖评奖规则如何才能获奖 国赛赛题分类及选题技巧国赛赛题特点赛题分类 国赛历年题型及优秀论文 数学建模分工技巧数模必备软件数模资料文献数据收集资料收集…

单点登录(SSO)机制

1、定义 单点登录&#xff08;Single Sign On&#xff09;&#xff0c;简称为 SSO&#xff0c;SSO的定义是指用户只需要登录一次就可以访问所有相互信任的应用系统。 eg:淘宝、天猫都属于阿里旗下&#xff0c;当用户登录淘宝后&#xff0c;再打开天猫&#xff0c;系统便自动帮…

从“Hello,World”谈起(C++入门)

前言 c的发展史及c能干什么不能干什么不是我们今天的重点&#xff0c;不在这里展开&#xff0c;有兴趣的朋友可以自行查阅相关资料。今天我们主要是围绕c的入门程序&#xff0c;写一个“hello&#xff0c;world”&#xff0c;并且围绕这个入门程序简单介绍一下c和c的一些语法&…

【fastadmin 开发实战】select 级联选择

先看实现的效果 1、表单页面实现级联选择 2、级联选项后台可以编辑添加 前端代码&#xff08;编辑窗口&#xff09;&#xff1a; <div class"form-group"><label class"control-label col-xs-12 col-sm-2">{:__(渠道归属)}:</label><…