社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL 宣布正式拥抱 AI

java1234 • 3 周前 • 165 次点击  
大家好,我是锋哥。

我们用了好多年的Mysql,这次终于开始拥抱AI了,包括向量存储与检索,支持内容生成、摘要和检索增强生成(RAG)以及 LLM支持等。锋哥今天来好好聊聊Mysql对AI的支持 。

目录

  • MySQL 是一个什么样的数据库

  • 开始拥抱 AI

  • 完全在本地跑,用的是 MySQL AI

  • 从提问到回答,中间发生了什么

  • 三个可以上手的例子

  • 适合现在就用吗

MySQL 是一个什么样的数据库

如果你写过后台,大概率跟 MySQL 打过交道。它是一个开源的关系型数据库,1995 年由 Michael Widenius 等人写出来,后来进入 Oracle 旗下,一路走到今天。网站的用户表、订单表、库存表,很多都躺在它里面。

它擅长的就是用表把数据分门别类存好,用 SQL 把它们查出来,用事务保证扣库存和写订单一起成功,或者一起回滚。再往后,主从复制、备份、权限,把一套系统撑到能上线。

很长一段时间里,模型和向量检索要另外搭一套服务,再把库里的数据导过去。2024 年 7 月,MySQL 9.0 带来了原生的 VECTOR  类型,云上的 MySQL HeatWave 把生成式 AI 做进了数据库。想把同样的能力留在自己机房里,企业版还有 MySQL AI 这个本地选项。有些 AI 能力,可以在 MySQL 里完成。

开始拥抱 AI

可以分成三块来看。用之前先分清,能少走弯路。

第一块,向量可以当列来存。 从 MySQL 9.0 起,表里可以有一种叫 VECTOR 的列。一个向量就是一串小数,用来表示一句话、一段文档在“意思”上的位置。意思相近的内容,这些小数也更接近。社区版可以建这种列,也能用 STRING_TO_VECTOR() 写入、用 VECTOR_TO_STRING() 读出来。它默认长度是 2048 维,上限 16383 维,每一维是一个单精度浮点数。这种列目前不能当主键或普通索引。

第二块,库里能做语义检索和问答。 DISTANCE() 用来算两个向量有多近,支持余弦、点积和欧氏距离。生成式这一侧会把 PDF、HTML、TXT、PPT、DOCX 切成小段,生成向量,存进普通的 MySQL 表。之后你用自然语言提问,sys.ML_RAG 会先找出相关段落,再交给库内的大模型组织答案,并带上引用。在 HeatWave 上,MySQL 9.5.0 起还可以把“语义相近”和“关键词命中”合在一起查。

第三块,预测类的机器学习也在库里。 AutoML 让你对一张业务表调用 sys.ML_TRAIN,比如判断一个客户会不会再次下单。训练和预测都用 SQL 完成,数据留在原来的库里。

这三块里,向量列本身从 MySQL 9.0 就有,社区版可以存、可以做格式转换。库内大模型、向量存储和 AutoML 则有两个落点:完全在本地跑,用企业版的 MySQL AI;跑在云上,用 HeatWave GenAI。

完全在本地跑,用的是 MySQL AI

如果你的需求是 AI 功能整个留在自己的机器上,对应的产品是 MySQL AI,它是 MySQL 企业版的本地部署选项。内置大模型、向量存储、AutoML 这些能力,它都带到了本地环境。模型在 CPU 上运行,不用单独配 GPU。

文档放在本机目录里即可。安装时会指定一个允许读取的目录,默认常见的是 /var/lib/mysql-files。下面这句把一份退货说明读进来,切段、编码,再写进向量表:

CALL sys.VECTOR_STORE_LOAD(  'file:///var/lib/mysql-files/demo-directory/return-policy.pdf',  @options);

问法仍然是后面的 ML_EMBED_ROW、 ML_RAG 和 ML_TRAIN。可以先在本地用 MySQL AI 把应用写出来。以后如果需要更好的性能和更丰富的功能,再迁到云上的 HeatWave,应用代码不用改。文档从哪读要按环境换一下路径:本地是 file:// 指向的本机目录,云上是对象存储。

它随 MySQL 企业版本地部署。当前支持 Oracle Linux 8 和 Red Hat Enterprise Linux 8,需要企业版许可。官方给出的机器参考是 32 个逻辑 CPU、128GB 内存和 512GB 磁盘。社区版适合先熟悉 VECTOR 这种列。

从提问到回答,中间发生了什么

想象一家小店的客服。顾客问:“这件衣服不合适,几天内能退?”规则写在退货说明里,顾客不会去翻那份 PDF。

MySQL AI 和 HeatWave 走的是同一条路:

大模型见过很多公开资料,未必见过你店里的退货规则。先把你自己的文档变成向量放进表里,回答时只拿相关的那几段当依据。答案会贴着你的制度走,也方便回头核对原句。

三个可以上手的例子

