体验 AI 函数服务
本教程将引导您快速上手 seekdb AI 函数服务,深入了解其如何利用 AI 能力,帮助您理解实际应用,并在几分钟内体验 AI 原生数据库 的强大功能。
概述
AI 函数通过 SQL 表达式,将 AI 模型能力直接集成到数据库内的数据处理中。它极大地简化了利用 AI 大模型进行数据提取、分析、总结和保存等操作,是当前数据库和数据仓库领域的重要新特性。seekdb 通过 DBMS_AI_SERVICE 包提供全面的 AI 模型和端点管理,并内置了多个 AI 函数表达式,同时支持通过视图监控 AI 模型调用情况。您无需编写额外代码,即可在 SQL 中直接调用 AI 模型,几分钟内即可体验 AI_COMPLETE、AI_EMBED、AI_RERANK、AI_PROMPT 几个核心函数:
AI_EMBED:通过调用嵌入模型(Embedding Model)将文本数据转换为向量数据。AI_COMPLETE:通过调用指定文本生成大模型处理提示词和数据信息,并解析处理结果。AI_PROMPT:将提示词模板和动态数据组织成 JSON 格式,可以在AI_COMPLETE函数中替换prompt参数直接使用。AI_RERANK:通过调用重排序模型(Rerank Model)根据提示词对文本进行相似度排序。
该特性可以应用于文本生成、文本转换、文本重排序等场景。
前提条件
-
联系管理员获取相应的数据库连接串,然后执行以下命令连接到数据库:
# host: seekdb 数据库连接 IP。
# port: seekdb 数据库连接端口。
# database_name: 需要访问的数据库名称。
# user_name: 数据库用户名。
# password: 数据库密码。
mysql -h$host -P$port -u$user_name -p$password -D$database_name -
确保你已拥有 AI 函数调用权限相关权限。每个示例前都会提供完整的模型和端点注册信息,您可以直接复制使用。
步骤一:使用 AI_EMBED 生成向量
AI_EMBED 可以将文本转换为向量,用于向量搜索。这是向量搜索的基础步骤,将文本数据转换为高维向量表示,以便进行相似度计算。
注册嵌入模型和端点
- 阿里云
- 阿里云 DashScope
- 硅基流动
- 腾讯混元
此示例为阿里云(兼容 OpenAI 格式)的嵌入模型和端点注册示例。
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_embed');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_embed_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_embed', '{
"type": "dense_embedding",
"model_name": "BAAI/bge-m3"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_embed_endpoint', '{
"ai_model_name": "ob_embed",
"url": "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "aliyun-openAI"
}');
此示例为阿里云 DashScope(非兼容 OpenAI 格式)的嵌入模型和端点注册示例。
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_embed');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_embed_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_embed', '{
"type": "dense_embedding",
"model_name": "BAAI/bge-m3"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_embed_endpoint', '{
"ai_model_name": "ob_embed",
"url": "https://dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "aliyun-dashscope"
}');
此示例为硅基流动(SiliconFlow)的嵌入模型和端点注册示例。
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_embed');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_embed_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_embed', '{
"type": "dense_embedding",
"model_name": "BAAI/bge-m3"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_embed_endpoint', '{
"ai_model_name": "ob_embed",
"url": "https://api.siliconflow.cn/v1/embeddings",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "siliconflow"
}');
此示例为腾讯混元(Hunyuan)(兼容 OpenAI 格式)的嵌入模型和端点注册示例。
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_embed');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_embed_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_embed', '{
"type": "dense_embedding",
"model_name": "BAAI/bge-m3"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_embed_endpoint', '{
"ai_model_name": "ob_embed",
"url": "https://api.hunyuan.cloud.tencent.com/v1/embeddings",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "hunyuan-openAI"
}');
尝试嵌入单行数据
SELECT AI_EMBED("ob_embed", "Hello world") AS embedding;
返回结果预期是一个向量数组,例如 [0.1, 0.2, 0.3]。这样可以将表中的文本批量转换为向量,用于后续的向量搜索。
步骤二:使用 AI_COMPLETE 和 AI_PROMPT 生成文本
AI_COMPLETE 可以在 SQL 中直接调用大语言模型,实现文本生成、翻译、分析等功能。AI_PROMPT 函数可以将提示词模板和动态数据组织成 JSON 格式,可以在 AI_COMPLETE 函数中替换 prompt 参数直接使用。
注册文本生成模型和端点
- 阿里云
- 阿里云 DashScope
- deepseek
- 硅基流动
- 腾讯混元
此示例为阿里云(兼容 OpenAI 格式)的文本生成模型和端点注册示例。
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_complete');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_complete_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_complete', '{
"type": "completion",
"model_name": "THUDM/GLM-4-9B-0414"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_complete_endpoint', '{
"ai_model_name": "ob_complete",
"url": "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "aliyun-openAI"
}');
此示例为阿里云 DashScope(非兼容 OpenAI 格式)的文本生成模型和端点注册示例。
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_complete');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_complete_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_complete', '{
"type": "completion",
"model_name": "THUDM/GLM-4-9B-0414"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_complete_endpoint', '{
"ai_model_name": "ob_complete",
"url": "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "aliyun-dashscope"
}');
此示例为 deepseek 的文本生成模型和端点注册示例。
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_complete');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_complete_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_complete', '{
"type": "completion",
"model_name": "THUDM/GLM-4-9B-0414"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_complete_endpoint', '{
"ai_model_name": "ob_complete",
"url": "https://api.deepseek.com/chat/completions",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "deepseek"
}');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_complete');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_complete_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_complete', '{
"type": "completion",
"model_name": "THUDM/GLM-4-9B-0414"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_complete_endpoint', '{
"ai_model_name": "ob_complete",
"url": "https://api.siliconflow.cn/v1/chat/completions",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "siliconflow"
}');
此示例为腾讯混元(Hunyuan)(兼容 OpenAI 格式)的文本生成模型和端点注册示例。
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_complete');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_complete_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_complete', '{
"type": "completion",
"model_name": "THUDM/GLM-4-9B-0414"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_complete_endpoint', '{
"ai_model_name": "ob_complete",
"url": "https://api.hunyuan.cloud.tencent.com/v1/chat/completions",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "hunyuan-openAI"
}');
尝试情感分析
SELECT AI_COMPLETE("ob_complete", AI_PROMPT('你的任务是对提供的文本进行情感分析,判断其情感倾向为正面还是负面。
以下是需要分析的文本:
<text>
{0}
</text>
判断标准如下:
如果文本表达的是正面情感,输出1;如果文本表达的是负面情感,输出 -1。不要输出其他东西。', '天气真好啊')) AS sentiment;
返回结果如下:
+----------+
| sentiment|
+----------+
| 1 |
+----------+
步骤三:使用 AI_RERANK 优化搜索结果
AI_RERANK 可以对搜索结果进行智能重排序,根据查询词的相关性对文档列表重新排序。
注册重排序模型和端点
- 阿里云 DashScope
- 硅基流动
此示例为阿里云 DashScope(非兼容 OpenAI 格式)的重排序模型和端点注册示例。
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_rerank');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_rerank_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_rerank', '{
"type": "rerank",
"model_name": "BAAI/bge-reranker-v2-m3"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_rerank_endpoint', '{
"ai_model_name": "ob_rerank",
"url": "https://dashscope.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "aliyun-dashscope"
}');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL ('ob_rerank');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_rerank_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_rerank', '{
"type": "rerank",
"model_name": "BAAI/bge-reranker-v2-m3"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_rerank_endpoint', '{
"ai_model_name": "ob_rerank",
"url": "https://api.siliconflow.cn/v1/rerank",
-- 需替换为实际的 access_key
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "siliconflow"
}');
尝试重排序
SELECT AI_RERANK("ob_rerank", "Apple", '["apple", "banana", "fruit", "vegetable"]');
返回结果如下:
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| AI_RERANK("ob_rerank", "Apple", '["apple", "banana", "fruit", "vegetable"]') |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| [{"index": 0, "relevance_score": 0.9911285638809204}, {"index": 1, "relevance_score": 0.0030552432872354984}, {"index": 2, "relevance_score": 0.0003349370090290904}, {"index": 3, "relevance_score": 0.00001892922773549799}] |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set
重排序可以显著提升搜索结果的准确性,特别适用于 RAG 场景。
步骤四:综合应用:构建智能问答系统
将三个 AI 函数组合使用,三步构建一个简单的智能问答系统。