すべてのプロダクト
Search
ドキュメントセンター

Hologres:AI 関数

最終更新日:Feb 04, 2026

Hologres V3.2 以降のバージョンは AI 関数をサポートし、Embedding、Rank、LLM などのオペレーターを提供します。個別の推論サービスを必要とせず、標準 SQL を使用して AI 関数を直接呼び出すことができます。これにより、エンタープライズレベルのナレッジベースの構築と使用など、AI シナリオを実装できます。

前提条件

  1. AI リソースの購入

  2. モデルのデプロイが完了していること。

AI 関数の概要

Hologres は、次の AI 関数をサポートしています。

  • 各 AI 関数には、デプロイされたモデルに基づいて、デフォルトで最適なモデルが割り当てられます。システムテーブルで AI 関数に割り当てられたデフォルトモデルを表示できます。

  • AI 関数を呼び出す際、モデル名を指定する必要はありません。システムは自動的にデフォルトモデルを使用します。AI 関数のモデルを変更するには、システムテーブルを変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

  • 各モデルは、デプロイメントに異なる AI リソースを必要とします。必要に応じて適切な仕様を購入してください。

関数名

説明

サポートされているモデル

サポートされているバージョン

to_file

URL を FILE 型に変換します。

モデルは不要です。通常、オブジェクトテーブルと併用されます。

V4.0 以降

prompt

大規模言語モデル (LLM) のプロンプトをアセンブルします。マルチモーダルなプロンプトをラップできます。

モデルは不要です。

ai_parse_document

PDF やイメージなどの非構造化データをテキストに解析します。

ds4sd/docling-models。

ai_embed

指定されたテキストまたはイメージに対して、固定ディメンションの連続ベクターを計算します。

テキスト:

  • iic/nlp_gte_sentence-embedding_chinese シリーズ。

  • Qwen/Qwen3-Embedding-XB シリーズ。

イメージ:clip-ViT-B シリーズ。

  • テキスト埋め込みは V3.2 以降

  • バージョン 4.0 以降は、イメージベクターに対応しています。

ai_rank

指定されたテキストの関連性をスコアリングします。

Qwen3 シリーズの LLM。Qwen/Qwen3-32B を推奨します。

V3.2.2 以降

ai_chunk

長いテキストをセグメントに分割します。

recursive-character-text-splitter。

ai_gen

プロンプトを使用して LLM を呼び出し、テキストまたはイメージの推論を実行して結果を出力します。

テキスト:Qwen3 シリーズの LLM。Qwen/Qwen3-32B を推奨します。

イメージ:Qwen/Qwen2.5-VL-xB タイプ。

  • テキスト推論は V3.2 以降

  • イメージ推論は V4.0 以降

ai_classify

提供された分類ラベルに基づいて入力テキストを分類します。

Qwen3 シリーズの LLM。Qwen/Qwen3-32B を推奨します。

V3.2 以降

ai_extract

入力テキストから指定されたラベル情報を抽出します。

Qwen3 シリーズの LLM。Qwen/Qwen3-32B を推奨します。

ai_mask

入力テキスト内の指定されたラベル情報をマスクします。マスクされた情報は [MASKED] プレースホルダーに置き換えられます。

Qwen3 シリーズの LLM。Qwen/Qwen3-32B を推奨します。

ai_fix_grammar

入力テキストの構文エラーを修正します。

Qwen3 シリーズの LLM。Qwen/Qwen3-32B を推奨します。

ai_summarize

テキストの要約を生成します。

Qwen3 シリーズの LLM。Qwen/Qwen3-32B を推奨します。

ai_translate

入力テキストを指定された言語に翻訳します。

Qwen3 シリーズの LLM。Qwen/Qwen3-32B を推奨します。

ai_similarity

2 つの入力テキスト間の類似性を計算します。

Qwen3 シリーズの LLM。Qwen/Qwen3-32B を推奨します。

ai_analyze_sentiment

