创建AI模型,将其注册到元数据表中,供后续调用。
语法
table AI_CreateModel(text model_id, text model_url, text model_provider, text model_type, text model_name, json model_config, regprocedure model_headers_fn, regprocedure model_in_transform_fn, regprocedure model_out_transform_fn);
参数
参数名称 | 描述 |
model_id | 模型自定义名称,具有唯一性,便于模型管理。注意与 说明 模型自定义名称不可以下划线“_”开头。在创建Polar_AI插件时,系统默认创建了一批以下划线“_”开头的内置模型。您可以通过以下语句查看已创建的模型: |
model_url | 模型调用API,不允许为空。支持HTTP、HTTPS、FILE协议。 |
model_provider | 模型提供方,允许为空。示例如:AWS, Alibaba, Baidu, Tencent等。 |
model_type | 模型类型,允许为空。示例如:LSTM, GRU等。 |
model_name | 调用模型名称,不允许为空。示例如:text-embedding-v2。 |
model_config | 模型配置信息,使用JSON格式,不允许为空。示例如:{ "author_type":"token", "token":"<YOUR_API_KEY>" },其中:
|
model_headers_fn | 模型请求头函数,用于构建请求头,返回类型必须为JSONB,如果模型没有特殊要求无需指定,默认为空。 |
model_in_transform_fn | 模型输入转换函数,不允许为空。用于构建请求数据。详细介绍请参考模型输入转换函数。 |
model_out_transform_fn | 模型输出转换函数,不允许为空。用于解析模型返回数据。详细介绍请参考模型输出转换函数。 |
返回值
以表结构形式返回AI模型创建后的结果信息。表结构如下:
参数名称 | 描述 |
model_seq | 模型序号。 |
model_schema | 模型所属的工作空间。 |
model_id | 模型自定义名称。 |
model_qname | 模型名称。 |
created | AI模型是否创建成功:
|
函数说明
AI_CreateModel
仅将模型元数据注册到元数据表中,不执行模型调用。模型调用请参考AI_CallModel。模型输入转换函数(
model_in_transform_fn
)用于将输入内容转为模型对应的HTTP请求内容,且返回类型必须为JSONB。此处以大模型服务平台百炼中通用文本向量text-embedding-v2
模型为例,其HTTP请求内容为:{ "model": "text-embedding-v2", "input": { "texts": [ "风急天高猿啸哀" ] }, "parameters": { "text_type": "query" } }
请求体中,参数
model
和input.texts
为必填项,则模型输入函数可定义为:model_name
:调用模型名称。content
:请求生成向量的文本内容。
CREATE OR REPLACE FUNCTION my_text_embedding_in(model_name text, content text) RETURNS jsonb LANGUAGE plpgsql AS $function$ BEGIN RETURN ('{"model": "'|| model_name ||'","input":{"texts":["'|| content ||'"]},"parameters":{"text_type": "query"}}')::jsonb; END; $function$;
模型输出转换函数(
model_out_transform_fn
)用于将模型输出结果(通常为JSON)转为业务所需的格式。例如,已知模型实际返回的结果JSON格式如下:{ "usage": { "total_tokens": 7 }, "output": { "embeddings": [{ "embedding": [0.004930191827757042, -0.008629344325205105, 0.041976027360927766], "text_index": 0 }] }, "request_id": "317ba0d4-6c08-9c24-8725-eebd445def51" }
由于仅需获取
output.embeddings.embedding
中的向量部分内容,且保留jsonb
格式,因此模型输出函数可定义为:model_id
:参数类型必须为TEXT。response_json
:参数类型必须为JSONB。
CREATE OR REPLACE FUNCTION my_text_embedding_out(model_id text, response_json jsonb) RETURNS jsonb AS $$ select ((((response_json->>'output')::jsonb->>'embeddings')::jsonb)->0->>'embedding')::jsonb as result $$ LANGUAGE 'sql' IMMUTABLE;
示例
此处以创建大模型服务平台百炼中的通用文本向量模型为例,注册步骤如下:
创建输入转换函数。
CREATE OR REPLACE FUNCTION my_text_embedding_in(model_name text, content text) RETURNS jsonb LANGUAGE plpgsql AS $function$ BEGIN RETURN ('{"model": "'|| model_name ||'","input":{"texts":["'|| content ||'"]},"parameters":{"text_type": "query"}}')::jsonb; END; $function$;
创建输出转换函数。
CREATE OR REPLACE FUNCTION my_text_embedding_out(model_id text, response_json jsonb) RETURNS jsonb AS $$ select ((((response_json->>'output')::jsonb->>'embeddings')::jsonb)->0->>'embedding')::jsonb as result $$ LANGUAGE 'sql' IMMUTABLE;
建立PolarDB集群的专有网络VPC与阿里云百炼平台之间的网络连接。
在终端节点控制台上创建对应的私网连接(PrivateLink)。
创建通用文本向量模型。
在创建模型的过程中,需对以下参数进行调整:
模型配置信息
model_config
中的token
替换为您阿里云百炼平台的API Key。模型输入转换函数
model_in_transform_fn
为上述步骤创建的ai_text_embedding_in_fn
函数。模型输出转换函数
model_out_transform_fn
为上述步骤创建的ai_text_embedding_out_fn
函数。模型调用地址
model_url
域名修改,将原有模型调用地址域名替换为新建立的私网连接(PrivateLink),即将https://dashscope.aliyuncs.com
更改为http://vpc-cn-beijing.dashscope.aliyuncs.com
。
SELECT polar_ai.AI_CreateModel('my_text_embedding_model', 'http://vpc-cn-beijing.dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding','Alibaba','通用文本向量模型','text-embedding-v2','{"author_type": "token", "token": "<YOUR_API_KEY>"}', NULL, 'ai_text_embedding_in_fn'::regproc, 'ai_text_embedding_out_fn'::regproc);
返回结果如下,详细的返回值说明请参考返回值:
ai_createmodel -------------------------------------------------------- (1,my_text_embedding_model,polar_ai,text-embedding-v2,t)
(可选)查看已创建的AI模型:
SELECT * from polar_ai._ai_models;
返回结果如下:
model_seq | model_id | model_url | model_provider | model_type | model_name | model_config | model_headers_fn | model_in_transform_fn | model_out_transform_fn ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 | my_text_embedding_model | http://vpc-cn-beijing.dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding | Alibaba | 通用文本向量模型 | text-embedding-v2 | {"token": "20E0BE9E5438xxxxxxxxxxxxxxxxxxxx", "author_type": "token"} | - | ai_text_embedding_in_fn(text,text) | ai_text_embedding_out_fn(text,jsonb)