In-Database AI 库内模型服务

最近更新时间:2026-05-21 12:59:00

我的收藏

简介

In-Database AI(库内模型服务) 是 DBAI 节点(TDSQL Boundless AI Node)提供的一站式机器学习能力套件,为用户提供从特征工程、模型训练、模型评估到在线推理的完整机器学习服务。用户无需将数据导出至外部平台,即可在数据库内完成模型的全生命周期管理。
系统内置多种经典回归与集成学习算法,支持特征筛选与预处理,推理层统一基于 ONNX Runtime 实现高性能推理服务,同时支持从对象存储(COS)导入外部已训练好的 ONNX 格式模型以及调用外部大语言模型服务。


核心功能与优势

In-Database AI 对外提供以下核心能力:
特征工程:提供特征筛选(IV、PSI、Pearson)和特征预处理(归一化、One-Hot 编码、缺失值填充、标签编码)能力,预处理逻辑与模型绑定,推理时自动复用;
模型训练:内置 Linear Regression、SVR、LightGBM、Random Forest、GBRT、GBDT 共6种经典回归与集成学习算法,用户可直接在数据库内完成模型训练,训练结果自动转换为 ONNX 格式存储;
模型导入:支持从 COS 导入已训练好的 ONNX 模型文件,将外部平台的模型注册到数据库内统一管理和推理;
模型推理:统一基于 ONNX Runtime 执行,支持单条同步推理(在线场景)和批量异步推理(离线批量打分);
模型评估:支持 MSE、RMSE、MAE、R²、MAPE 等主流回归评估指标,基于测试数据集量化模型效果;
内置预训练模型:预置 BGE、E5、CLIP 等高质量 Embedding 模型,开箱即用;
外部 LLM 调用:支持注册外部大语言模型服务为数据库内函数,在查询中直接调用文本生成、情感分析等 AI 能力;
模型管理:提供模型查看、详情查询、异步任务监控及模型删除等完整生命周期管理操作。
基于以上能力,In-Database AI 具备以下功能优势:
数据零搬迁:训练与推理均在数据库内完成,无需将数据导出至外部平台,减少数据流转环节,降低安全风险;
训推一致性:预处理 Pipeline 与模型绑定持久化,训练和推理自动使用相同的数据处理逻辑,避免线上线下不一致;
灵活的执行模式:训练和推理均支持同步与异步两种模式,小任务即时返回,大任务后台执行不阻塞业务;
开放生态:既支持库内自主训练,也支持导入外部 ONNX 模型和对接外部 LLM 服务,兼容用户已有的 AI 资产;
开箱即用:内置多种预训练 Embedding 模型,无需额外训练即可使用向量化、语义搜索等能力。

功能使用

数据准备:特征工程

特征工程是建模前的关键步骤。通过对候选特征进行量化评估和筛选,用户可以选出对目标变量最具预测力和稳定性的特征子集,从而提升模型效果并降低过拟合风险。

特征筛选

服务提供以下三种特征筛选方法:
IV(Information Value) — 衡量特征对二分类目标变量的预测能力,IV 值越高表明区分正负样本的能力越强,广泛应用于信用评分、风控等场景
PSI(Population Stability Index) — 衡量特征分布在不同时间窗口间的漂移程度,PSI 过高说明特征不稳定,可能导致模型效果衰减,建议剔除
Pearson 相关系数 — 衡量特征与目标变量之间的线性相关性,同时检测特征间的多重共线性,帮助剔除冗余特征
支持单独使用某一方法,也支持多种方法组合筛选,系统对结果取交集,仅保留全部通过的特征。
示例:
SELECT FEATURE_SELECTION(
METHOD = 'iv',
TARGET = 'is_default',
OPTIONS (bins = 10, threshold = 0.02)
)
AS SELECT age, income, debt_ratio, credit_score, is_default FROM loan_data;

-- 返回:
-- +--------------+--------+----------------+
-- | feature | iv | recommendation |
-- +--------------+--------+----------------+
-- | credit_score | 0.8523 | 强预测力 |
-- | debt_ratio | 0.3214 | 中等预测力 |
-- | income | 0.1056 | 弱预测力 |
-- | age | 0.0089 | 无预测力(建议剔除)|
-- +--------------+--------+----------------+

特征预处理

