AI Function

HologresV3. 2版本起正式支持AI Function,并提供了Embedding、RankLLM等算子。您可通过标准SQL直接调用AI Function,无需额外推理服务,实现企业级知识库构建与推理等AI场景。

前提条件

  1. 购买AI资源

  2. 部署模型

AI Function汇总表

当前Hologres支持AI Function如下表:

  • 每个AI Function会根据部署的模型,默认分配一个最佳的模型,可以通过系统表查看AI Function默认分配的模型。

  • 调用AI Function时可以不需要填写模型名称,系统会自动使用默认的模型。如果需要更换AI Function对应的模型,需要通过系统表更改,详情请参见修改AI Function对应的模型

  • 每个模型部署时需要的AI资源不同,请根据业务需要购买合适的规格。

Function名称

描述

支持的模型

支持的版本

to_file

将一个URL转成FILE类型。

无需模型,通常适配Object Table一起使用。

V4.0及以上版本支持

prompt

拼装大模型提示词,可以包装多模态提示词。

无需模型。

ai_parse_document

将非结构化PDF、图片等数据解析成文本。

ds4sd/docling-models。

ai_embed

对给定的文本、图片计算一个固定维度的连续向量。

文本类:

  • iic/nlp_gte_sentence-embedding_chinese系列。

  • Qwen/Qwen3-Embedding-XB系列。

图片类:clip-ViT-B系列。

  • V3.2及以上版本支文本向量

  • V4.0及以上版本支持图片向量

ai_rank

对给定的文本进行相关性打分。

Qwen3系列大模型,推荐使用Qwen/Qwen3-32B。

V3.2.2及以上版本

ai_chunk

长文本分段。

recursive-character-text-splitter。

ai_gen

通过提示词调用大语言模型对文本、图片进行推理并输出结果。

文本类:Qwen3系列大模型,推荐使用Qwen/Qwen3-32B。

图片类:Qwen/Qwen2.5-VL-xB类型。

  • V3.2及以上版本支持文本推理

  • V4.0及以上版本支持图片推理

ai_classify

根据提供的分类标签对输入文本进行分类。

Qwen3系列大模型,推荐使用Qwen/Qwen3-32B。

V3.2及以上版本

ai_extract

从输入文本中提取指定的标签信息。

Qwen3系列大模型,推荐使用Qwen/Qwen3-32B。

ai_mask

从输入文本中将指定的标签信息脱敏,信息脱敏后用[MASKED]做占位符。

Qwen3系列大模型,推荐使用Qwen/Qwen3-32B。

ai_fix_grammar

用于修复输入文本的语法错误。

Qwen3系列大模型,推荐使用Qwen/Qwen3-32B。

ai_summarize

生成一段文本的摘要。

Qwen3系列大模型,推荐使用Qwen/Qwen3-32B。

ai_translate

将输入文本翻译成指定的语言。

Qwen3系列大模型,推荐使用Qwen/Qwen3-32B。

ai_similarity

计算两个输入文本的相似度。

Qwen3系列大模型,推荐使用Qwen/Qwen3-32B。

ai_analyze_sentiment

对输入的文本进行情感分析。

  • Qwen3系列大模型,推荐使用Qwen/Qwen3-32B。

  • iic/nlp_structbert_sentiment-classification_chinese-base模型。

AI Function使用

ai_embed

  • 描述:对输入的文本、图片计算一个固定维度的连续向量

    --计算文本向量
    select ai_embed([model,] content);
    --计算图片向量
    select ai_embed([model,] file);
  • 参数说明

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • content:必填,输入的文本,支持字符类型(CHAR、VARCHAR、TEXT)。

    • file:必填,FILE类型,一般是输入IMAGEFILE对象。仅Hologres V4.0及之后版本支持该类型。

  • 返回值说明

  • 使用示例

    • 文本Embeding

      SELECT ai_embed('Hologres是阿里巴巴自主研发的一站式实时数仓引擎,支持海量数据实时写入、实时更新、实时加工、实时分析.');

      返回结果如下。

      ai_embed
      -------
      {-0.020090256, -0.009496426, -0.01584659, ..., -0.057956327}
    • 图片Embedding

      --图片embedding,示例将一张oss上的图片embedding
      SELECT ai_embed('clip-ViT-B-32', to_file('oss://****', 'oss-cn-hangzhou-internal.aliyuncs.com', 'roleran'));

