跳到主要内容

使用 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用户输入的希望转换的文本数据。VARCHARNo
dim指定输出相关维度的向量。部分大模型厂商提供的 API,支持配置多个维度。INT64Yes

必须指定 model_keyinput,并且其中一个为 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]|
+----------------+

相关文档