第一段在 MySQL 9 上就能体会向量列长什么样。后两段在 MySQL AI 和 HeatWave 上都能用,例程名字一样。向量只用了 3 维,是为了让人眼能看懂。手写的这几位小数只为演示,真实嵌入由模型生成,通常有几百维,并且要和提问用同一个模型。

1. 建一张带向量的问答表

CREATE DATABASE db_shop;USE db_shop;
CREATE TABLE t_faq (  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,  question VARCHAR(200) NOT NULL,  answer TEXT NOT NULL,  embedding VECTOR(3) NOT NULL);
INSERT INTO t_faq (question, answer, embedding) VALUES('怎么退货', '签收后 7 天内可申请退货。', STRING_TO_VECTOR('[0.90, 0.10, 0.05]')),('运费怎么算', '满 99 元包邮,否则收取 8 元。', STRING_TO_VECTOR('[0.10, 0.85, 0.15]')),('会员有什么权益', '会员下单享 9 折,生日当月再减 20 元。', STRING_TO_VECTOR('[0.15, 0.10, 0.90]'));
SELECT id, question, VECTOR_TO_STRING(embedding) AS embedding_textFROM t_faq;

STRING_TO_VECTOR() 吃的是带方括号的字符串,VECTOR_TO_STRING() 再把它变回人能读的样子。TO_VECTOR()、 FROM_VECTOR() 分别是这两个函数的同义词。

2. 找和问题最接近的答案

在 MySQL AI 或 HeatWave 上,可以用余弦距离把“想退货”这种问法对上退货那一行。距离越小,越接近。

SET @q = STRING_TO_VECTOR('[0.88, 0.12, 0.06]');
SELECT id, question, answer,       DISTANCE(embedding, @q, 'COSINE') AS scoreFROM t_faqORDER BY scoreLIMIT 2;

第三个参数还可以写成 'DOT' 或 'EUCLIDEAN'。这里的 score 是距离,小的排在前面。

3. 让数据库按文档回答

真实项目里,向量交给嵌入模型生成。MySQL AI 和 HeatWave 里对单句可以这样:

SET @text = '签收后 7 天内可以退货,运费满 99 元包邮。';
SELECT sys.ML_EMBED_ROW(@text, JSON_OBJECT('model_id', 'all_minilm_l12_v2'))  INTO @text_embedding;

整表文本用 sys.ML_EMBED_TABLE。PDF 这类文件先装进向量存储:本地 MySQL AI 用上一节的 file:// 路径,云上 HeatWave 从对象存储读取。问答时指定这张向量表:

SET @query = 'What is the return window?';SET @options = JSON_OBJECT(  'vector_store', JSON_ARRAY('db_shop.demo_embeddings'),  'model_options', JSON_OBJECT('language', 'en'));
CALL sys.ML_RAG(@query, @output, @options);SELECT JSON_PRETTY(@output);

返回的 JSON 里,text 是模型组织好的回答,citations  是它参考过的段落和距离。language 用两位语言代码,默认是 en。中文知识库先看你当前版本文档里的语言列表,再改这个值。MySQL 9.2.1 之后,检索会按嵌入模型去匹配同一套向量表,问题和文档要用同一个模型编码。

如果还想做预测,比如订单表里有一列“会不会再次购买”,AutoML 是另一条路。MySQL AI 和 HeatWave 都提供这组例程:

CALL sys.ML_TRAIN(  'db_shop.t_order',  'will_buy_again',  JSON_OBJECT('task', 'classification'),  @model);

问答靠的是“找出相似段落再生成”。预测靠的是“用历史数据学一个分类模型”。两件事都用 SQL 发起,解决的问题不一样。

适合现在就用吗

已经在用 MySQL,又希望客服、制度和产品说明能被直接问到。要完全在本地运行,用企业版的 MySQL AI,模型跑在 CPU 上。可以上云,就用 HeatWave GenAI。两边的问答和训练例程是同一套,本地写好的应用,以后可以不改代码迁到 HeatWave,换来更好的性能和更丰富的功能。业务数据留在 MySQL 里,SQL 仍然是入口。

本地社区版想先认识 VECTOR 这种列,用本文第一段就够了。距离计算、库内嵌入和 ML_RAG 需要 MySQL AI 或 HeatWave。向量列不能当索引,数据量上来之后,召回方式和维度要按文档再设计。这几段示例用来把路走通,上生产前还得按数据量重做一遍。

MySQL 仍然是那个存订单、跑事务的数据库。变化在于,按意思找资料、生成一段带出处的回答,也可以从同一条 SQL 会话里开始。

2026年,锋哥又开始收Java+AI大模型编程学员了!目前活动,送AI编程+Python+AI大模型VIP。。

最近锋哥录制了一些AI编程视频教程

图片

高清视频+源码+领取。

扫描下方公众号【小锋学AI 】回复:888,

可获取下载链接

👇👇👇

图片


👆长按上方二维码 2 秒
回复「888」即可获取

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/202068