入力テキストの感情分析を実行します。

  • Qwen3 シリーズの LLM。Qwen/Qwen3-32B を推奨します。

  • iic/nlp_structbert_sentiment-classification_chinese-base モデル。

AI 関数の使用

ai_embed

  • 説明:入力テキストまたはイメージに対して、固定ディメンションの連続ベクターを計算します。

    --テキストの埋め込みを計算
    select ai_embed([model,] content);
    --イメージの埋め込みを計算
    select ai_embed([model,] file);
  • パラメーター

    • model:(任意) AI 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • content:(必須) 入力テキストです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

    • file:(必須) FILE 型です。これは通常、イメージの FILE オブジェクトです。この型は Hologres V4.0 以降でのみサポートされます。

  • 戻り値

    • content パラメーターが NULL または空の文字列の場合、NULL が返されます。

    • file が NULL の場合、NULL が返されます。

    • 返されるベクターのディメンションは、呼び出されるモデルによって異なります。サポートされているモデルと返されるベクターのディメンションは次のとおりです。

      モデル名

      分類

      返されるベクターのディメンション

      サポートされている Hologres のバージョン

      clip-ViT-B-32

      イメージ埋め込み

      • イメージパッチサイズ:32 × 32

      • パラメーター数:88 M

      • 返されるベクターのディメンション:512

      V4.0 以降

      clip-ViT-B-32-multilingual-v1

      説明

      イメージ入力はサポートされていません。イメージの場合は、引き続き clip-ViT-B-32 を使用してください。

      テキスト埋め込み

      • イメージパッチサイズ:32 × 32

      • パラメーター数:88 M

      • 返されるベクターのディメンション:512

      clip-ViT-B-16

      イメージ埋め込み

      • イメージパッチサイズ:16 × 16

      • パラメーター数:88 M

      • 返されるベクターのディメンション:512

      clip-ViT-L-14

      イメージ埋め込み

      • イメージパッチサイズ:14 × 14

      • パラメーター数:304 M

      • 返されるベクターのディメンション:768

      iic/nlp_gte_sentence-embedding_chinese-base

      テキスト埋め込み

      512

      V3.2 以降

      iic/nlp_gte_sentence-embedding_chinese-large

      テキスト埋め込み

      768

      iic/nlp_gte_sentence-embedding_chinese-small

      テキスト埋め込み

      1024

      Qwen/Qwen3-Embedding-0.6B

      テキスト埋め込み

      1024

      Qwen/Qwen3-Embedding-4B

      テキスト埋め込み

      2560

      Qwen/Qwen3-Embedding-8B

      テキスト埋め込み

      4096

    • テキスト埋め込み

      SELECT ai_embed('Hologresは、Alibabaが開発したワンストップのリアルタイムデータウェアハウスエンジンです。大量データのリアルタイム書き込み、更新、処理、分析をサポートします。');

      次の結果が返されます。

      ai_embed
      -------
      {-0.020090256, -0.009496426, -0.01584659, ..., -0.057956327}
    • イメージ埋め込み

      --イメージ埋め込み。この例では、OSS 内のイメージの埋め込みを作成する方法を示します。
      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 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • source_sentence:(必須) テキストコンテンツです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

    • sentence_to_compare:(必須) source_sentence パラメーターと比較する文です。CHAR、VARCHAR、TEXT などの文字型をサポートします。

  • 戻り値

    • FLOAT 型の関連性スコアを返します。値の範囲は [0, 1] です。値が高いほど、関連性が高いことを示します。

    • source_sentence または sentence_to_compare パラメーターのいずれかが NULL の場合、0 が返されます。

  • SELECT knowledge, ai_rank('2024年のアリババの収益はいくらですか?', knowledge) AS score
      FROM (
          VALUES ('アマゾンの2024年の収益は6,380億米ドルでした'), 
                 ('アリババの2024年の収益は9,411.68億元でした'), 
                 ('アリババの2023年の収益は8,686.87億元でした')
      ) AS knowledge_table(knowledge)
      ORDER BY score DESC;

    次の結果が返されます。

    knowledge	                  | score
    -----------------------------|-------
    アリババの2024年の収益は9,411.68億元でした	 |0.899999976
    アリババの2023年の収益は8,686.87億元でした |0.200000003
    アマゾンの2024年の収益は6,380億米ドルでした	   |0.100000001

