操作指导
创建模型服务:
CREATE LLM RERANK MODEL mod_r using model = 'BAAI/bge-reranker-v2-m3', url = 'https://ip:port/v1/rerank', api_key='api_key'; --创建rerank模型
CREATE LLM QUERY MODEL mod_q USING model = 'Qwen/Qwen2.5-7B-Instruct', url ='https://ip:port/v1/chat/completions', api_key='api_key', extra_params='{"max_tokens": 5, "temperature": 0.1}'; --创建大语言模型
CREATE LLM EMBED MODEL mod_e USING MODEL = 'Qwen/gte-Qwen2-1.5B-instruct', url ='https://ip:port/v1/embeddings', api_key='api_key'; --创建embedding模型 使用大语言模型服务,其语法为:
select llm_query(model_name, prompt);
其中llm_query即为SQL中标准的标量函数。在该函数中可以在提示词字段中将提示词文本与表格中字段结合生成提示词。model_name为已注册的模型服务,参数含义如下:
| 参数名称 | 类型 | 说明 |
|---|---|---|
| prompt | text | 用户提示词,另外数据库原生支持通过'||'符号将输入的字符串与表中的列拼接起来,此时非字符串数据会尝试自动转换为text类型,不支持转换则会报错,如果prompt长度超过模型最大tokens范围则模型侧会拒绝服务并返回异常信息。 |
| model_name | text | 模型服务在GaussDB中注册的模型名称。 |
使用示例:
SELECT llm_query(model_name, 'Please summarize the following text'||T.text) FROM T --案例1
SELECT C.username, R.content FROM Customer C JOIN Review R ON C.userid = R.userid WHERE llm_query('Qwen2', 'Please output True if the following review represents positive feedback: \n ' || R.content) = 'True' -- 案例2 使用embedding模型,其语法为:
select llm_embed(model_name, input) from table;
该函数调用向量模型,将input中的文本内容生成对应的向量。非透明多写下输出类型为floatvector类型,其中向量的维度由调用的模型决定,该维度在模型注册时确定后存储在系统表中。
llm_embed参数如下:
| 参数名称 | 类型 | 说明 |
|---|---|---|
| input | text | 待向量化的文本内容。另外数据库原生支持通过'||'符号将输入的字符串与表中的列拼接起来,此时非字符串数据会尝试自动转换为text类型,不支持转换则会报错。 |
| model_name | text | 已注册的向量模型的名称。 |
使用示例:
SELECT documents.content, llm_embed( 'mod_e', documents.content) FROM documents WHERE documents.upload_date <= '2025-07-01';
该查询首先查询documents表中所有上传日期在2025-07-01之前的记录,从中对每一行调用mod_e向量模型服务将content字段的文本向量化。
使用rerank模型,其语法为:
select llm_rerank(model_name, query, document) from table;
该函数为标量函数,输出类型为double类型,对输入的每一行数据执行该函数生成对应的结果。其中参数:
| 参数名称 | 类型 | 说明 |
|---|---|---|
| model_name | text | 已注册的重排序服务名称。 |
| query | text | 待比较相关度的问题。数据库原生支持通过'||'符号将输入的字符串与表中的列拼接起来,此时非字符串数据会尝试自动转换为text类型,不支持转换则会报错。 |
| document | text | 为待排序的文本。数据库原生支持通过'||'符号将输入的字符串与表中的列拼接起来,此时非字符串数据会尝试自动转换为text类型,不支持转换则会报错。 |
使用示例:
SELECT documents.content, llm_rerank('mod_r', '手机银行', documents.content) AS score FROM documents ORDER BY score LIMIT 3; 该查询对documents表中的每一行数据,调用mod_r模型判断该行content字段与“手机银行”关键词的相关性,按照相关性进行排序,并输出top 3的结果。
BATCH优化通过GUC参数enable_llm_pull_up参数控制,为on时走batch优化,off时关闭,BATCH优化仅支持embedding和rerank函数。在非BATCH优化下,函数以每个元组为单位调用模型接口,在BATCH优化下,函数会以llm_max_batch_size个元组为单位调用模型,因此可以带来较大的性能提升。