云原生数据库PolarDB分布式版AI Function 提供包括大语言模型(Large Language Model,LLM)文本生成、向量化(Embedding)、语义相似度、交叉注意力精排、零样本分类、结构化抽取、文档解析、多模态向量化等一系列内置 SQL 函数。无需引入任何 AI SDK 或搭建外部推理服务,使用标准 SQL 调用即可完成企业级知识库检索、文本理解、推理生成等 AI 场景。
适用范围
已开通PolarDB-X实例,且实例版本需为2.6.0_5.4.21-20260610及以上版本。
仅支持企业版实例。
开启实例AI能力:请在实例详情页右上角,单击开启AI能力以开启实例AI能力,开启AI能力后,会为实例创建一个AI网关供您可以使用AI Function功能。
AI Function汇总表
当前PolarDB-X支持的 AI Function 如下表所示。
AI 网关会自动为每个 AI Function 绑定最佳默认模型,调用 Function 时无需指定模型名,系统会自动使用对应的默认模型。
如需切换为其他可用模型,可通过 Function 的第二个参数显式传入模型名。
本文AI_GATEWAY_XXX_MODEL均为 AI 网关注册模型名称,具体名称由 AI 网关注册决定,您可通过查看已注册模型查看具体注册的模型名称。
Function 名称 | 描述 | 默认模型 |
| 通过提示词调用大语言模型对文本进行推理生成。支持系统提示词、温度控制、思维链推理等参数。 |
|
| 对给定的文本计算一个固定维度的连续向量。 |
|
| 计算查询文本与候选文本(或预存向量)的语义相似度。当输入第二个参数为已存储向量时不调用API,性能高。 |
|
| 对给定的查询和候选文档进行交叉编码器(Cross-Encoder)精排打分。 |
|
| 根据提供的分类标签对输入文本进行零样本分类,支持单标签和多标签模式。 |
|
| 从输入文本中按指定 JSON 模式(JSON Schema)提取结构化字段。 |
|
| 生成一段文本的摘要,支持指定字数、输出语言和摘要风格。 |
|
| 将公网 PDF、图片等非结构化文件解析成纯文本。 |
|
| 对图片 URL、视频 URL 或纯文本生成多模态向量,支持图文混合检索。 |
|
| 将自然语言描述转换为 SQL 语句,自动识别当前数据库的表结构生成可执行 SQL。 |
|
使用AI Function
AI_PROMPT
通过提示词调用大语言模型对文本进行推理并输出结果。支持系统提示词设定角色、温度控制生成多样性、思维链推理(Qwen3 系列)等高级能力。
语法
--基础调用,自动使用默认 LLM 模型
SELECT AI_PROMPT(prompt)
--指定模型
SELECT AI_PROMPT(prompt, model)
--指定模型与生成参数
SELECT AI_PROMPT(prompt, model, options)参数说明
prompt:必填,待输入的提示词,支持字符类型(CHAR、VARCHAR、TEXT)。model:可选,AI Function 使用的模型名称。默认使用内置 LLM 模型AI_GATEWAY_LLM_MODEL。options:可选,JSON 字符串,控制 LLM 生成行为。各字段说明如下:字段
类型
说明
temperatureDOUBLE温度参数(0~2),越高越随机。
max_tokensINT最大生成 Token 数。
top_pDOUBLE核采样(Nucleus Sampling)参数。
stopSTRING / ARRAY停止生成的标记。
system_promptSTRING系统提示词,设定 AI 角色。
enable_thinkingBOOLEAN启用思维链推理模式(Qwen3 系列),默认
FALSE。
返回值说明
返回大模型对该问题的回答,类型为
TEXT。prompt参数为 NULL 或空字符串("")时返回报错,例如,AI_PROMPT requires at least 1 argument: prompt / AI_PROMPT: prompt cannot be empty。
使用示例
基础推理
SELECT AI_PROMPT('什么是 PolarDB-X?请用一句话回答。');返回结果如下。
AI_PROMPT --------- PolarDB-X 是阿里巴巴自主研发的云原生分布式数据库,兼容 MySQL 协议,支持海量数据的高并发实时处理与分析。指定模型
SELECT AI_PROMPT('用一句话解释什么是分布式数据库', 'AI_GATEWAY_LLM_MODEL');设定 AI 角色
SELECT AI_PROMPT( '请帮我优化这条 SQL: SELECT * FROM orders WHERE status = 1', 'AI_GATEWAY_LLM_MODEL', '{"system_prompt": "你是一个资深的数据库 DBA,专注于 SQL 性能优化。"}' );启用思维链推理
SELECT AI_PROMPT( '请分析这段代码的时间复杂度并给出优化建议: for(int i=0;i<n;i++) for(int j=i;j<n;j++) sum+=a[j];', 'AI_GATEWAY_LLM_MODEL', '{"enable_thinking": true}' );结合表数据为每行数据生成描述
SELECT name, AI_PROMPT(CONCAT('请用一句话描述这个城市: ', name)) AS description FROM city LIMIT 3;
AI_EMBEDDING
将输入的文本转换为一个固定维度的连续向量(JSON 数组),用于语义检索、聚类、推荐等场景。
语法
--基础调用,自动使用默认 EMBEDDING 模型
SELECT AI_EMBEDDING(text)
--指定模型
SELECT AI_EMBEDDING(text, model)
--指定模型与向量维度
SELECT AI_EMBEDDING(text, model, options)参数说明
text:必填,输入文本,支持字符类型(CHAR、VARCHAR、TEXT)。model:可选,AI Function 使用的模型名称。默认使用内置 EMBEDDING 模型AI_GATEWAY_EMBEDDING_MODEL。options:可选,JSON 字符串,可指定向量维度。字段
类型
说明
dimensionINT向量维度(默认由模型决定)。
返回值说明
返回 JSON 类型,是一个浮点数数组,长度由模型或
dimension参数决定。text参数为 NULL 或空字符串("")时返回报错,例如AI_EMBEDDING requires at least 1 argument: text。
使用示例
基础向量化
SELECT AI_EMBEDDING('PolarDB-X 是一款分布式数据库');返回结果是 JSON 数组,例如:
AI_EMBEDDING ------------ [0.123, -0.456, 0.789, ...]指定向量维度
SELECT AI_EMBEDDING( 'PolarDB-X 是一款分布式数据库', 'AI_GATEWAY_EMBEDDING_MODEL', '{"dimension": 512}' );持久化存储向量(一次计算,永久复用)
--建表时预留向量列 CREATE TABLE documents ( id BIGINT PRIMARY KEY AUTO_INCREMENT, content TEXT, embedding JSON ); --批量生成并存储向量 UPDATE documents SET embedding = AI_EMBEDDING(content) WHERE embedding IS NULL;
AI_SIMILARITY
计算查询文本与候选文本(或预存向量)的语义相似度,返回 0~1 之间的分值。当第二个参数传入 JSON 数组形式的向量时,函数直接使用该向量做相似度计算,不会调用任何 API,性能大幅提升,适合大规模在线检索。
语法
SELECT AI_SIMILARITY(query, text_or_vector [, similarity_type [, model]])参数说明
参数 | 类型 | 是否必需 | 说明 |
|
| 是 | 查询文本。 |
|
| 是 | 候选文本或预存向量(JSON 数组)。 |
|
| 否 | 相似度算法:
|
|
| 否 | 指定 EMBEDDING 模型名,不指定时使用默认模型。 |
返回值说明
返回
DOUBLE类型的相似度 Score,取值区间:[0, 1],值越大相似度越高。query或text_or_vector任一参数为 NULL 时返回报错,例如AI_SIMILARITY requires at least 2 arguments: input1, input2。
使用示例
文本对文本相似度
SELECT AI_SIMILARITY('云原生数据库', 'PolarDB-X 是一款分布式云原生数据库') AS score;返回结果如下。
score ----- 0.87(推荐)使用预存向量做语义检索
--直接读取 embedding 字段,零额外 API 调用 SELECT id, name, AI_SIMILARITY('分布式事务专家', embedding) AS score FROM resumes WHERE status = 'processed' AND embedding IS NOT NULL ORDER BY score DESC LIMIT 10;
AI_RANK
使用 Cross-Encoder 精排模型对查询和候选文档进行深度语义匹配打分,精度高于向量余弦相似度,常用作召回结果的二次精排。
语法
SELECT AI_RANK(query, candidate [, model [, options]])参数说明
query:必填,查询文本,支持字符类型(CHAR、VARCHAR、TEXT)。candidate:必填,候选文本,与 query 进行相关性比较,支持字符类型(CHAR、VARCHAR、TEXT)。model:可选,AI Function 使用的模型名称。默认使用内置 RERANK 模型AI_GATEWAY_RERANK_MODEL。options:可选,JSON 字符串,控制精排参数。
返回值说明
返回
DOUBLE类型的相关性 Score,取值区间:[0, 1],值越大相关性越高。query或candidate任一参数为空或NULL 时返回报错,例如AI_RANK requires at least 2 arguments: query, candidate。
性能建议:AI_RANK调用Cross-Encoder模型,单次耗时较高,应仅对召回结果(Top-20 以内)做精排,避免对全表数据直接精排。
使用示例
基础打分
SELECT AI_RANK( '如何优化数据库查询性能', '数据库索引设计与查询优化的 10 个最佳实践' ) AS score;返回结果如下。
score ----- 0.91对文档列表精排
SELECT id, title, AI_RANK('PolarDB-X 分布式事务', content) AS relevance FROM articles WHERE category = 'database' ORDER BY relevance DESC LIMIT 10;推荐用法:两阶段检索(先向量召回,再精排)
SELECT id, name, summary, similarity_score, AI_RANK('Java 后端高级工程师', summary) AS rank_score FROM ( SELECT id, name, summary, AI_SIMILARITY('Java 后端高级工程师', embedding) AS similarity_score FROM resumes WHERE embedding IS NOT NULL AND summary IS NOT NULL ORDER BY similarity_score DESC LIMIT 20 ) recalled ORDER BY rank_score DESC;
AI_CLASSIFY
将文本零样本归类到您指定的候选标签中。无需训练,只需提供候选标签列表即可。支持单标签(默认)和多标签两种模式。
语法
SELECT AI_CLASSIFY(text, labels_json [, model [, options]])参数说明
text:必填,需要分类的文本,支持字符类型(CHAR、VARCHAR、TEXT)。labels_json:必填,JSON 数组形式的分类标签列表,标签数量建议在 2~20 之间。model:可选,AI Function 使用的模型名称。默认使用内置 LLM 模型。options:可选,JSON 字符串。字段
类型
说明
multi_labelBOOLEAN启用多标签分类模式,返回多个匹配标签的 JSON 数组。默认
FALSE(单标签)。
返回值说明
单标签模式下返回匹配的标签字符串。
多标签模式下返回 JSON 数组形式的多个标签。
text参数为 NULL 或空字符串("")时返回报错,例如AI_CLASSIFY requires at least 2 arguments / AI_CLASSIFY: text cannot be empty。
使用示例
单标签分类(情感分析)
SELECT AI_CLASSIFY( '这款产品用了一周,质量很棒,非常推荐!', '["positive", "negative", "neutral"]' ) AS sentiment;返回结果如下。
sentiment --------- positive多标签分类
SELECT AI_CLASSIFY( '本文介绍了使用 Kubernetes 部署分布式数据库的最佳实践', '["数据库", "云原生", "运维", "开发"]', '', '{"multi_label": true}' ) AS tags;返回结果如下。
tags ---- ["数据库", "云原生", "运维"]批量分类写回
UPDATE resumes SET category = AI_CLASSIFY( raw_text, '["前端", "后端", "算法", "数据", "运维", "其他"]' ) WHERE category IS NULL AND status = 'processed';
AI_EXTRACT
从非结构化文本中按指定 JSON Schema 提取结构化字段,返回 JSON 对象,可直接使用 JSON_EXTRACT 等函数展开为列。
语法
SELECT AI_EXTRACT(text, schema_json [, model])参数说明
text:必填,输入文本,支持字符类型(CHAR、VARCHAR、TEXT)。schema_json:必填,JSON 字符串,描述需要提取的字段及其含义。model:可选,AI Function 使用的模型名称。默认使用内置 LLM 模型。
返回值说明
返回 JSON 对象,包含每个 Schema 字段对应的提取结果。
text参数为 NULL 或空字符串("")时返回报错,例如AI_EXTRACT requires at least 2 arguments / AI_EXTRACT: text cannot be empty。
使用示例
提取简历信息
SELECT AI_EXTRACT( '张三,8 年 Java 开发经验,毕业于上海交通大学计算机系,曾就职于阿里巴巴,熟悉 Spring Boot、Kafka、MySQL。', '{"name": "姓名", "experience_years": "工作年限", "university": "毕业院校", "skills": "技能列表", "company": "前雇主"}' ) AS info;返回结果如下。
{ "name": "张三", "experience_years": "8 年", "university": "上海交通大学", "skills": "Java, Spring Boot, Kafka, MySQL", "company": "阿里巴巴" }提取后展开为列
SELECT id, JSON_UNQUOTE(JSON_EXTRACT(info, '$.name')) AS name, JSON_UNQUOTE(JSON_EXTRACT(info, '$.university')) AS university, JSON_UNQUOTE(JSON_EXTRACT(info, '$.skills')) AS skills FROM ( SELECT id, AI_EXTRACT(raw_text, '{"name":"姓名","university":"学校","skills":"技能"}') AS info FROM resumes ) t;
AI_SUMMARIZE
将长文本压缩为指定字数以内的摘要,保留核心信息。支持指定输出语言和摘要风格。
语法
SELECT AI_SUMMARIZE(text, max_words [, model [, options]])参数说明
text:必填,输入文本,支持字符类型(CHAR、VARCHAR、TEXT)。max_words:必填,摘要最大字数,模型会尽量逼近该值。设为 0 表示不做长度限制。model:可选,AI Function 使用的模型名称。默认使用内置 LLM 模型。options:可选,JSON 字符串。字段
类型
说明
languageSTRING
指定摘要输出语言(如
"Chinese"、"English")。styleSTRING
摘要风格。设置范围:
(默认)连贯段落
bullet_points:要点列表
返回值说明
返回 TEXT 类型的摘要内容。
text参数为 NULL 或空字符串("")时返回报错。例如AI_SUMMARIZE: text cannot be empty。max_words参数取值小于0时返回报错。
使用示例
基础摘要
SELECT AI_SUMMARIZE(raw_text, 200) AS summary FROM resumes WHERE id = 1;指定输出语言(即使原文是英文,也输出中文摘要)
SELECT AI_SUMMARIZE(raw_text, 200, '', '{"language": "Chinese"}') AS summary FROM resumes WHERE id = 1;要点列表风格
SELECT AI_SUMMARIZE(raw_text, 300, '', '{"style": "bullet_points"}') AS summary FROM resumes WHERE id = 1;批量生成摘要并存储
UPDATE resumes SET summary = AI_SUMMARIZE(raw_text, 200) WHERE summary IS NULL AND status = 'processed';
AI_PARSE_DOCUMENT
解析公网 PDF、图片等非结构化文件,将其内容转换为纯文本,支持自动识别文件类型。
语法
SELECT AI_PARSE_DOCUMENT(url [, input_format [, model [, options]]])参数说明
参数 | 类型 | 是否必需 | 说明 |
|
| 是 | 文件的公网 URL。 |
|
| 否 | 文件格式提示,默认 |
|
| 否 | 指定 DOCUMENT_PARSE 模型名,默认使用 |
|
| 否 | 额外选项(JSON 格式)。 |
返回值说明
返回 TEXT 类型,是从文件中解析出的纯文本内容。
当解析失败时,返回错误描述文本而不抛出异常。
使用示例
解析公网 PDF
SELECT AI_PARSE_DOCUMENT('https://example.com/report.pdf') AS content;指定文件格式
SELECT AI_PARSE_DOCUMENT('https://example.com/report.pdf', 'pdf') AS content;解析图片
SELECT AI_PARSE_DOCUMENT('https://example.com/scan.jpg') AS content;解析后接入处理流水线(解析 → 抽取 → 摘要)
SELECT AI_PARSE_DOCUMENT('https://example.com/cv.pdf') AS raw_text, AI_EXTRACT( AI_PARSE_DOCUMENT('https://example.com/cv.pdf'), '{"name":"姓名","skills":"技能"}' ) AS structured, AI_SUMMARIZE( AI_PARSE_DOCUMENT('https://example.com/cv.pdf'), 200 ) AS summary;说明优化提示:上述写法对每个 Function 都重复调用了
AI_PARSE_DOCUMENT,建议使用临时表或子查询缓存解析结果,避免重复 API 调用。
AI_VL_EMBEDDING
对图片 URL、视频 URL 或纯文本生成多模态向量,支持图文混合语义检索。函数会自动检测输入类型,以 http:// 或 https:// 开头的输入按图片/视频处理,其他输入按文本处理。也可通过 options 显式指定。
支持的内容类型
文本:任意非 URL 字符串,自动识别为文本。
图片:jpg、jpeg、png、webp、bmp、tiff、tif、ico、dib、icns、sgi。
视频:mp4、avi、mov。
Base64 Data URI:
data:image/...或data:video/...。
语法
SELECT AI_VL_EMBEDDING(content [, model [, options]])参数说明
content:必填,文本字符串、图片/视频 URL 或 Base64 Data URI。model:可选,AI Function 使用的模型名称。默认使用内置 VL_EMBEDDING 模型AI_GATEWAY_VL_EMBEDDING_MODEL。options:可选,JSON 字符串。字段
类型
说明
content_typeSTRING显式指定内容类型:
"text"、"image"或"video"。不指定时自动检测。dimensionINT向量维度(默认由模型决定)。
fpsDOUBLE视频帧采样率(仅对视频有效)。
返回值说明
返回 JSON 类型的浮点数数组。
AI_VL_EMBEDDING生成的文本向量与图片/视频向量位于同一多模态语义空间,可直接互相计算相似度。这与AI_EMBEDDING生成的纯文本向量空间不同,两者不可混用。
使用示例
生成图片向量
SELECT AI_VL_EMBEDDING('https://example.com/product.jpg') AS vec;生成文本向量(多模态空间)
SELECT AI_VL_EMBEDDING('红色连衣裙') AS vec;生成视频向量并显式指定参数
SELECT AI_VL_EMBEDDING( 'https://example.com/clip.mp4', '', '{"content_type": "video", "dimension": 1024, "fps": 2.0}' ) AS vec;以图搜图
SELECT id, product_name, AI_SIMILARITY( AI_VL_EMBEDDING('https://example.com/query.jpg'), image_embedding ) AS similarity FROM products WHERE image_embedding IS NOT NULL ORDER BY similarity DESC LIMIT 10;图文混合检索
--同时计算文本相似度与图片相似度,加权求和 SELECT id, product_name, (AI_SIMILARITY('红色连衣裙', text_embedding) * 0.4 + AI_SIMILARITY(AI_VL_EMBEDDING('https://example.com/red_dress.jpg'), image_embedding) * 0.6 ) AS combined_score FROM products ORDER BY combined_score DESC LIMIT 20;
AI_TEXT2SQL
将自然语言查询转换为可执行 SQL 语句。函数自动识别当前数据库(USE database 选择的库)下的表结构,并将其与您的自然语言描述一同提交给大语言模型生成 SQL。当库中表数量较多时,会先让模型筛选相关表,再据此生成最终 SQL。
--基础调用
SELECT AI_TEXT2SQL(prompt);
--指定模型
SELECT AI_TEXT2SQL(prompt, model);
--指定模型与生成参数
SELECT AI_TEXT2SQL(prompt, model, options);参数说明
prompt:必填,自然语言查询描述,支持字符类型(CHAR、VARCHAR、TEXT)。model:可选,AI Function 使用的模型名称。默认使用 AI 网关配置的 LLM 模型AI_GATEWAY_LLM_MODEL。options:可选,JSON 字符串,控制 LLM 生成行为(temperature、max_tokens等,与 AI_PROMPT 一致)。
返回值说明
返回 TEXT 类型,是模型生成的 SQL 语句。
prompt参数为 NULL 或空字符串("")时返回报错。例如 AI_TEXT2SQL: text cannot be empty。
使用示例
基础查询生成
--切换到目标数据库后调用 USE my_database; SELECT AI_TEXT2SQL('查询所有年龄大于 30 的用户');返回类似:
AI_TEXT2SQL ----------- SELECT * FROM users WHERE age > 30;跨表聚合查询
SELECT AI_TEXT2SQL('统计每个部门的员工数量和平均工资');中英文混合
SELECT AI_TEXT2SQL('Find the top 10 best-selling products in the last 7 days');指定模型与温度
SELECT AI_TEXT2SQL( '查询销售额最高的5个商品', 'AI_GATEWAY_LLM_MODEL', '{"temperature": 0.1, "max_tokens": 500}' );
AI_TEXT2SQL仅生成 SQL 字符串,不会自动执行。生成的 SQL 应在执行前由您/应用进行评审(Review)。函数依赖当前数据库的表结构信息,调用前请确保已通过
USE <database>切换到目标数据库。当库中表数量超过 10 时,模型会先识别相关表再生成 SQL,可能产生两次模型调用。
AI Function 与模型
模型管理
AI 网关启动后会自动注册以下类型的模型,并为每个 AI Function 配置最佳默认模型:
模型类型 | 默认模型名 | 适用 Function | 说明 |
LLM |
|
| 大语言模型,用于文本生成、分类、抽取等。 |
EMBEDDING |
|
| 文本向量化模型。 |
RERANK |
|
| 交叉注意力精排模型。 |
DOCUMENT_PARSE |
|
| 文档解析模型。 |
VL_EMBEDDING |
|
| 多模态向量化模型。 |
模型的注册、更新和管理由 AI 网关自动完成,您无需手动操作。AI 网关会根据最新的模型能力自动选择最佳模型版本。具体已注册的模型名称和底层映射,可通过 SHOW AI MODEL(企业版)查询。
查看已注册模型
企业版(SHOW AI MODEL / AI_DESCRIBE_MODEL)
使用
SHOW AI MODEL语句查看所有已注册的 AI 模型配置(包括内置模型和您自定义模型)。如需查看指定模型的基础信息,可使用SHOW AI MODEL FROM <model_name>。--查看所有已注册模型 SHOW AI MODEL; --查看指定模型详情 SHOW AI MODEL FROM AI_GATEWAY_LLM_MODEL;返回字段说明
列名
说明
NAME模型配置名称(唯一标识)。
MODEL底层模型标识(实际调用 API 时使用的模型名)。
PROVIDER模型提供方:
dashscope、openai、custom。ENDPOINTAPI 调用端点 URL。
STATUS模型状态:
ACTIVE(可用)、INACTIVE(已禁用)。DESCRIPTION模型描述信息。
mysql> SHOW AI MODEL; +---------------------------------+--------------------+-----------+------------------+--------+-------------------------------+ | NAME | MODEL | PROVIDER | ENDPOINT | STATUS | DESCRIPTION | +---------------------------------+--------------------+-----------+------------------+--------+-------------------------------+ | AI_GATEWAY_LLM_MODEL | qwen3.5-plus | dashscope | (AI网关管理) | ACTIVE | 默认 LLM 模型(平衡) | | AI_GATEWAY_LLM_MODEL_MAX | qwen-max | dashscope | (AI网关管理) | ACTIVE | LLM 模型(最强推理) | | AI_GATEWAY_LLM_MODEL_TURBO | qwen-turbo | dashscope | (AI网关管理) | ACTIVE | LLM 模型(快速经济) | | AI_GATEWAY_EMBEDDING_MODEL | text-embedding-v4 | dashscope | (AI网关管理) | ACTIVE | 默认文本向量化模型 | | AI_GATEWAY_RERANK_MODEL | qwen3-vl-rerank | dashscope | (AI网关管理) | ACTIVE | 默认精排模型 | | AI_GATEWAY_DOCUMENT_PARSE_MODEL | qwen-doc-turbo | dashscope | (AI网关管理) | ACTIVE | 默认文档解析模型 | | AI_GATEWAY_VL_EMBEDDING_MODEL | qwen3-vl-embedding | dashscope | (AI网关管理) | ACTIVE | 默认多模态向量化模型 | +---------------------------------+--------------------+-----------+------------------+--------+-------------------------------+使用
SELECT AI_DESCRIBE_MODEL(model_name)查看指定模型的完整详情(包括 endpoint、provider、底层 model、API Key(脱敏)、创建/修改时间、状态等),返回 JSON 字符串。SELECT AI_DESCRIBE_MODEL('AI_GATEWAY_LLM_MODEL');返回字段说明
字段
说明
name模型配置名称(唯一标识)。
provider模型提供方。
endpointAPI 调用端点 URL。
model底层模型标识。
api_key模型级 API Key,展示时会脱敏(如
sk-f****8jTh)。description模型描述信息。
gmt_created模型注册时间。
gmt_modified模型最后修改时间。
status模型状态:
ACTIVE(可用)、INACTIVE(已禁用)。
查看 AI 函数配置
企业版(SHOW AI FUNCTION)
使用SHOW AI FUNCTION语句查看所有 AI 函数及其当前配置的默认模型。
--查看所有 AI 函数
SHOW AI FUNCTION;
--查看指定函数
SHOW AI FUNCTION FROM AI_PROMPT;返回列说明
列名 | 说明 |
| AI 函数名称。 |
| 当前配置的默认模型名。 |
| 默认模型对应的实际底层模型标识。 |
| 函数描述。 |
mysql> SHOW AI FUNCTION;
+-------------------+---------------------------------+--------------------+----------------------------+
| FUNCTION | DEFAULT_MODEL | ACTUAL_MODEL | DESCRIPTION |
+-------------------+---------------------------------+--------------------+----------------------------+
| AI_PROMPT | AI_GATEWAY_LLM_MODEL | qwen3.5-plus | AI prompt function |
| AI_EMBEDDING | AI_GATEWAY_EMBEDDING_MODEL | text-embedding-v4 | AI embedding function |
| AI_CLASSIFY | AI_GATEWAY_LLM_MODEL | qwen3.5-plus | AI classify function |
| AI_RANK | AI_GATEWAY_RERANK_MODEL | qwen3-vl-rerank | AI rank function |
| AI_SIMILARITY | AI_GATEWAY_EMBEDDING_MODEL | text-embedding-v4 | AI similarity function |
| AI_EXTRACT | AI_GATEWAY_LLM_MODEL | qwen3.5-plus | AI extract function |
| AI_SUMMARIZE | AI_GATEWAY_LLM_MODEL | qwen3.5-plus | AI summarize function |
| AI_PARSE_DOCUMENT | AI_GATEWAY_DOCUMENT_PARSE_MODEL | qwen-doc-turbo | AI parse document function |
| AI_VL_EMBEDDING | AI_GATEWAY_VL_EMBEDDING_MODEL | qwen3-vl-embedding | AI vl embedding function |
| AI_TEXT2SQL | AI_GATEWAY_LLM_MODEL | qwen3.5-plus | AI text2sql function |
+-------------------+---------------------------------+--------------------+----------------------------+修改 AI 函数默认模型
修改默认模型时请确保模型类型与函数匹配,例如AI_EMBEDDING应使用 EMBEDDING 类型模型。如果将不匹配类型的模型设为默认模型,后续调用该 Function 时可能会报错。
企业版(AI_UPDATE_FUNCTION)
使用 AI_UPDATE_FUNCTION 函数动态修改指定 AI 函数的默认模型。修改后立即在集群所有计算节点(CN)生效,无需重启。
语法
SELECT AI_UPDATE_FUNCTION(function_name, model_name);参数说明
参数 | 类型 | 是否必需 | 说明 |
| STRING | 是 | AI 函数名称(大小写不敏感),如 |
| STRING | 是 | 已注册的模型名称(需在 |
返回值说明
成功返回字符串
"OK"。若函数名无效,报错
Unknown AI function。若模型名不存在,报错
Model not found。
使用示例
将 AI_PROMPT 的默认模型改为
QWEN_MAX。SELECT AI_UPDATE_FUNCTION('AI_PROMPT', 'AI_GATEWAY_LLM_MODEL'); -- 返回: OK验证修改生效
SHOW AI FUNCTION FROM AI_PROMPT; -- DEFAULT_MODEL 列显示: AI_GATEWAY_LLM_MODEL使用您自定义模型作为默认模型
--先注册自定义模型 SELECT AI_REGISTER_MODEL('my_gpt4', 'openai', 'https://api.openai.com/v1/chat/completions', 'gpt-4', '{"api_key":"sk-xxxx"}'); --将 AI_PROMPT 默认模型改为自定义模型 SELECT AI_UPDATE_FUNCTION('AI_PROMPT', 'my_gpt4');
指定 AI Function 调用的模型
每个 AI Function 都默认绑定一个推荐模型,调用 Function 时如未指定模型名,会自动使用对应类型的默认模型。如需切换为其他内置模型,仅需在 Function 调用时通过第二个参数显式传入模型名即可。
不同 AI Function 需要适配特定类型的模型,例如 AI_EMBEDDING 需要 EMBEDDING 类型模型,AI_RANK 需要 RERANK 类型模型,AI_PARSE_DOCUMENT 需要 DOCUMENT_PARSE 类型模型。请勿将不匹配类型的模型传入对应 Function。
--默认调用 AI_GATEWAY_LLM_MODEL
SELECT AI_PROMPT('用一句话解释什么是分布式数据库');
--切换为更快的 Turbo 模型
SELECT AI_PROMPT('用一句话解释什么是分布式数据库', 'AI_GATEWAY_LLM_MODEL');
--切换为更强的 Max 模型
SELECT AI_PROMPT('用一句话解释什么是分布式数据库', 'AI_GATEWAY_LLM_MODEL');最佳实践
了解了 AI Function 的基础用法后,您可以通过以下典型场景将它们组合应用,解决复杂的业务问题。
两阶段语义检索(向量召回 + Cross-Encoder 精排)
构建企业级语义检索时,单一向量相似度的召回精度有限。推荐采用“向量粗排 + 精排”两阶段方案:先用 AI_SIMILARITY 基于预存向量做毫秒级召回,再用 AI_RANK 对前 N 条(Top-N)候选做高精度打分,最终输出最相关结果。
--1. 离线建库:批量计算并存储向量
UPDATE resumes
SET embedding = AI_EMBEDDING(raw_text)
WHERE embedding IS NULL;
--2. 在线检索:两阶段查询,一条 SQL 完成
SELECT id, name, summary, similarity_score,
AI_RANK('Java 后端高级工程师', summary) AS rank_score
FROM (
SELECT id, name, summary,
AI_SIMILARITY('Java 后端高级工程师', embedding) AS similarity_score
FROM resumes
WHERE embedding IS NOT NULL AND summary IS NOT NULL
ORDER BY similarity_score DESC
LIMIT 20
) recalled
ORDER BY rank_score DESC;关键要点
离线阶段一次计算向量并落库,在线阶段直接读取,避免重复调用 Embedding API。
内层只做向量计算(无 API 调用),外层
AI_RANK仅对 Top-20 精排,整体延迟可控。
非结构化文档转结构化数据流水线
将解析、抽取、摘要、分类、向量化等多个 AI Function 串联,可在一条 SQL 中将 PDF/图片等非结构化数据转化为可分析的结构化数据并落库。
INSERT INTO resumes (raw_text, structured_info, summary, category, embedding)
SELECT
AI_PARSE_DOCUMENT(file_url) AS raw_text,
AI_EXTRACT(
AI_PARSE_DOCUMENT(file_url),
'{"name":"姓名","skills":"技能","experience_years":"工作年限"}'
) AS structured_info,
AI_SUMMARIZE(AI_PARSE_DOCUMENT(file_url), 200) AS summary,
AI_CLASSIFY(
AI_PARSE_DOCUMENT(file_url),
'["前端", "后端", "算法", "数据", "运维", "其他"]'
) AS category,
AI_EMBEDDING(AI_PARSE_DOCUMENT(file_url)) AS embedding
FROM file_inbox
WHERE status = 'pending';优化提示:上述写法对每个 Function 都重复调用了 AI_PARSE_DOCUMENT,建议使用临时表或子查询缓存解析结果,避免重复 API 调用。
多模态商品检索(以图搜图 + 图文混合检索)
借助 AI_VL_EMBEDDING,可在统一的多模态语义空间中同时表达图片与文本,构建图文一体的商品检索系统。
商品入库:同时存储多模态向量与纯文本向量
INSERT INTO products (name, image_url, text_embedding, image_embedding) VALUES ( ?, ?, AI_EMBEDDING(?), AI_VL_EMBEDDING(?) );以图搜图
SELECT id, product_name, AI_SIMILARITY( AI_VL_EMBEDDING('https://example.com/query.jpg'), image_embedding ) AS similarity FROM products WHERE image_embedding IS NOT NULL ORDER BY similarity DESC LIMIT 10;图文混合检索:文本相似度与图片相似度加权融合
SELECT id, product_name, (AI_SIMILARITY('红色连衣裙', text_embedding) * 0.4 + AI_SIMILARITY(AI_VL_EMBEDDING('https://example.com/red_dress.jpg'), image_embedding) * 0.6 ) AS combined_score FROM products ORDER BY combined_score DESC LIMIT 20;
关键要点
AI_VL_EMBEDDING与AI_EMBEDDING输出的向量位于不同语义空间,不可跨函数混用,建议在表中分别存储text_embedding与image_embedding。加权系数可结合业务效果调整,例如重图片场景设 image 权重 0.7+,重文本场景设 text 权重 0.7+。
批量数据治理(分类、脱敏、清洗)
利用 AI Function 的批量调用能力,可在 SQL 中直接对存量数据做语义级治理,无需写额外的 ETL 程序。
批量分类
UPDATE feedback SET sentiment = AI_CLASSIFY(content, '["positive", "negative", "neutral"]') WHERE sentiment IS NULL;批量结构化抽取
UPDATE orders SET parsed_info = AI_EXTRACT( order_notes, '{"customer_name":"客户姓名","delivery_address":"配送地址","special_requirements":"特殊要求"}' ) WHERE order_notes IS NOT NULL AND parsed_info IS NULL;批量摘要
UPDATE articles SET summary = AI_SUMMARIZE(content, 200) WHERE summary IS NULL;
关键要点
推荐分批
UPDATE(如按主键范围),避免一次性扫描超大表导致单条 SQL 长时间占用资源。对延迟敏感的在线场景,建议将向量、摘要等结果预计算并落库,查询时直接复用。