用户可在模型训练语句中通过 PREPROCESS 子句声明数据预处理逻辑。系统会将预处理参数与模型绑定持久化,在推理阶段自动执行相同的预处理操作,确保训练与推理的数据一致性。
支持的预处理算子:
算子
功能
示例
NORMALIZE
数值标准化(Z-Score 或 Min-Max)
NORMALIZE(col1, col2, method='minmax')
FILL_NULL
缺失值填充
FILL_NULL(col1, strategy='mean')
ONEHOT
类别特征 One-Hot 编码
ONEHOT(city, color)
LABEL_ENCODE
有序类别标签编码
LABEL_ENCODE(size, order=['S','M','L','XL'])
参数说明:
NORMALIZE:
参数
默认值
说明
method
'zscore'
'zscore':均值为0,方差为1;'minmax':缩放至 [0, 1]
FILL_NULL:
参数
说明
strategy
填充策略:'mean' / 'median' / 'mode' / 'constant'
value
当 strategy 为 'constant' 时使用的固定填充值
示例:
CREATE MODEL sales_predictor
ALGORITHM = 'lightgbm'
OPTIONS (n_estimators = 200, learning_rate = 0.05)
PREPROCESS (
NORMALIZE(temperature, humidity, method = 'minmax'),
FILL_NULL(promotion_flag, value = 0),
ONEHOT(store_type, weekday),
LABEL_ENCODE(region, order = ['east', 'south', 'west', 'north'])
)
AS SELECT temperature, humidity, promotion_flag, store_type, weekday, region, sales
FROM store_sales
WHERE year >= 2024;

模型构建:训练、导入与评估

模型训练

用户通过 CREATE MODEL 语句在数据库内训练模型。训练完成后,模型自动转换为 ONNX 格式存储,随时可用于推理。
语法:
CREATE MODEL <model_name>
ALGORITHM = '<algorithm_name>'
[ OPTIONS ( <key> = <value> [, ...] ) ]
[ PREPROCESS ( <preprocess_expr> [, ...] ) ]
AS <select_statement>
[ ASYNC ];
参数说明:
参数
必选
说明
model_name
模型唯一标识符,同名模型会报错(需先 DROP)
ALGORITHM
算法名称,见下表
OPTIONS
算法超参数,不指定则使用默认值
PREPROCESS
预处理声明,详见 特征预处理
AS <select>
训练数据来源,最后一列默认作为 label
ASYNC
指定后以异步方式执行,立即返回 task_id
支持的算法:
算法名称
ALGORITHM 值
适用场景
Linear Regression
'linear_regression'
线性关系建模,可解释性要求高
SVR
'svr'
中小数据集非线性回归
LightGBM
'lightgbm'
大规模数据,精度与速度兼顾
Random Forest
'random_forest'
抗过拟合,对噪声数据鲁棒
GBRT
'gbrt'
中等规模精细建模
GBDT
'gbdt'
复杂非线性关系建模
示例:
CREATE MODEL house_price_lgb
ALGORITHM = 'lightgbm'
OPTIONS (n_estimators = 100, learning_rate = 0.1)
AS SELECT area, rooms, age, price FROM house_data;
执行模式:
同步模式(默认)— 系统阻塞等待训练完成,完成后返回训练摘要信息。适用于数据量较小、训练时间较短的场景。
CREATE MODEL my_model
ALGORITHM = 'lightgbm'
AS SELECT * FROM training_data;

-- 返回:
-- +------------+--------+-----------+------------+
-- | model_name | status | algorithm | duration_s |
-- +------------+--------+-----------+------------+
-- | my_model | READY | lightgbm | 12.3 |
-- +------------+--------+-----------+------------+
异步模式 — 系统立即返回任务 ID,训练在后台执行。适用于大数据集、训练耗时较长的场景。用户可随时查询训练进度。
CREATE MODEL my_model
ALGORITHM = 'lightgbm'
AS SELECT * FROM training_data
ASYNC;

-- 返回:
-- +---------+----------+
-- | task_id | status |
-- +---------+----------+
-- | t_a1b2c | CREATING |
-- +---------+----------+
查询训练进度:
SHOW TRAIN JOB 't_a1b2c';

-- 返回:
-- +---------+--------+----------+------------+
-- | task_id | status | progress | duration_s |
-- +---------+--------+----------+------------+
-- | t_a1b2c | READY | 100% | 45.2 |
-- +---------+--------+----------+------------+

模型导入