ai_rank

  • 描述:对给定的文档进行相关性打分。

    SELECT ai_rank([model,] source_sentence, sentence_to_compare);
  • 参数说明

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • source_sentence:必填,文本内容,支持字符类型(CHAR、VARCHAR、TEXT)。

    • sentence_to_compare:必填,与source_sentence参数值进行对比的语句,支持字符类型(CHAR、VARCHAR、TEXT)。

  • 返回值说明

    • 返回FLOAT类型的相关性Score,取值区间:[0, 1],值越大相关性越高。

    • source_sentencesentence_to_compare参数其中一个值为NULL时,返回0。

  • 使用示例

    SELECT knowledge, ai_rank('阿里巴巴2024年营收是多少?', knowledge) AS score
      FROM (
          VALUES ('Amazon 2024年营收6380亿美元'), 
                 ('Alibaba 2024年营收9411.68亿元'), 
                 ('阿里巴巴2023年的营收8686.87亿元')
      ) AS knowledge_table(knowledge)
      ORDER BY score DESC;

    返回结果如下。

    knowledge	                  | score
    -----------------------------|-------
    Alibaba 2024年营收9411.68亿元	 |0.899999976
    阿里巴巴2023年的营收8686.87亿元 |0.200000003
    Amazon 2024年营收6380亿美元	   |0.100000001

ai_chunk

  • 描述:对长文本进行分段(切片)。

    SELECT ai_chunk([model,] long_sentence[, chunk_size, chunk_overlap, separators])
  • 参数说明

    参数名称

    说明

    model

    可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    long_sentence

    必填,需要分段的源文本,支持字符类型(CHAR、VARCHAR、TEXT)。

    chunk_size

    可选,每个分段的Chunk长度,支持INT类型, 默认值是300。

    chunk_overlap

    可选,相邻ChunkOverlap长度,避免句子切到不同Chunk破坏语义,支持INT类型,默认值是50。

    separators

    可选,切分Chunk的分隔符,TEXT[]类型。默认值是["\n\n", "\n", " ", ""], 适用于处理英文文本。如果是中文文本建议使用中文分隔符["\n\n", "\n", "。", "!", "?", ";", ",", " "]

  • 返回值说明

    • 返回TEXT[]类型,表示分割好的Chunks列表。

    • long_sentence参数值为None时,则返回None。

  • 使用示例

    SELECT ai_chunk('Hologres是阿里巴巴自主研发的一站式实时数仓引擎(Real-Time Data Warehouse),支持海量数据实时写入、实时更新、实时加工、实时分析,支持标准SQL(兼容PostgreSQL协议和语法,支持大部分PostgreSQL函数),支持PB级数据多维分析(OLAP)与即席分析(Ad Hoc),支持高并发低延迟的在线数据服务(Serving),支持多种负载的细粒度隔离与企业级安全能力,与MaxCompute、Flink、DataWorks深度融合,提供企业级离在线一体化全栈数仓解决方案。',40,10);

    返回结果如下。

    ai_chunk
    ---
    "{"Hologres是阿里巴巴自主研发的一站式实时数仓引擎(Real-Time Data","Warehouse),支持海量数据实时写入、实时更新、实时加工、实时分析,支持标","工、实时分析,支持标准SQL(兼容PostgreSQL协议和语法,支持大部分Po","语法,支持大部分PostgreSQL函数),支持PB级数据多维分析(OLAP)与","维分析(OLAP)与即席分析(Ad","Hoc),支持高并发低延迟的在线数据服务(Serving),支持多种负载的细粒度","支持多种负载的细粒度隔离与企业级安全能力,与MaxCompute、Flink、D","te、Flink、DataWorks深度融合,提供企业级离在线一体化全栈数仓解","线一体化全栈数仓解决方案。"}"