ai_chunk

  • 説明:長いテキストをセグメント (チャンク) に分割します。

    SELECT ai_chunk([model,] long_sentence[, chunk_size, chunk_overlap, separators])
  • パラメーター

    パラメーター名

    説明

    model

    任意。AI 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    long_sentence

    必須。セグメント化するソーステキストです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

    chunk_size

    任意。各チャンクの長さです。このパラメーターは INT 型です。デフォルト値は 300 です。

    chunk_overlap

    任意。隣接するチャンク間の重複長です。これにより、文がチャンクをまたいで分割され、セマンティクスが壊れるのを防ぎます。このパラメーターは INT 型です。デフォルト値は 50 です。

    separators

    任意。チャンクを分割するための区切り文字です。このパラメーターは TEXT[] 型です。デフォルト値は ["\n\n", "\n", " ", ""] で、英語のテキストに適しています。中国語のテキストの場合は、["\n\n", "\n", ".", "!", "?", ";", ",", " "] のような中国語の区切り文字を使用します。

  • 戻り値の説明

    • TEXT[] 型を返します。これは、セグメント化されたチャンクのリストです。

    • long_sentence パラメーターが NULL の場合、NULL が返されます。

  • SELECT ai_chunk('Hologresは、Alibabaが開発したワンストップのリアルタイムデータウェアハウスエンジン (Real-Time Data Warehouse) です。大量データのリアルタイム書き込み、更新、処理、分析をサポートします。標準SQL (PostgreSQLプロトコルと構文に互換性があり、ほとんどのPostgreSQL関数をサポート) をサポートします。ペタバイト規模の多次元分析 (OLAP) とアドホック分析をサポートします。高同時実行性かつ低遅延のオンラインデータサービス (Serving) をサポートします。複数のワークロードに対する詳細な分離とエンタープライズレベルのセキュリティ機能をサポートします。MaxCompute、Flink、DataWorksと深く統合されており、エンタープライズレベルの統合された、オンラインとオフラインのフルスタックデータウェアハウスソリューションを提供します。',40,10);

    次の結果が返されます。

    ai_chunk
    ---
    "{"Hologresは、Alibabaが開発したワンストップのリアルタイムデータウェアハウス (Real-Time Data","Warehouse) エンジンです。大量データのリアルタイム書き込み、更新、処理、","分析をサポートします。標準SQL、PostgreSQLプロトコルと構文、","およびほとんどのPostgreSQL関数と互換性があります。また、ペタバイト規模の","多次元分析 (OLAP)、アドホック分析 (Ad","Hoc)、高同時実行性かつ低遅延のオンラインデータサービス (Serving)、さまざまなワークロードに対する","詳細な分離、およびエンタープライズレベルのセキュリティ機能をサポートします。MaxCompute、Flink、","DataWorksと深く統合されており、オフラインとオンラインの両方のシナリオに対応する","エンタープライズレベルの統合されたフルスタックデータウェアハウスソリューションを提供します。"}"

