AI_EXTRACT

概述

AI_EXTRACT
AI_EXTRACT
是云器 Lakehouse 提供的 AI 信息抽取函数,可从文本或图像中按指定字段提取结构化 JSON 数据。无需编写 prompt,只需通过
schema
schema
定义要提取的字段,即可在 SQL 中一行完成信息抽取。

云器将 AI 计算下沉至存储层与执行引擎,

AI_EXTRACT
AI_EXTRACT
可直接在 SQL 查询中对表中每一行调用大模型,无需将数据导出到外部系统,兼顾数据安全与处理效率。


语法

AI_EXTRACT(model, content, schema [, options])


参数说明

必需参数

参数类型说明
model
model
STRING模型标识,指定调用的 AI 模型。支持两种来源,见下方说明。
content
content
STRING 或图像引用待抽取的文本内容,或通过
GET_PRESIGNED_URL()
GET_PRESIGNED_URL()
引用的图像。
schema
schema
JSON 字面量定义要提取的字段,格式为
JSON'{"key":"字段描述", ...}'
JSON'{"key":"字段描述", ...}'
。每个 key 是返回 JSON 中的字段名,value 是对该字段的自然语言描述。

可选参数

参数类型说明
options
options
JSON 字面量控制超时、并发、模型参数等,格式见下方 options 说明。

model 参数说明

model
model
参数支持两种来源:

来源一:API Gateway Endpoint(推荐)

通过 AI Gateway 中已配置的 Endpoint 名称指定模型:

'endpoint:qwen3.5-plus'

来源二:API Connection 连接对象

通过预先创建的 API Connection 连接对象指定模型:

CREATE API CONNECTION conn_bailian TYPE ai_function PROVIDER = 'bailian' BASE_URL = 'https://dashscope.aliyuncs.com/api/v1' API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxxxx'; SELECT AI_EXTRACT('conn_bailian:qwen3.5-plus', ...);

options 参数说明

选项类型默认值说明
response.timeout
response.timeout
STRING(秒)系统默认HTTP 请求超时时间
task.concurrency
task.concurrency
STRING系统默认批量处理时的并发度
model.params
model.params
JSON 对象透传给底层模型的参数,如
{"enable_thinking":false}
{"enable_thinking":false}

示例:

JSON'{"response.timeout":"300", "task.concurrency":"12", "model.params":{"enable_thinking":false}}'


返回值

返回 STRING 类型,内容为 JSON 格式字符串,包含

schema
schema
中定义的所有 key 及其抽取结果。所有字段值均为字符串类型。

示例:

{"age": "28", "name": "张三", "phone": "13800138000"}


错误行为

