SELECT语法用于对状态为READY的模型进行模型推理。推理任务共两类:时序类和非时序类,不同任务类型的语法及参数要求不同。
引擎与版本
SELECT语法适用于时序引擎和AI引擎。
时序引擎3.4.26及以上版本支持SELECT语法。
AI引擎无版本限制。
要求Lindorm SQL为2.6.1及以上版本。如何查看Lindorm SQL的版本,请参见SQL版本说明。
如果您需要创建AI推理服务模型(文本、图像、音视频等非结构化数据的AI分析与处理),需开通2.5.1.1及以上版本的宽表引擎。
非时序类任务
非时序类任务包括:文生图、多模态图片生成、基础问答和检索类任务(语义检索和检索问答)。
语法
SELECT function_identifier(model_identifier, field1_identifier, field2_identifier, ..., params) [FROM table_identifier [WHERE clause]]
使用说明
系统函数(function_identifier)
取值为ai_infer
。ai_infer
为执行非时序类任务时使用的推理函数。
模型名称(model_identifier)
model_identifier为已创建的模型名称,必选参数,类型为VARCHAR。
字段名称(field_identifier)
不同的TASK(任务类型)可指定的字段数量不同,且含义不同。具体说明如下表所示:
任务类型 | 参数 | 是否必选 | 参数类型 | 说明 |
文生图 | field1_identifier | 是 | VARCHAR | 表(FROM条件中指定的表)中的字符串列。 |
多模态图片生成 | field1_identifier | 是 | VARCHAR | Lindorm S3协议兼容的地址。如何获取,请参见查看宽表引擎连接地址。 |
field2_identifier | 是 | VARCHAR | 表(FROM条件中指定的表)中的字符串列。 | |
语义检索 | field1_identifier | 是 | VARCHAR | 需要检索的文本常量。 |
基础问答 | field1_identifier | 是 | VARCHAR | 输入的问题。 |
检索问答 | field1_identifier | 是 | VARCHAR | 输入的问题。 |
例如,当任务类型为检索问答时,ai_infer('rqa_model', 'Lindorm是什么')
中,field1_identifier为'Lindorm是什么'
,即输入的问题。
推理调整参数(params)
可选参数。格式为:key1=value1, [key2=value2]
。具体说明如下表所示:
任务类型 | 参数 | 说明 |
特征提取 | normalize | 是否对返回的向量进行归一化处理。取值如下:
|
文生图 | 无 | 无。 |
语义检索 | score | 是否返回语义相似度。取值如下:
|
topK | 检索时返回最相似的数据条数。取值范围为[1, 10000],默认值为10。 | |
efSearch | 检索时动态列表的长度,取值范围为[1,1000],默认值为100。efSearch的值越大,查询精度越高,同时会消耗更多的性能,降低查询速度。 | |
threshold | 检索时返回数据需满足语义相似度的最低阈值,取值范围为[0, 1.0],默认值为0.6。 | |
returnChunk | 是否返回文档切片(Chunk)而不是原始语料(仅在模型创建时指定text_splitter参数为
| |
extendChunk | 在返回Chunk时指定进行前后扩展(根据Chunk的顺序)的数量(仅在指定returnChunk参数为 | |
rrfK | 指定混合检索时使用的RRF算法中的常量K(仅在模型创建时混合检索功能打开时生效),取值范围为[1,100]。默认值为60。 | |
verbose | 是否返回详细信息。取值如下:
| |
基础问答 | 无 | 无。 |
检索问答 | topK | 检索时返回最相似的数据条数。取值范围为[1, 10000],默认值为10。 |
efSearch | 检索时动态列表的长度。取值范围为[1,1000],默认值为100。efSearch的值越大,查询精度越高,同时会消耗更多的性能,降低查询速度。 | |
threshold | 检索时返回数据需满足语义相似度的最低阈值。取值范围为[0, 1.0],默认值为0.6。 | |
extendChunk | 在检索获取Chunk时指定进行前后扩展(根据Chunk顺序)的数量(仅在模型创建时指定text_splitter参数为 | |
verbose | 是否返回详细信息。取值如下:
|
返回结果集说明
返回值取决于任务类型,即模型创建时设置的TASK(任务类型)参数。
任务类型 | 返回值类型 | 返回值说明 |
特征提取 | VARCHAR | 返回文本对应的向量。 |
文生图 | VARCHAR | 图片在Lindorm S3兼容协议中的地址。 |
语义检索 | VARCHAR | 以JSON格式表示的相似文本列表。 |
基础问答 | VARCHAR | 问答的答案。 |
检索问答 | VARCHAR | 问答的答案。 |
示例
使用ai_infer
函数进行模型推理。
SELECT ai_infer('rqa_model', 'Lindorm是什么');
时序类任务
时序类任务包括:时序预测和时序异常检测。
语法
SELECT function_identifier(field_identifier, model_identifier, params) FROM table_identifier [WHERE clause] SAMPLE BY time_interval
使用说明
系统函数(function_identifier)
取值如下:
FORECAST:时序预测函数。如何配置FORECAST函数中的field_name、model_name和params,请参见FORECAST函数(时序预测)。
ANOMALY_DETECT:时序异常检测函数。如何配置ANOMALY_DETECT函数中的field_name、model_name和params,请参见ANOMALY_DETECT函数(时序异常检测)。
返回结果集说明
任务类型 | 返回值类型 | 返回值说明 |
时序预测 | DOUBLE | 时序预测结果。 |
时序异常检测 | BOOLEAN | 时序异常检测结果。具体说明如下:
|
示例
SELECT `time`, id_code, forecast(sales, 'tft_model') AS sales_forecast FROM fresh_sales WHERE `time` >= '2022-07-18T00:00:00+08:00' AND id_code = 'bf502edc7025604a51c96d21e09de0e8' sample BY 0;