ai_gen

  • 説明:プロンプトを使用して LLM を呼び出し、テキストまたはイメージの推論を実行して結果を出力します。

    --テキスト推論
    SELECT ai_gen([model,] text)
    --イメージ推論
    SELECT ai_gen([model,] text, file)
    --プロンプトのカプセル化
    SELECT ai_gen([model,] prompt)
  • パラメーター

    • model:(任意) AI 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • text:(必須) 入力プロンプトです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

    • file:(必須) FILE 型です。オブジェクトテーブルから FILE 型に変換されたイメージなどです。このパラメーターは Hologres V4.0 以降でのみサポートされます。

    • prompt:(必須) JSON 型です。これは prompt() 関数の戻り値です。

  • 戻り値

    • 質問に対する LLM の回答を返します。

    • 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 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • content:(必須) 分類するテキストです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

    • labels:(必須) 期待される分類ラベルのリストです。ラベルの数は 2 から 20 の間でなければなりません。このパラメーターは ARRAY 型です。

  • 戻り値

    • 分類結果、つまり一致したラベルを返します。戻り値の型は TEXT です。

    • content パラメーターが NULL の場合、NULL が返されます。

    • content が空の文字列 ("") の場合、NULL が返されます。

    • ラベルの数が正しくない場合、エラーが報告されます。

  • CREATE TABLE product_detail(
        product_name TEXT,
        product_desc TEXT
    );
    INSERT INTO product_detail VALUES
    ('iphone','Apple 社のスマートフォン'),
    ('p50','Huawei 社のスマートフォン'),
    ('x200','vivo 社のスマートフォン'),
    ('aaa','ディオール社のドレス'),
    ('bbb','ディオール社のパンツ'),
    ('生生烏龍','人気ミルクティーショップのミルクティー'),
    ('サンドイッチクッキー','オレオクッキー');
    
    --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 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • content:(必須) 入力テキストです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

    • labels:(必須) 指定されたラベル情報です。ラベルの数は 1 から 20 の間でなければなりません。このパラメーターは ARRAY 型です。

  • 戻り値

    • 各ラベルの抽出された情報を JSON 形式で返します。

    • content パラメーターが NULL または空の文字列 ("") の場合、NULL が返されます。

    • ラベルの数が正しくない場合、エラーが報告されます。

  • CREATE TABLE users (
      user_id TEXT,
      resume TEXT
    );
    
    INSERT INTO users (user_id, resume) VALUES
      ('u001', '氏名:田中太郎、性別:男性、年齢:28歳。メール:tanaka.taro@example.com、電話番号:090-1234-****。豊富な職務経験あり。'),
      ('u002', '氏名:鈴木花子、性別:女性、年齢:35歳。電話番号:090-5678-****、メール:suzuki.hanako@example.com。管理職経験あり。'),
      ('u003', '氏名:佐藤次郎、性別:男性、年齢:25歳。メール:sato.jiro@example.com。電話番号:080-9012-****。');
    
    SELECT
      user_id,
      ai_extract(resume, ARRAY['氏名','メール','電話番号','性別','年齢']) AS user_desc_obj
    FROM
      users;

    次の結果が返されます。

    user_id	|user_desc_obj
    --------|-------------
    u002	  |"{"Name":"Li Si","Age":"35 years old","Gender":"Female","Phone":"1390013****","Email":"lisi@example.com"}"
    u003	  |"{"Name":"Wang Wu","Age":"25 years old","Gender":"Male","Phone":"1370013****","Email":"wangwu@example.com"}"
    u001	  |"{"Name":"Zhang San","Age":"28 years old","Gender":"Male","Phone":"1380013****","Email":"zhangsan@example.com"}"

ai_mask

  • 説明:入力テキスト内の指定されたラベル情報をマスクします。マスクされた情報は [MASKED] プレースホルダーに置き換えられます。

    SELECT ai_mask([model,] content, labels)
  • パラメーター:

    • model:(任意) AI 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • content:(必須) マスクする入力テキストです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

    • labels:(必須) マスクするラベル情報です。ラベルの数は 1 から 20 の間でなければなりません。このパラメーターは ARRAY 型です。

  • 戻り値

    • マスクされたテキストコンテンツを返します。

    • content パラメーターが NULL の場合、NULL が返されます。

    • content パラメーターが空の文字列 ("") の場合、空の文字列が返されます。

    • ラベルの数が正しくない場合、エラーが報告されます。

  • SELECT ai_mask(
      'ユーザー Wang Xiaoming、ID カード番号: 2303061111111111、携帯電話番号: 1388888****。',
      ARRAY['ID Card', 'Mobile Phone Number']); 

    次の結果が返されます。

    ai_mask
    -------
    ユーザー Wang Xiaoming、ID カード番号: [マスク済み]、携帯電話番号: [マスク済み]。

