体验 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 参数直接使用。