体验 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 可以将文本转换为向量,用于向量搜索。这是向量搜索的基础步骤,将文本数据转换为高维向量表示,以便进行相似度计算。
注册嵌入模型和端点
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"
}');
尝试嵌入单行数据
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 参数直接使用。
注册文本生成模型和端点
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"
}');
尝试情感分析
SELECT AI_COMPLETE("ob_complete", AI_PROMPT('你的任务是对提供的文本进行情感分析,判断其情感倾向为正面还是负面。
以下是需要分析的文本:
<text>
{0}
</text>
判断标准如下:
如果文本表达的是正面情感,输出1;如果文本表达的是负面情感,输出 -1。不要输出其他东西。', '天气真好啊')) AS sentiment;
返回结果如下:
+----------+
| sentiment|
+----------+
| 1 |
+----------+
步骤三:使用 AI_RERANK 优化搜索结果
AI_RERANK 可以对搜索结果进行智能重排序,根据查询词的相关性对文档列表重新排序。
注册重排序模型和端点
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 函数组合使用,三步构建一个简单的智能问答系统。
注册所有需要的模型和端点
本示例需要同时使用嵌入模型、文本生成模型和重排序模型,请确保已注册以下模型和端点:
-- 注册嵌入模型(如果步骤一中已注册,可跳过)
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": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "siliconflow"
}');
-- 注册文本生成模型(如果步骤二中已注册,可跳过)
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": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "siliconflow"
}');
-- 注册重排序模型(如果步骤三中已注册,可跳过)
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": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "siliconflow"
}');
请将所有 access_key 替换为实际的 API Key。如果在前面的步骤中已经注册过相应的模型,可以跳过对应的注册步骤。
准备数据并生成向量
CREATE TABLE knowledge_base (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
content TEXT,
embedding TEXT
);
INSERT INTO knowledge_base (title, content) VALUES
('seekdb 简介', 'seekdb 是一个强大的数据库系统,支持向量搜索和 AI 函数。'),
('向量搜索', '向量搜索可以用于语义搜索,找到相似的内容。'),
('AI 函数', 'AI 函数可以在 SQL 中直接调用 AI 模型。');
UPDATE knowledge_base
SET embedding = AI_EMBED("ob_embed", content);
向量搜索并重排序
SET @query = "什么是向量搜索?";
SET @query_vector = AI_EMBED("ob_embed", @query);
-- 直接构建字符串数组格式的文档列表
SET @candidate_docs = '["seekdb 是一个强大的数据库系统,支持向量搜索和 AI 函数。", "向量搜索可以用于语义搜索,找到相似的内容。"]';
SELECT AI_RERANK("ob_rerank", @query, @candidate_docs) AS ranked_results;
返回结果如下,index 为文档索引,relevance_score 为相关性分数:
+-------------------------------------------------------------------------------------------------------------+
| ranked_results |
+-------------------------------------------------------------------------------------------------------------+
| [{"index": 1, "relevance_score": 0.9904329776763916}, {"index": 0, "relevance_score": 0.16993996500968933}] |
+-------------------------------------------------------------------------------------------------------------+
1 row in set
生成答案
基于第一步的问题搜索和第二步的重排序结果,生成答案:
SELECT AI_COMPLETE("ob_complete",
AI_PROMPT('基于以下文档内容,回答用户的问题。
用户问题:{0}
相关文档:{1}
请基于以上文档内容,简洁准确地回答用户的问题。', @query, CAST(JSON_EXTRACT(@candidate_docs, '$[1]') AS CHAR))) AS answer;
返回结果如下:
+--------------------------------------------------------------------------------------------------------------------------------------------+
| answer |
+--------------------------------------------------------------------------------------------------------------------------------------------+
| 根据提供的文档内容,向量搜索是一种用于语义搜索的技术,旨在通过比对向量数据来找到相似的内容。 |
+--------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set
通过这三个步骤,您可以在 seekdb 数据库内快速完成完整的 AI 应用流程:向量化、搜索、重排序、生成答案。
总结
通过本教程,您已经掌握了 seekdb AI 函数服务的核心功能:
- AI_EMBED:文本转向量,为向量搜索准备数据。
- AI_COMPLETE:在 SQL 中直接调用 LLM,实现文本生成、翻译、分析等功能。
- AI_RERANK:优化搜索结果的准确性,提升 RAG 应用效果。
下一步
- 通过视图查看和监控 AI 模型信息及调用情况在 AI 函数服务使用及示例-AI 模型调用监控小节
- 了解 向量搜索
- 探索 混合搜索 功能
- 查看 语义索引 简化向量搜索流程
更多操作
更多体验 seekdb 的 AI Native 特性以及尝试基于 seekdb 搭建 AI 应用的使用指导,参见:
- 体验向量搜索
- 体验全文索引
- 体验混合搜索
- 体验语义索引
- 体验 Cursor Agent + OceanBase MCP 的 Vibe Coding 新范式
- 基于 seekdb 搭建知识库桌面应用
- 基于 seekdb 多模融合构建文旅小助手
- 基于 seekdb 构建图搜图应用
除了使用 SQL 进行操作之外,也支持通过 seekdb 提供的 Python SDK(pyseekdb)进行操作,使用方法参见 通过 Python SDK 体验嵌入式和 pyseekdb 概述。