ai_gen

  • 描述:通过提示词调用大语言模型对文本、图片进行推理并输出结果。

    --文本推理
    SELECT ai_gen([model,] text)
    --图片推理
    SELECT ai_gen([model,] text, file)
    --封装提示词
    SELECT ai_gen([model,] prompt)
  • 参数说明

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • text:必填,待输入的提示词,支持字符类型(CHAR、VARCHAR、TEXT)。

    • file:必填,FILE类型,如图片通过Object Table转成FILE类型,仅Hologres V4.0及以上版本支持该参数。

    • prompt:必填,JSON类型,prompt()函数的返回值。

  • 返回值说明

    • 返回大模型对该问题的回答。

    • text参数值为NULL时,则返回NULL;

    • text参数值为空字符串("")时,则返回空字符串("")。

    • 当 prompt参数值为NULL,则报错。

  • 使用示例

    • 文本推理

      CREATE TABLE questions (
          question TEXT
      );
      
      INSERT INTO questions (question) VALUES
        ('什么是人工智能?'),
        ('如何提高英语口语水平?'),
        ('健康饮食有哪些注意事项?');
      
      SELECT
        question,
        ai_gen('请用 20 个字回答如下问题: ' || question) AS answer
      FROM
        questions;

      返回结果如下。

       question            |	answer
        --------------------|-------
      如何提高英语口语水平?	  |多说多练,模仿发音,积累词汇,勇于开口。
      健康饮食有哪些注意事项?	|均衡搭配,控制油盐糖,多蔬果,少加工,适量饮水,规律饮食。
      什么是人工智能?	        |人工智能是模拟人类智能的计算机系统,能学习、推理、感知和解决问题。
    • 图片推理

      SELECT  ai_gen('jpg_llm','这张图片中有什么?', to_file('oss://****/bd****k/val/images/b9b53753-91a5****.jpg','oss-cn-hangzhou-internal.aliyuncs.com','acs:ram::****' ) )

      返回结果如下。

      ai_gen
      -----
      这张图片显示了一条城市街道的场景。可以看到一辆白色的车停在路边,车牌号是BTB-9784。街道上有几辆汽车,包括一辆黄色的出租车。背景中有建筑物和树木,天气看起来有些阴沉,可能是下雨天。街道上还有行人和交通信号灯。

ai_classify

  • 描述:根据提供的分类标签对输入文本进行分类。

    SELECT ai_classify([model,] content, labels)
  • 参数说明

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • content:必填,需要分类的文本,支持字符类型(CHAR、VARCHAR、TEXT)。

    • labels:必填,表示期望输出的分类标签列表,标签数量须在2~20之间,支持ARRAY类型。

  • 返回值说明

    • 返回分类结果,即匹配的标签。返回值类型为TEXT。

    • content参数值为NULL时,则返回NULL。

    • content是空字符串("")时,则返回NULL。

    • labels参数值数量不正确时,将报错。

  • 使用示例

    CREATE TABLE product_detail(
        product_name TEXT,
        product_desc TEXT
    );
    INSERT INTO product_detail VALUES
    ('iphone','苹果手机'),
    ('p50','华为手机'),
    ('x200','vivo手机'),
    ('aaa','Dior连衣裙'),
    ('bbb','Dior裤子'),
    ('声声乌龙','茶颜悦色的奶茶'),
    ('夹心饼干','奥利奥的饼干');
    
    --用ai_classify对文本分类
    SELECT
        product_name,
        ai_classify(product_desc, ARRAY['电子产品', '服装', '食品']) AS category
      FROM
         product_detail
      LIMIT 10;

    返回结果如下。

    product_name	|category
    --------------|------
    aaa	          |服装
    iphone	      |电子产品
    声声乌龙	      |食品
    p50	          |电子产品
    x200	        |电子产品
    bbb	          |服装
    夹心饼干	      |食品

