本文描述了如何通过PolarDB for AI在数据库中生成含有AI模型推理列的数据表PolarDB for AI Augmented Table(下文简称AAT)。经过人工智能增强的数据表可广泛应用于Data+AI的多个场景,以协助用户进行数据洞察,并根据实际情况调整其决策。
什么是AAT
一张含有AI模型或推理数据列的表被称为AAT。示例如下:
图1中的表为原表,其中,TripID为主键,Airline、Flight、AirportFrom、AirportTo、DayOfWeek、Time和Length为一次航班飞行的相关信息。图2中的表为图1中表的AAT,表中的result列是根据一个AI模型生成出来的结果。该表既包含了数据,又包含了AI推理生成结果。PolarDB对图2中的数据库表进行充分利用,可以帮助用户来分析自己的航班有没有可能延误,也可以帮助航空公司来改进相关航班信息,提升它的准点率。
图1 原表
图2 AAT
在关系型数据库中引入并使用AAT会带来很多便捷之处。比如:对用户群体的划分、销售量的预测以及基于大模型生成内容等,都可以通过AAT在数据库中进行存储、计算和使用。AAT作为数据库外表,在使用上和数据库里面其他的表没有太大的差别。
通过AAT连接AI和数据库
通过以下示例,来描述如何通过AAT来连接AI和数据库。在实际使用过程中,请根据实际情况进行操作。
开启冷数据归档功能。
为了避免AI模型对数据库的频繁写入,PolarDB将AAT作为外部表存储在OSS上。故需要先开启冷数据归档功能。
创建一个新的数据库polar4ai,系统自动生成的AAT默认存储在数据库polar4ai中。创建数据库时,字符集选择utf8mb4,授权账号需要和PolarDB for AI使用的账号保持一致,并授予该账号读写权限。
通过以下SQL语句训练一个AI模型。
/*polar4ai*/ CREATE MODEL airlines_gbm_copy1 WITH (model_class='lightgbm', x_cols ='Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length', y_cols='Delay', model_parameter=(boosting_type='gbdt', n_estimators=100, max_depth=8, num_leaves=256)) AS (SELECT * FROM airlines_train)
查看当前集群下的模型列表。
/*polar4ai*/SHOW MODELS;
查询结果如下:
使用训练好的模型进行离线预测,自动生成AAT。
/*polar4ai*/SELECT TripID,Delay FROM PREDICT ( MODEL airlines_gbm_copy1, SELECT * FROM airlines_train_1000_copy1) WITH (s_cols='TripID,Delay', x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length', y_cols='Delay', primary_key='TripID', mode='async',into_type='db') INTO lightgbm_v2_predict82201;
其中,
lightgbm_v2_predict82201
为系统即将自动构建的AAT的表名,primary_key为表中的主键。离线预测SQL执行完成后,会返回一个任务ID。如:babc6d66-xxxx-yyyy-a4b8-1b1426ce8614
。查看离线任务状态。
通过离线任务ID来检查任务状态。当任务状态为finish时,代表AI模型已经完成相应的推理。
/*polar4ai*/SHOW TASK `babc6d66-xxxx-yyyy-a4b8-1b1426ce8614`
执行结果如下:
查看在polar4ai数据库下自动生成的AAT表结构。
SHOW CREATE TABLE polar4ai.lightgbm_v2_predict82201;
执行结果如下:
CREATE TABLE `lightgbm_v2_predict82201` ( `TripID` bigint(20) NOT NULL, `Delay` bigint(20) DEFAULT NULL, `result` text, PRIMARY KEY (`TripID`) ) ENGINE=CSV DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci /*!99990 800020204 NULL_MARKER='NULL' */ CONNECTION='default_oss_server'
新生成的AAT与原表相对比,TripID和Delay的类型和长度均与原表一致。result为AI模型推理出来的结果,并作为原表的增强列写入了AAT中。
查看AAT中的1000行数据。
SELECT * FROM polar4ai.lightgbm_v2_predict82201 LIMIT 1000;
执行结果如下:
由查询结果可以看出,新生成的result列包含预测值和不同类别的概率值。
通过AAT和数据库表进行连接操作。
自动生成的表
lightgbm_v2_predict82201
与数据库中其他表在使用上并无差异,可以与数据库中的其他表进行连接操作。示例如下:SELECT * FROM airlines_train_1000_copy1, polar4ai.lightgbm_v2_predict82204 WHERE airlines_train_1000_copy1.TripID=polar4ai.lightgbm_v2_predict82204.TripID AND airlines_train_1000_copy1.Delay=1
执行结果如下: