使用 AI_EMBED 函数
本文档介绍如何使用 AI 函数服务中的 AI_EMBED 函数在 seekdb 中将文本生成向量嵌入。
概述
提示
AI_EMBED 函数目前仅支持文本数据生成向量嵌入。
提示
混合搜索(Hybrid Search)依赖 AI 模型管理和 AI_EMBED 函数功能。在删除 AI 模型时,需检查其是否被混合搜索引用,以避免潜在问题。
seekdb 支持使用 AI 函数服务中的 AI_EMBED 函数生成向量嵌入。用户无需安装任何依赖,只需注册好模型信息,即可在 seekdb 中使用 AI 函数服务生成向量嵌入。
AI_EMBED 函数通过 model_key 指定一个已注册的嵌入模型(Embedding Model),将用户提供的文本数据转换为向量数据。当模型支持多个维度时,允许通过 dim 参数指定输出相关维度的向量。
前提条件
权限授予
在使用 AI_EMBED 函数等 AI 函数服务之前,需要确保你已拥有相关权限。详细权限请参见 AI 函数调用权限。
模型注册
在使用 AI_EMBED 函数之前,需要确保你已使用系统包 DBMS_AI_SERVICE 中的子程序注册好模型信息。以下是注册示例:
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"
}');
支持的所有模型供应商,及其对应的 URL 具体信息请参见 CREATE_AI_MODEL_ENDPOINT。
语法
AI_EMBED(model_key, input, [dim])
参数说明:
| 参数 | 描述 | 类型 | 是否可空 |
|---|---|---|---|
| model_key | 数据库内注册的模型。 | VARCHAR(128) | No |
| input | 用户输入的希望转换的文本数据。 | VARCHAR | No |
| dim | 指定输出相关维度的向量。部分大模型厂商提供的 API,支持配置多个维度。 | INT64 | Yes |
必须指定 model_key、input,并且其中一个为 NULL 时,函数提示报错。
返回值说明如下:
- vector 格式的字符串,嵌入模型根据文本转换的向量。
示例
嵌入单行数据
SELECT AI_EMBED("ob_embed","Hello world") AS embedding;
返回结果如下:
+----------------+
| embedding |
+----------------+
| [0.1, 0.2, 0.3]|
+----------------+
嵌入表上列
CREATE TABLE comments (
id INT AUTO_INCREMENT PRIMARY KEY,
content TEXT
);
INSERT INTO comments (content) VALUES ('hello world!');
SELECT AI_EMBED("ob_embed",content) AS embedding FROM comments;
返回结果如下:
+----------------+
| embedding |
+----------------+
| [0.1, 0.2, 0.3]|
+----------------+