ai_extract

  • 描述:从输入文本中提取指定的标签信息。

    SELECT ai_extract([model,] content, labels)
  • 参数说明

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • content:必填,需输入的文本信息,支持字符类型(CHAR、VARCHAR、TEXT)。

    • labels:必填,指定的标签信息,标签数量须在1~20之间,支持ARRAY类型。

  • 返回值说明

    • 返回每个Label对应的提取信息,为JSON格式。

    • content参数值为NULL或空字符串("")时,则返回NULL。

    • labels参数值数量不正确时,将报错。

  • 使用示例

    CREATE TABLE users (
      user_id TEXT,
      resume TEXT
    );
    
    INSERT INTO users (user_id, resume) VALUES
      ('u001', '姓名:张三,男,28岁。邮箱:zhangsan@example.com,电话:1380013****。工作经验丰富。'),
      ('u002', '姓名:李四,女,35岁。电话:1390013****,邮箱:lisi@example.com。具有管理经验。'),
      ('u003', '姓名:王五,男,25岁。邮箱:wangwu@example.com。电话:1370013****。');
    
    SELECT
      user_id,
      ai_extract(resume, ARRAY['姓名','邮箱','电话','性别','年龄']) AS user_desc_obj
    FROM
      users;

    返回结果如下。

    user_id	|user_desc_obj
    --------|-------------
    u002	  |"{"姓名":"李四","年龄":"35岁","性别":"女","电话":"1390013****","邮箱":"lisi@example.com"}"
    u003	  |"{"姓名":"王五","年龄":"25岁","性别":"男","电话":"1370013****","邮箱":"wangwu@example.com"}"
    u001	  |"{"姓名":"张三","年龄":"28岁","性别":"男","电话":"1380013****","邮箱":"zhangsan@example.com"}"

ai_mask

  • 描述:从输入文本中将指定的标签信息脱敏,信息脱敏后用[MASKED]做占位符。

    SELECT ai_mask([model,] content, labels)
  • 参数说明:

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • content:必填,需要脱敏的输入文本,支持字符类型(CHAR、VARCHAR、TEXT)。

    • labels:必填,需要脱敏的标签信息,标签数量须在1~20之间,支持ARRAY类型。

  • 返回值说明

    • 返回脱敏后的文本内容。

    • content参数值为NULL时,则返回NULL。

    • content参数值为空字符串("")时,则返回空字符串。

    • labels参数值数量不正确,将报错。

  • 使用示例

    SELECT ai_mask(
      '用户王小明,身份证号:23030611111111,手机号:1388888****。',
      ARRAY['身份证', '手机号']); 

    返回结果如下。

    ai_mask
    -------
    用户王小明,身份证号:[MASKED],手机号:[MASKED]。

ai_fix_grammar

  • 描述:用于修复输入文本的语法错误。

    SELECT ai_fix_grammar([model,] content)
  • 参数说明

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • content:必填,需要修复语法的输入文本,支持字符类型(CHAR、VARCHAR、TEXT)。

  • 返回值说明

    • 返回修正后的文本内容。

    • content参数值为NULL时,则返回NULL。

    • content参数值为空字符串("")时,则返回空字符串("")。

  • 使用示例

    SELECT ai_fix_grammar('He dont know what to did.');

    返回结果如下。

    ai_fix_grammar
    --------------
    He doesn't know what to do.

ai_summarize

  • 描述:根据输入的文本,生成一段文本的摘要。

    SELECT ai_summarize([model,] content[, max_words])
  • 参数说明

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • content:必填,输入文本,支持字符类型(CHAR、VARCHAR、TEXT)。

    • max_words:可选,大模型最多输出的字数,模型将依据该值尽量接近输出结果。默认值为50,若设置为0,则表示不做任何限制。

  • 返回值说明

    • 返回文本的摘要。

    • content参数值为NULL时,则返回NULL。

    • content参数值为空字符串("")时,则返回空字符串("")。

    • max_words若取值小于0时,将报错。

  • 使用示例

    SELECT ai_summarize('Hologres是阿里巴巴自主研发的一站式实时数仓引擎(Real-Time Data Warehouse),支持海量数据实时写入、实时更新、实时加工、实时分析,支持标准SQL(兼容PostgreSQL协议和语法,支持大部分PostgreSQL函数),支持PB级数据多维分析(OLAP)与即席分析(Ad Hoc),支持高并发低延迟的在线数据服务(Serving),支持多种负载的细粒度隔离与企业级安全能力,与MaxCompute、Flink、DataWorks深度融合,提供企业级离在线一体化全栈数仓解决方案。', 15);

    返回结果如下。

    ai_summarize
    ------------
    Hologres是阿里自主研发的实时数仓引擎,支持海量数据实时处理与多维分析。

