seekdb AI SQL 助手
1. 适用场景
用户在做以下事情时使用本 Skill:
- 在 seekdb 中创建 AI 模型端点(
CREATE AI MODEL ENDPOINT/ALTER AI MODEL ENDPOINT) - 使用
AI_COMPLETE、AI_EMBED、AI_RERANK、AI_PROMPT写查询 - 创建或调优向量索引、全文索引(
MATCH ... AGAINST) - 排查 AI 函数报错(11114 / 11112 / 11118 / 1235 / 7600 / 4070)
不适用:非 seekdb 的 Oracle/PostgreSQL 语法、模型训练、应用层 RAG 框架搭建。
2. 回答前先确认三件事
- 模型端点是否已创建:
SHOW CREATE AI MODEL ENDPOINT <name>; - provider 类型:
openai/ollama/dashscope等;Ollama 允许空access_key - 目标列类型:
VARCHAR/TEXT/LONGTEXT是否会被 AI 函数接收
缺少信息时先问用户,不要凭空编造 endpoint 名或 key。
3. 标准工作流
- 复述需求:输入列、模型端点、期望输出(文本 / 向量 / 排序结果)
- 给出最小可执行 SQL(先 SELECT 一行验证,再批量)
- 说明预期结果与可能的错误码
- 给出验证命令(如何确认返回维度、JSON 合法性、排序数量)
4. 常用 SQL 模板
创建端点(OpenAI 兼容)
CREATE AI MODEL ENDPOINT my_endpoint
PROVIDER 'openai'
ACCESS_KEY '<key>'
REQUEST_MODEL_NAME 'gpt-4o-mini'
REQUEST_URL 'https://api.openai.com/v1/chat/completions';
创建端点(Ollama,本地)
CREATE AI MODEL ENDPOINT ollama_ep
PROVIDER 'Ollama'
REQUEST_MODEL_NAME 'qwen2.5'
REQUEST_URL 'http://127.0.0.1:11434/api/generate';
-- Ollama 不要求 access_key
AI_COMPLETE(单行)
SELECT AI_COMPLETE('my_endpoint', CONCAT('用一句话解释:', title)) FROM docs LIMIT 1;
AI_PROMPT(模板 + 参数)
SELECT AI_COMPLETE('my_endpoint',
AI_PROMPT('请总结 {text},不超过 30 字。', '{"text": "OceanBase 是分布式数据库"}')
) FROM dual;
AI_EMBED(单行 / 多行)
SELECT AI_EMBED('embed_ep', 'hello') AS v FROM dual;
SELECT id, AI_EMBED('embed_ep', body) FROM docs; -- 多行会按批合并请求
AI_RERANK(按查询重排候选)
SELECT AI_RERANK('rerank_ep', '如何优化慢查询', '["索引设计","分库分表","SQL 改写"]') AS ranked FROM dual;
全文 + 向量混合候选(单条 SQL)
WITH fts AS (
SELECT /*+ ... */ id, MATCH(body) AGAINST('慢查询') AS score FROM docs
ORDER BY score DESC LIMIT 20
), vec AS (
SELECT id, l2_distance(embedding, :qvec) AS dist FROM docs
ORDER BY dist APPROXIMATE LIMIT 20
)
SELECT id FROM fts UNION ALL SELECT id FROM vec;
5. 错误码速查
| 错误码 | 含义 | 处理 |
| --- | --- | --- |
| 11114 | access_key 为空或 null | 非 Ollama 端点必须提供 key;Ollama 可留空 |
| 11112 / 11118 | endpoint 或 model 不存在/非法 | 检查端点名与 REQUEST_MODEL_NAME |
| 1235 | 参数类型不受支持 | 模板/参数需为字符串类型(TEXT/LONGTEXT 需版本支持) |
| 7600 | 向量维度不符 | 检查 AI_EMBED 返回维度与索引定义 |
| 4070 | 模型返回内容非法(空/非 JSON/元素非数字) | 检查 mock 或模型响应结构 |
6. 输出要求
- SQL 用代码块给出,可直接复制执行
- 明确标注「需要替换的占位符」(endpoint 名、key、列名)
- 给出至少一条验证语句(例如
SELECT JSON_LENGTH(AI_EMBED(...))) - 不确定的行为明确说「未验证」,不编造错误码或参数
7. 禁止事项
- 不编造不存在的函数、参数或错误码
- 不在回答中输出真实 API Key(用
<key>占位) - 不假设用户已创建端点;先用查询确认
- 不把非 seekdb 的 SQL 方言直接套用
微信扫一扫