输入情况返回值
content
content
为 NULL
NULL
content
content
为空字符串
''
''
NULL
content
content
为纯空白字符(如
'   '
' '
发送给模型,各字段返回空字符串,如
{"name": ""}
{"name": ""}
文本中找不到对应字段的信息该字段值为空字符串
""
""
,如
{"name": "", "phone": ""}
{"name": "", "phone": ""}
Endpoint 不存在报错:
No available endpoints found
No available endpoints found
Endpoint 格式错误报错:
Invalid model coordinates: 'xxx'
Invalid model coordinates: 'xxx'
请求超时报错:
Read timed out
Read timed out
图片文件不存在报错:
Failed to fetch image from URL...HTTP status: 404
Failed to fetch image from URL...HTTP status: 404

使用说明

schema 定义

schema 的 value 支持简单标签和问句描述两种写法,效果等价,问句描述在字段含义模糊时可提升准确率:

-- 简单标签 JSON'{"name":"姓名", "age":"年龄", "phone":"电话"}' -- 问句描述 JSON'{"name":"员工姓名是什么?", "age":"员工年龄是多大?", "phone":"员工的电话号码是多少?"}'

schema 的 key 和 value 均支持中文、英文、日文等多语言。value 必须是字符串,不支持嵌套对象(如

{"type":"number"}
{"type":"number"}
)。建议字段数控制在 10 个以内,最多支持约 20 个字段。

超时设置建议

场景推荐 timeout
纯文本抽取≥ 30 秒
单张图像抽取≥ 60 秒
批量图像抽取≥ 300 秒

批量处理

处理大量数据时,通过

task.concurrency
task.concurrency
控制并发度(建议 5~12),平衡速度与稳定性。对大表建议先用
WHERE
WHERE
过滤出需要处理的行,避免不必要的模型调用。

图像处理

图像场景建议设置

"model.params":{"enable_thinking":false}
"model.params":{"enable_thinking":false}
以减少响应时间。批量图像处理前,先用
SHOW USER VOLUME DIRECTORY
SHOW USER VOLUME DIRECTORY
确认文件列表,避免因文件不存在导致查询失败。

结合 JSON 函数解析结果

返回值为 JSON 字符串,可配合

json_extract_string
json_extract_string
等函数进一步解析:

WITH extracted AS ( SELECT id, AI_EXTRACT( 'endpoint:qwen3.5-plus', content, JSON'{"name":"姓名", "phone":"电话"}' ) AS result FROM my_table ) SELECT id, json_extract_string(result, '$.name') AS name, json_extract_string(result, '$.phone') AS phone FROM extracted;


示例

示例一:从文本中抽取联系人信息

SELECT AI_EXTRACT( 'endpoint:qwen3.5-plus', '张三,28岁,电话13800138000', JSON'{"name":"姓名", "age":"年龄", "phone":"电话"}' ) AS result;

返回:

{"age": "28", "name": "张三", "phone": "13800138000"}

示例二:批量抽取客户记录

SELECT id, AI_EXTRACT( 'endpoint:qwen3.5-plus', content, JSON'{"name":"客户姓名", "phone":"联系电话", "email":"邮箱地址", "company":"公司名称"}' ) AS extracted FROM customer_records WHERE content IS NOT NULL;

示例三:抽取订单信息

SELECT AI_EXTRACT( 'endpoint:qwen3.5-plus', '订单信息:客户张三于2024年3月15日下单,购买了iPhone 15 Pro Max 256GB,单价8999元,数量2台,总计17998元', JSON'{"customer":"客户姓名", "order_date":"下单日期", "product":"产品名称", "unit_price":"单价", "quantity":"数量", "total":"总金额"}' ) AS result;

返回:

{ "customer": "张三", "order_date": "2024年3月15日", "product": "iPhone 15 Pro Max 256GB", "quantity": "2台", "total": "17998元", "unit_price": "8999元" }

示例四:批量图像商品信息抽取

SELECT AI_EXTRACT( 'endpoint:qwen3.5-plus', (GET_PRESIGNED_URL(USER VOLUME, relative_path) AS image), JSON'{"product_name":"产品名称", "brand":"品牌", "category":"类别", "price":"价格", "spec":"规格"}', JSON'{"model.params":{"enable_thinking":false}, "response.timeout":"300", "task.concurrency":"12"}' ) AS info FROM (SHOW USER VOLUME DIRECTORY SUBDIRECTORY 'images/products');

示例五:使用 API Connection

SELECT AI_EXTRACT( 'conn_bailian:qwen3.5-plus', '李四,35岁,邮箱 lisi@example.com', JSON'{"name":"姓名", "age":"年龄", "email":"邮箱"}' ) AS result;


限制说明

限制项说明
schema value 类型仅支持字符串描述,不支持 JSON Schema 类型定义(如
{"type":"number"}
{"type":"number"}
返回值类型所有字段值均为字符串类型,不会自动转换为数字或布尔值
字段数量建议不超过 10 个字段,最多支持约 20 个字段
错误隔离批量处理中如有单行失败(如图片 404),整个查询会失败
模型依赖需要 AI Gateway 中已配置可用的 Endpoint,或预先创建的 API Connection
结果确定性LLM 输出具有非确定性,同一输入多次执行结果可能略有差异
联系我们
预约咨询
微信咨询
电话咨询