ai_translate

  • 描述:将输入文本翻译成指定的语言。

    SELECT ai_translate([model,] content, to_lang)
  • 参数说明

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • content:必填,输入需翻译的文本,支持字符类型(CHAR、VARCHAR、TEXT)。

    • to_lang: 必填,目标语言Code。详情,请参见ISO-639

  • 返回值说明

    • 返回翻译后的文本。

    • content参数值为NULL时,则返回NULL。

    • content参数值为空字符串("")时,则返回空字符串("")。

    • to_lang参数值非法时,则报错。

  • 使用示例

    SELECT ai_translate('Hologres是阿里巴巴自主研发的一站式实时数仓引擎(Real-Time Data Warehouse),支持海量数据实时写入、实时更新、实时加工、实时分析,支持标准SQL(兼容PostgreSQL协议和语法,支持大部分PostgreSQL函数),支持PB级数据多维分析(OLAP)与即席分析(Ad Hoc),支持高并发低延迟的在线数据服务(Serving),支持多种负载的细粒度隔离与企业级安全能力,与MaxCompute、Flink、DataWorks深度融合,提供企业级离在线一体化全栈数仓解决方案。', 'en');

    返回结果如下。

    ai_translate
    -----------
    Hologres is a self-developed one-stop real-time data warehouse engine by Alibaba, supporting real-time writing, real-time updating, real-time processing, and real-time analysis of massive data. It supports standard SQL (compatible with PostgreSQL protocol and syntax, supporting most PostgreSQL functions), supports multi-dimensional analysis (OLAP) and ad-hoc analysis at the PB-level, supports high-concurrency, low-latency online data services (Serving), supports fine-grained isolation for multiple workloads and enterprise-level security capabilities, and is deeply integrated with MaxCompute, Flink, and DataWorks, providing an enterprise-level fully stacked data warehouse solution that integrates online and offline processing.

ai_similarity

  • 描述:计算两个输入文本的相似度。

    SELECT ai_similarity([model,] text1, text2)
  • 参数说明

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • text1text2:需要对比相似度的两个文本,支持字符类型(CHAR、VARCHAR、TEXT)。

  • 返回值说明

    • 返回区间[0, 1]之间的FLOAT类型的数值,值越大相似度越高。0表示完全不相似,1表示两个文本相等。

    • text1text2参数中有一个值为NULL时,则返回0。

    • text1text2参数值均为空字符串("")时,则返回1。

    • text1text2参数中一个值为空字符串(""),另外一个为非空字符串时,则返回0。

  • 使用示例

    CREATE TABLE products2 (
        product_name TEXT
    );
    
    INSERT INTO products2 (product_name) VALUES
      ('白色衬衫'), ('黑色西装裤'), ('休闲上衣'), ('运动外套'), ('白色连衣裙'),
      ('蓝牙耳机'), ('牛奶巧克力'), ('白色上衣'), ('男士T恤'), ('羽绒服');
    
    SELECT product_name FROM products2 
      ORDER BY ai_similarity(product_name, '白色上衣') DESC LIMIT 5;
    

    返回结果如下。

    product_name
    ----------
    白色上衣
    白色衬衫
    休闲上衣
    白色连衣裙
    男士T