ai_fix_grammar

  • 説明:入力テキストの構文エラーを修正します。

    SELECT ai_fix_grammar([model,] content)
  • パラメーター

    • model:(任意) AI 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • 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 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • content:(必須) 入力テキストです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

    • max_words:(任意) LLM が出力する最大単語数です。モデルはこの値に近い結果を生成しようとします。デフォルト値は 50 です。0 に設定すると、制限はありません。

  • 戻り値

    • テキストの要約を返します。

    • content パラメーターが NULL の場合、NULL が返されます。

    • content パラメーターが空の文字列 ("") の場合、空の文字列 ("") が返されます。

    • max_words が 0 未満の場合、エラーが報告されます。

  • SELECT ai_summarize('Hologresは、Alibabaが開発したワンストップのリアルタイムデータウェアハウスエンジン (Real-Time Data Warehouse) です。大量データのリアルタイム書き込み、更新、処理、分析をサポートします。標準SQL (PostgreSQLプロトコルと構文に互換性があり、ほとんどのPostgreSQL関数をサポート) をサポートします。ペタバイト規模の多次元分析 (OLAP) とアドホック分析をサポートします。高同時実行性かつ低遅延のオンラインデータサービス (Serving) をサポートします。複数のワークロードに対する詳細な分離とエンタープライズレベルのセキュリティ機能をサポートします。MaxCompute、Flink、DataWorksと深く統合されており、エンタープライズレベルの統合された、オンラインとオフラインのフルスタックデータウェアハウスソリューションを提供します。', 15);

    次の結果が返されます。

    ai_summarize
    ------------
    Hologresは、Alibabaが開発したリアルタイムデータウェアハウスエンジンで、大量データのリアルタイム処理と多次元分析をサポートします。

