全部產品
Search
文件中心

PolarDB:將AI模型推理結果寫回資料庫

更新時間:Jul 06, 2024

本文描述了如何通過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 原表

image.png

圖2 AAT

image.png

在關係型資料庫中引入並使用AAT會帶來很多便捷之處。比如:對使用者群體的劃分、銷售量的預測以及基於大模型產生內容等,都可以通過AAT在資料庫中進行儲存、計算和使用。AAT作為資料庫外表,在使用上和資料庫裡面其他的表沒有太大的差別。

通過AAT串連AI和資料庫

通過以下樣本,來描述如何通過AAT來串連AI和資料庫。在實際使用過程中,請根據實際情況進行操作。

  1. 開啟冷資料歸檔功能。

    為了避免AI模型對資料庫的頻繁寫入,PolarDB將AAT作為外部表格儲存在OSS上。故需要先開啟冷資料歸檔功能。

  2. 建立資料庫

    建立一個新的資料庫polar4ai,系統自動產生的AAT預設儲存在資料庫polar4ai中。建立資料庫時,字元集選擇utf8mb4,授權帳號需要和PolarDB for AI使用的帳號保持一致,並授予該帳號讀寫權限。

  3. 通過以下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)
  4. 查看當前叢集下的模型列表。

    /*polar4ai*/SHOW MODELS;

    查詢結果如下:

    image.png

  5. 使用訓練好的模型進行離線預測,自動產生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

  6. 查看離線任務狀態。

    通過離線任務ID來檢查任務狀態。當任務狀態為finish時,代表AI模型已經完成相應的推理。

    /*polar4ai*/SHOW TASK `babc6d66-xxxx-yyyy-a4b8-1b1426ce8614`	

    執行結果如下:

    image.png

  7. 查看在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中。

    image.png

  8. 查看AAT中的1000行資料。

    SELECT * FROM polar4ai.lightgbm_v2_predict82201 LIMIT 1000;

    執行結果如下:

    image.png

    由查詢結果可以看出,新產生的result列包含預測值和不同類別的機率值。

  9. 通過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

    執行結果如下:

    image.png