ai_analyze_sentiment

  • 描述:对输入的文本进行情感分析。

    select ai_analyze_sentiment([model,] content);
  • 参数说明

    • model:可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    • content:必填,输入的文本,支持字符类型(CHAR、VARCHAR、TEXT)。

  • 返回值说明

    • 返回分析之后的情感Labels,为字符类型。 不同的模型,返回的Labels内容有区别。

      • Qwen3系列大模型,返回标签是: positive/negative/neutral/mixed中的一种,输入为空时返回 NULL。

      • iic/nlp_structbert_sentiment-classification_chinese-base模型:返回概率最高的标签:正面/负面/NULL 中的一种, 输入为空时返回 NULL。

    • content参数值为NULL或者空字符串("")时,则返回NULL。

  • 使用示例

    --大语言模型:
    SELECT ai_analyze_sentiment('洞房花烛夜,金榜提名时。');
    -- output example: positive
    
    --使用iic/nlp_structbert_sentiment-classification_chinese-base模型
    SELECT ai_analyze_sentiment('清明时节雨纷纷,路上行人欲断魂。');
    -- output example: 负面

ai_parse_document

  • 描述:支持将非结构化数据(PDF、图片、Word、PPT、TXT、Markdown)等多种格式的数据解析成文本。

    SELECT ai_parse_document([model,] input_bytes , input_format [, output_format]);
    SELECT ai_parse_document([model,] file [, input_format, output_format]);
  • 参数说明

    参数名称

    说明

    model

    可选,AI Function使用的模型名称。默认由系统根据已部署的模型自动分配最佳模型。如需更换模型,应先完成目标模型的部署,再修改系统表配置。具体操作,请参见修改AI Function对应的模型

    input_bytes

    必填,BYTEA类型,需要解析文件的BINARY。

    file

    必填,File类型,通常建议配合Object Table一起使用。

    input_format

    可选,默认值为auto,TEXT类型。支持的文件格式PDF、Word、PPT、TXT、IMAGE、AUTO等格式。

    • 图片格式支持:["jpg", "jpeg", "png", "tif", "tiff", "bmp"]

    • 当一个OSS目录有多种不同类型的文档时,可以设置input_format=auto , 模型将根据文件扩展名来自动判断文件类型。

    output_format

    可选,默认值 JSON。解析结果的格式,text类型,支持 JSON、markdown等格式。

  • 返回值说明

    返回text类。会根据output_format的设置返回对应的格式。

    • 如果 output_format=JSON, 输出是 text 类型JSON 字符串, 需要使用时显示 cast 成 JSON

    • 当解析失败时,返回错误的text,而不是报错。

  • 使用示例

    • OSS中的单个PDF文件转成文本。

      SELECT object_uri, etag, ai_parse_document(to_file ('oss://xxxx-hangzhou/bs_challenge_financial_14b_dataset/pdf', 'oss-cn-hangzhou-internal.aliyuncs.com', 'acs:ram::18xxx:role/xxx'), 'auto', 'markdown') AS doc 
          FROM pdf_bs_challenge_financial_14b_dataset limit 1);
    • Object Table的非结构化数据转成文本,详细使用见非结构化数据(Object Table)