对于已在外部平台完成训练的模型,用户可通过 IMPORT MODEL 语句从 COS(对象存储)导入 ONNX 格式的模型文件,注册到数据库内统一管理和推理。导入时支持声明预处理逻辑,推理阶段系统将自动执行。
语法:
IMPORT MODEL <model_name>
FROM '<cos_path>'
INPUT ( <column_name> <data_type> [, ...] )
OUTPUT ( <column_name> <data_type> [, ...] )
[ PREPROCESS ( <preprocess_expr> [, ...] ) ];
参数说明:
参数
必选
说明
model_name
模型唯一标识符
FROM
COS 路径,格式为 cos://bucket/path/model.onnx
INPUT
模型输入特征的列名与数据类型
OUTPUT
模型输出的列名与数据类型
PREPROCESS
预处理声明,推理时自动执行(算子同 特征预处理
支持的数据类型:
类型
说明
FLOAT
32位浮点数
DOUBLE
64位浮点数
INT
32位整数
BIGINT
64位整数
STRING
字符串(用于类别特征)
示例:
基础导入:
IMPORT MODEL external_price_model
FROM 'cos://ml-models/production/price_v3.onnx'
INPUT (
area FLOAT,
rooms INT,
floor INT,
age FLOAT,
has_parking INT
)
OUTPUT (
predicted_price FLOAT
);

-- 返回:
-- +------------------------+--------+-----------+
-- | model_name | status | source |
-- +------------------------+--------+-----------+
-- | external_price_model | READY | cos_import|
-- +------------------------+--------+-----------+
携带预处理的导入:
IMPORT MODEL external_score_model
FROM 'cos://ml-models/production/score_v2.onnx'
INPUT (
age FLOAT,
income FLOAT,
city STRING
)
OUTPUT (
risk_score FLOAT
)
PREPROCESS (
NORMALIZE(age, income, method = 'minmax'),
ONEHOT(city)
);

模型评估

模型训练或导入完成后,用户可使用测试数据集对模型进行效果评估,量化模型的预测质量。
语法:
EVALUATE MODEL <model_name>
[ METRICS ( <metric_name> [, ...] ) ]
AS <select_statement>;
支持的评估指标:
指标
全称
说明
mse
Mean Squared Error
均方误差
rmse
Root Mean Squared Error
均方根误差
mae
Mean Absolute Error
平均绝对误差
r2
R-Squared
决定系数
mape
Mean Absolute Percentage Error
平均绝对百分比误差
说明:
若不指定 METRICS 子句,系统将默认返回全部指标。
示例:
EVALUATE MODEL house_price_lgb
METRICS (rmse, r2, mae)
AS SELECT area, rooms, age, price FROM test_data;

-- 返回:
-- +------------------+-------+------+--------+
-- | model_name | rmse | r2 | mae |
-- +------------------+-------+------+--------+
-- | house_price_lgb | 12.45 | 0.93 | 8.72 |
-- +------------------+-------+------+--------+

模型服务:推理、内置模型与管理

单条推理(同步)

PREDICT 作为函数嵌入查询语句中,实时返回预测结果。
语法:
SELECT PREDICT(<model_name>, <col1>, <col2>, ...) AS <alias>
[, <other_columns>]
FROM <table>
[ WHERE <condition> ];
示例:
-- 对单条记录进行推理
SELECT id, PREDICT(house_price_lgb, area, rooms, age) AS predicted_price
FROM house_data
WHERE id = 1001;

-- 返回:
-- +------+-----------------+
-- | id | predicted_price |
-- +------+-----------------+
-- | 1001 | 356.8 |
-- +------+-----------------+

-- 对小批量数据进行同步推理
SELECT id, PREDICT(house_price_lgb, area, rooms, age) AS predicted_price
FROM house_data
WHERE city = 'shanghai'
LIMIT 100;

批量推理(异步任务)

面向大规模数据的离线推理场景。系统以后台任务形式执行,立即返回任务 ID,推理结果写入用户指定的目标位置。
语法:
CREATE PREDICT JOB
USING MODEL <model_name>
INPUT ( <select_statement> )
OUTPUT TO '<target>';
输出目标支持:
COS 路径cos://bucket/path/result.csv
数据库表db_name.table_name
示例:
-- 结果写入 COS
CREATE PREDICT JOB
USING MODEL house_price_lgb
INPUT (SELECT area, rooms, age FROM house_data WHERE city = 'beijing')
OUTPUT TO 'cos://ml-results/batch_predict_20260520.csv';

-- 返回:
-- +---------+----------+
-- | task_id | status |
-- +---------+----------+
-- | t_x7y8z | RUNNING |
-- +---------+----------+

-- 结果写入数据库表
CREATE PREDICT JOB
USING MODEL house_price_lgb
INPUT (SELECT id, area, rooms, age FROM house_data)
OUTPUT TO 'mydb.prediction_results';

任务状态查询

SHOW PREDICT JOB '<task_id>';

-- 返回:
-- +---------+-----------+----------+------------+----------------------------------+
-- | task_id | status | progress | duration_s | output_location |
-- +---------+-----------+----------+------------+----------------------------------+
-- | t_x7y8z | COMPLETED | 100% | 128.5 | cos://ml-results/batch_...csv |
-- +---------+-----------+----------+------------+----------------------------------+
任务状态说明:
状态
说明
RUNNING
任务执行中
COMPLETED
任务完成,结果可读取
FAILED
任务失败,可通过错误信息排查原因

内置预训练模型

以下模型由系统预置,用户无需训练或导入即可直接调用:
BGE-Large-ZH-v1.5 — 中文文本 Embedding 模型,精度最高,适合语义匹配准确率要求极高的场景,如精细化搜索、知识库问答
Multilingual-E5 — 多语言 Embedding 模型,支持100+语种的统一语义空间,适合跨语言检索与多语言内容理解
CLIP 系列 — 图文多模态 Embedding 模型,支持以文搜图、以图搜文,适合电商搜索、内容审核、多模态推荐

外部 LLM 函数调用

用户可将外部大语言模型服务(如 GPT、Claude、混元、文心等)注册为数据库内的可调用函数,在查询中直接调用 LLM 进行文本生成、摘要提取、情感分析、实体抽取等操作。
注册:
CREATE LLM FUNCTION <function_name>
ENDPOINT = '<service_url>'
OPTIONS (
api_key = '<key>',
model = '<model_name>',
timeout_ms = 30000,
max_tokens = 1024
);
调用:
-- 文本摘要
SELECT id, LLM_INVOKE(my_llm, concat('请总结以下内容:', content)) AS summary
FROM articles
WHERE id = 1001;

-- 情感分析
SELECT id, title, LLM_INVOKE(my_llm, concat('判断以下评论的情感倾向(正面/负面/中性):', comment)) AS sentiment
FROM user_reviews
LIMIT 50;

-- 使用 PROMPT 模板
SELECT id, LLM_INVOKE(my_llm, PROMPT('extract_entities', content)) AS entities
FROM documents;
管理:
-- 查看已注册的 LLM 函数
SHOW LLM FUNCTIONS;

-- 查看函数详情
DESCRIBE LLM FUNCTION my_llm;

-- 删除 LLM 函数
DROP LLM FUNCTION my_llm;

模型管理

产品提供完整的模型生命周期管理能力,用户可随时查看模型列表、了解模型详情、监控异步任务状态以及删除不再需要的模型。
查看模型列表:
SHOW MODELS;

-- 返回:
-- +------------------------+-----------+------------------+---------------------+--------+
-- | model_name | algorithm | source | created_at | status |
-- +------------------------+-----------+------------------+---------------------+--------+
-- | house_price_lgb | lightgbm | trained | 2026-05-20 10:30:00 | READY |
-- | house_price_lr | linear_reg| trained | 2026-05-19 14:00:00 | READY |
-- | external_price_model | onnx | cos_import | 2026-05-18 09:15:00 | READY |
-- +------------------------+-----------+------------------+---------------------+--------+
查看模型详情:
DESCRIBE MODEL house_price_lgb;

-- 返回:
-- +----------------+----------------------------------------------------+
-- | property | value |
-- +----------------+----------------------------------------------------+
-- | model_name | house_price_lgb |
-- | algorithm | lightgbm |
-- | status | READY |
-- | source | trained |
-- | created_at | 2026-05-20 10:30:00 |
-- | features | area (FLOAT), rooms (INT), age (FLOAT) |
-- | label | price (FLOAT) |
-- | options | n_estimators=100, learning_rate=0.1 |
-- | preprocess | NORMALIZE(area, age, method='minmax') |
-- | model_size | 2.3 MB |
-- | training_rows | 50000 |
-- | train_duration | 12.3s |
-- +----------------+----------------------------------------------------+
查看异步任务:
SHOW JOBS;

-- 返回:
-- +---------+----------+------------------+-----------+---------------------+
-- | task_id | type | model_name | status | created_at |
-- +---------+----------+------------------+-----------+---------------------+
-- | t_a1b2c | TRAIN | my_model | COMPLETED | 2026-05-20 10:00:00 |
-- | t_x7y8z | PREDICT | house_price_lgb | RUNNING | 2026-05-20 11:30:00 |
-- +---------+----------+------------------+-----------+---------------------+
删除模型:
删除模型将同时清理关联的 ONNX 文件、预处理 Pipeline 及元数据信息。
DROP MODEL <model_name>;
DROP MODEL house_price_lr;

-- 返回:
-- +----------------+--------+
-- | model_name | status |
-- +----------------+--------+
-- | house_price_lr | DROPPED|
-- +----------------+--------+
注意:
正在执行推理任务的模型不允许删除,需先取消相关任务。删除操作不可恢复。