ai_translate

  • 説明:入力テキストを指定された言語に翻訳します。

    SELECT ai_translate([model,] content, to_lang)
  • パラメーター

    • model:(任意) AI 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • content:(必須) 翻訳する入力テキストです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

    • to_lang:(必須) ターゲット言語コードです。詳細については、「ISO 639」をご参照ください。

  • 戻り値

    • 翻訳されたテキストを返します。

    • content パラメーターが NULL の場合、NULL が返されます。

    • content パラメーターが空の文字列 ("") の場合、空の文字列 ("") が返されます。

    • to_lang パラメーターが無効な場合、エラーが報告されます。

  • SELECT ai_translate('Hologresは、Alibabaが開発したワンストップのリアルタイムデータウェアハウスエンジン (Real-Time Data Warehouse) です。大量データのリアルタイム書き込み、更新、処理、分析をサポートします。標準SQL (PostgreSQLプロトコルと構文に互換性があり、ほとんどのPostgreSQL関数をサポート) をサポートします。ペタバイト規模の多次元分析 (OLAP) とアドホック分析をサポートします。高同時実行性かつ低遅延のオンラインデータサービス (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

  • 説明:2 つの入力テキスト間の類似性を計算します。

    SELECT ai_similarity([model,] text1, text2)
  • パラメーター

    • model:(任意) AI 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • text1 および text2:類似性を比較する 2 つのテキストです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

  • 戻り値

    • [0, 1] の範囲の FLOAT 値を返します。値が高いほど類似性が高いことを示します。0 は全く似ていないことを意味し、1 は 2 つのテキストが同一であることを意味します。

    • text1 または text2 パラメーターのいずれかが NULL の場合、0 が返されます。

    • text1 と text2 の両方のパラメーターが空の文字列 ("") の場合、1 が返されます。

    • text1 と text2 のパラメーターの一方が空の文字列 ("") で、もう一方が空でない文字列の場合、0 が返されます。

  • CREATE TABLE products2 (
        product_name TEXT
    );
    
    INSERT INTO products2 (product_name) VALUES
      ('白いシャツ'), ('黒いドレスパンツ'), ('カジュアルなトップス'), ('スポーツジャケット'), ('白いドレス'),
      ('Bluetoothヘッドセット'), ('ミルクチョコレート'), ('白いトップス'), ('メンズ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 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    • content:(必須) 入力テキストです。CHAR、VARCHAR、TEXT などの文字型をサポートします。

  • 戻り値

    • 分析後の感情ラベルを返します。戻り値の型は文字列です。返されるラベルはモデルによって異なります。

      • Qwen3 シリーズの LLM の場合、次のいずれかのラベルが返されます:positive、negative、neutral、または mixed。入力が空の場合、NULL が返されます。

      • iic/nlp_structbert_sentiment-classification_chinese-base モデルの場合、最も確率の高いラベルが返されます:positive、negative、または NULL。入力が空の場合、NULL が返されます。

    • content パラメーターが NULL または空の文字列 ("") の場合、NULL が返されます。

  • --LLM:
    SELECT ai_analyze_sentiment('Wedding night, and success in the imperial examination.');
    -- 出力例: positive
    
    --iic/nlp_structbert_sentiment-classification_chinese-base モデルを使用
    SELECT ai_analyze_sentiment('A drizzling rain falls on the Mourning Day; The mourner''s heart is going to break on his way.');
    -- 出力例: negative

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 関数が使用するモデルの名前です。デフォルトでは、システムはデプロイされたモデルの中から最適なモデルを自動的に割り当てます。モデルを変更するには、まずターゲットモデルをデプロイし、次にシステムテーブルの構成を変更します。詳細については、「AI 関数のモデルの変更」をご参照ください。

    input_bytes

    必須。解析するファイルのバイナリコンテンツです。型は BYTEA です。

    file

    必須。File 型です。オブジェクトテーブルと併用することを推奨します。

    input_format

    任意。ファイル形式です。型は TEXT です。デフォルト値は auto です。サポートされている形式には、PDF、Word、PPT、TXT、IMAGE、AUTO があります。

    • サポートされているイメージ形式:["jpg", "jpeg", "png", "tif", "tiff", "bmp"]

    • OSS ディレクトリに異なる種類のドキュメントが含まれている場合は、input_format=auto を設定できます。モデルはファイル名拡張子に基づいてファイルの種類を自動的に判断します。

    output_format

    任意。解析結果の形式です。型は text です。デフォルト値は JSON です。サポートされている形式には、JSON と markdown があります。

  • 戻り値

    text 型を返します。形式は output_format の設定によって決まります。

    • output_format=JSON の場合、出力は text 型の JSON 文字列です。使用する際には明示的に JSON にキャストする必要があります。

    • 解析に失敗した場合、エラーを報告する代わりに、エラーを説明するテキストが返されます。

    • 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);
    • オブジェクトテーブルから非構造化データをテキストに変換します。詳細については、「非構造化データ (オブジェクトテーブル)」をご参照ください。

prompt

  • 説明:この AI 関数のヘルパー関数は、LLM のプロンプトをアセンブルします。マルチモーダルなプロンプトを含めることができます。

    SELECT prompt('<template_string>', <expr_1> [ , <expr_2>, ... ])
        FROM <table>;
  • 使用上の注意

    スカラー文字列はサポートされていません。文字列が 1 つしかない場合は、LLM に直接渡してください。prompt 関数の使用は避けてください。この関数は通常、FROM 句と共に使用されます。

  • パラメーター

    • template_string:(必須) プロンプトのテンプレート文字列です。型は TEXT です。変数のプレースホルダーとして {0}{1} を使用します。

    • <expr_1> [ , <expr_2>, ... ]:複数の式パラメーターです。TEXT、NUMERIC、FILE などの型がサポートされています。

  • 戻り値

    通常、次の形式の JSON 型を返します。

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

    特殊なケース:

    • template_string パラメーターが NULL の場合、エラーが報告されます。

    • 式が 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
    ('インスタンスで OOM SQL 文が突然多数出現した', 'バックグラウンド調査の結果、お客様のトラフィックが増加し、既存のリソースではトラフィックをサポートできなくなっていることが判明しました。お客様はスケールアウトによって問題を解決済みです'),
    ('DataWorks が Hologres に接続できない', 'これは当社の問題ではありません。担当の DataWorks サポートにお問い合わせください');
    
    -- prompt
    SELECT question, question_summarize, ai_gen(
      prompt('お客様のチケット内容は次のとおりです:{0}。Alibaba Cloud サポートの回答は次のとおりです:{1}。この回答はお客様の問題を解決しましたか?はいかいいえのみで出力してください', question, question_summarize)) 
          from customer_service_konwledge_detail;
         

    次の結果が返されます。

              question           |                                 question_summarize                                 | ai_gen 
    -----------------------------+------------------------------------------------------------------------------------+--------
     DataWorks が Hologres に接続できない | これは当社の問題ではありません。担当の DataWorks サポートにお問い合わせください                                              | いいえ
     インスタンスで OOM SQL 文が突然多数出現した    | バックグラウンド調査の結果、お客様のトラフィックが増加し、既存のリソースではトラフィックをサポートできなくなっていることが判明しました。お客様はスケールアウトによって問題を解決済みです | はい
    (2 rows)

to_file

  • 説明:このツール関数は、URL を FILE 型に変換します。

    select to_file(oss_url, oss_endpoint, oss_rolearn);
  • 使用上の注意

    これはツール関数であり、モデルは必要ありません。

  • パラメーター

    • oss_url:(必須) 解析する OSS ファイルのパスです。型は text です。

    • oss_endpoint:(必須) OSS リージョンのドメイン名です。型は text です。クラシックネットワークのドメイン名のみがサポートされています。

    • oss_rolearn:(必須) OSS にアクセスするための RoleARN です。

  • 戻り値

    FILE 型を返します。URL のファイルパスが無効であるか、ファイルが存在しない場合、エラーが報告されます。

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

AI 関数とモデル

関数とモデルのマッピングの表示

Hologres は、AI 関数とモデルのマッピングを表示するための list_ai_function_infos システムテーブルを提供します。Hologres コンソールでモデルをデプロイすると、このシステムテーブルは各 AI 関数に対応するモデルで自動的に更新されます。その後、AI 関数を使用して対応するモデルを呼び出すことができます。

説明

異なる AI 関数は、特定の種類のモデルに適合させる必要があります。たとえば、ai_embed は埋め込みモデルに適しており、ai_classify は LLM に適しています。インスタンスに 1 種類のモデルしかデプロイされていない場合、一部の AI 関数にはモデルが割り当てられないことがあります。AI 関数に対応するモデルがデプロイされていない場合、その AI 関数は使用できません。

SELECT * FROM list_ai_function_infos();

次の結果が返されます。

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

AI 関数のモデルの変更

AI 関数には、デプロイされたモデルへのデフォルトのマッピングがあります。次のように AI 関数のモデルを変更できます。変更後、AI 関数を使用すると新しいモデルが呼び出されます。

  • グローバルな変更

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

    パラメーター

    • function_name:AI 関数の名前です。AI 関数の名前は、「AI 関数の概要」の表で確認できます。

    • model_name:デプロイされたモデルの名前です。Hologres コンソールにログインし、AI ノード ページでデプロイされたモデルの名前を表示できます。

    説明

    指定された AI 関数名またはデプロイされたモデル名が存在しない場合、エラーが報告されます。

    SELECT set_ai_function_info('ai_embed', 'my_gte_embedding');
  • セッションレベルの変更

    セッションレベルの変更後、AI 関数を使用してモデルを呼び出すと、セッションレベルの構成がグローバル構成 (ai_function_info) よりも優先されます。

    --現在の接続に対してのみ有効
    SET hg_experimental_ai_function_name_to_model_name_mapping='<function_name>:<model_name>[,<function_name1>:<model_name1>]';

ベストプラクティス

AI 関数の基本的な使用方法を理解したら、次の実際のベストプラクティスを通じて、それらを組み合わせて複雑なビジネス上の問題を解決する方法を学ぶことができます。