prompt

  • 描述:此工具函数是AI Function的辅助函数,用于拼装大模型提示词,可以包含多模态的提示词。

    SELECT prompt('<template_string>', <expr_1> [ , <expr_2>, ... ])
        FROM <table>;
  • 使用说明

    不支持标量字符串。若仅有一条字符串,应直接传递给大模型,避免使用prompt函数,一般是FROM表使用。

  • 参数说明

    • template_string:必填,TEXT类型, 提示词模板STRING, 变量使用{0}{1}做占位符。

    • <expr_1> [ , <expr_2>, ... ]:多个表达式参数。支持TEXT、NUMBERIC、FILE等类型。

  • 返回值说明

    通常情况下返回JSON类型,格式如下:

    {
      "prompt": "<template_string>",
      "args": ARRAY(<value_1>, <value_2>, ...)
    }

    特殊情况下:

    • template_string参数值为NULL,则报错。

    • expr返回NULL的时候,template_string中以字符串None代替。

    • 返回结果中某一行全为NULL,将不会过滤该行,而是Args中全部填充None。

  • 使用示例

    create table customer_service_konwledge_detail(
      question text, 
      question_summarize text
    );
    
    insert into customer_service_konwledge_detail values
    ('实例突然出现很多OOMSQL', '后台排查到是由于客户的访问量增加,现有的资源不足以支撑该访问流量,客户已经扩容解决'),
    ('Dataworks连接不上hologres了', '这不是我们的问题,请联系Dataworks值班');
    
    -- prompt
    SELECT question, question_summarize, ai_gen(
      prompt('客户提的工单内容:{0}, 阿云客服给的回答: {1},请问该回答是否解决了客户问题?只输出是或否', question, question_summarize)) 
          from customer_service_konwledge_detail;
         

    返回结果如下。

              question           |                                 question_summarize                                 | ai_gen 
    -----------------------------+------------------------------------------------------------------------------------+--------
     Dataworks连接不上hologres了 | 这不是我们的问题,请联系Dataworks值班                                              | 否
     实例突然出现很多OOMSQL    | 后台排查到是由于客户的访问量增加,现有的资源不足
    以支撑该访问流量,客户已经扩容解决 | 是
    (2 rows)

to_file

  • 描述:此工具函数可以将一个URL转成FILE类型。

    select to_file(oss_url, oss_endpoint, oss_rolearn);
  • 使用说明

    该函数是一个工具函数,无需使用模型。

  • 参数说明

    • oss_url: 必填, text类型,需要解析的OSS文件路径。

    • oss_endpoint: 必填,text类型, 填写OSS Region域名,仅支持经典网络域名。

    • oss_rolearn: 必填,访问OSSRoleARN信息。

  • 返回值说明

    返回FILE类型,如果URL文件路径非法或者文件不存在,则报错。

  • 使用示例

    select to_file('oss://****/bd****k/val/images/b9b53753-91a5****.jpg','oss-cn-hangzhou-internal.aliyuncs.com','acs:ram::****' );

AI Function与模型

查看Function与模型的映射关系

Hologres提供list_ai_function_infos系统表,用于查看AI Function与模型的映射关系。在Hologres管控台部署模型后,该系统表会自动更新每个AI Function对用的模型,您可以通过AI Function调用对应的模型。

说明

不同AI Function需要适配特定类型的模型,例如:ai_embed适合Embedding模型、ai_classify适合大语言模型。若实例中仅部署了一种模型,可能会出现部分AI Function分配模型为空的情况。AI Function没有部署对应的模型时,将无法使用该AI function。

SELECT * FROM list_ai_function_infos();

返回结果如下。

    function_name     |    model_name    
----------------------+------------------
 ai_embed             | my_gte_embedding
 ai_classify          | my_qwen32b
 ai_extract           | my_qwen32b

修改AI Function对应的模型

AI Function与部署的模型有默认映射值,您可以通过如下方式修改AI Function对应的模型。修改后,使用AI Function时将会调用新的模型。

  • 全局修改

    SELECT set_ai_function_info('<function_name>', '<model_name>');

    参数说明

    • function_name:AI Function名称,您可以在AI Function汇总表中查看AI Function名称。

    • model_name:已经部署的模型名称。您可登录Hologres管理控制台AI节点页面,查看已部署的模型名称。

    说明

    当输入的AI Function名称和已部署模型名称不存在时,将会报错。

    使用示例

    SELECT set_ai_function_info('ai_embed', 'my_gte_embedding');
  • SESSION级别修改

    SESSION级别修改后,使用AI Function调用模型时,SESSION级别的配置会优先于全局修改(ai_function_info)的配置。

    --仅在该连接上生效
    SET hg_experimental_ai_function_name_to_model_name_mapping='<function_name>:<model_name>[,<function_name1>:<model_name1>]';

最佳实践

了解了AI Function的基础用法后,您可以通过以下真实场景的最佳实践,学习如何将它们组合应用,解决复杂的业务问题。