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

Hologres:AI 関数

最終更新日:Nov 01, 2025

V3.2 以降、Hologres は AI 関数をサポートしています。この関数は、埋め込み、ランキング、AI 推論のためのオペレーターを提供します。別の推論サービスを必要とせずに、標準 SQL を使用してこれらの関数を直接呼び出すことができます。これにより、エンタープライズナレッジベースの構築やクエリなど、AI を活用したユースケースが可能になります。

前提条件

  1. AI リソースを購入していること。

  2. モデルをデプロイしていること。

AI 関数リスト

Hologres は、次の 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 以降でサポートされています。

  • 画像埋め込みは V4.0 以降でサポートされています。

ai_rank

あるテキストと別のテキストの関連性をスコアリングします。

Qwen3 シリーズ LLM。推奨モデル: Qwen/Qwen3-32B。

V3.2.2 以降

ai_chunk

長いテキストに対してテキストチャンキングを実行します。

recursive-character-text-splitter。

ai_gen

プロンプトを使用して LLM を呼び出し、テキストまたは画像に対して推論を実行し、応答を生成します。

テキストモデル: 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 シリーズの large モデル。Qwen/Qwen3-32B を推奨します。

ai_similarity

入力テキストを別の言語に翻訳します。

Qwen3 シリーズのモデル。推奨モデル: Qwen/Qwen3-32B。

ai_analyze_sentiment

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

  • Qwen3 シリーズのモデル。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: 必須。入力テキスト。CHARVARCHARTEXT などの文字型をサポートします。

    • file: 必須。入力画像ファイル (FILE 型)。Hologres V4.0 以降でサポートされています。

  • 戻り値

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

    • file パラメーターが NULL の場合、NULL を返します。

    • 特定のディメンションのベクターを返します。サポートされている埋め込みモデルとその出力ディメンションは次のとおりです。

      モデル名

      カテゴリ

      詳細

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

      clip-ViT-B-32

      画像埋め込み

      • 画像パッチサイズ: 32 × 32 ピクセル

      • パラメーター: 8,800 万

      • ベクターディメンション: 512

      V4.0 以降

      clip-ViT-B-32-multilingual-v1

      説明

      画像入力には、clip-ViT-B-32 を使用してください。

      テキスト埋め込み

      • ベクターディメンション: 512

      clip-ViT-B-16

      画像埋め込み

      • 画像パッチサイズ: 16 × 16 ピクセル

      • パラメーター: 8,800 万

      • ベクターディメンション: 512

      clip-ViT-L-14

      画像埋め込み

      • 画像パッチサイズ: 14 × 14 ピクセル

      • パラメーター: 3 億 400 万

      • ベクターディメンション: 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 is a one-stop real-time data warehouse engine self-developed by Alibaba. It supports real-time writing, updating, processing, and analysis of massive amounts of data.');

      次の結果が返されます。

      ai_embed
      -------
      {-0.020090256, -0.009496426, -0.01584659, ..., -0.057956327}
    • 画像埋め込み

      --OSS 内の画像の埋め込みを作成します。
      SELECT ai_embed('clip-ViT-B-32', to_file('oss://****', 'oss-ap-southeast-1-internal.aliyuncs.com', 'roleran'));

ai_rank

  • 説明: ターゲットドキュメント (sentence_to_compare) とソースクエリ (source_sentence) の関連性をスコアリングします。

    SELECT ai_rank([model,] source_sentence, sentence_to_compare);
  • パラメーター

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

    • source_sentence: 必須。ソーステキスト。CHARVARCHARTEXT をサポートします。

    • sentence_to_compare: 必須。source_sentence と比較する文。CHARVARCHARTEXT をサポートします。

  • 戻り値

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

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

  • SELECT knowledge, ai_rank('What is Alibaba's revenue in 2024?', knowledge) AS score
      FROM (
          VALUES ('Amazon's 2024 revenue was USD 638 billion.'), 
                 ('Alibaba's 2024 revenue was CNY 941.168 billion.'), 
                 ('Alibaba's 2023 revenue was CNY 868.687 billion.')
      ) AS knowledge_table(knowledge)
      ORDER BY score DESC;

    この関数は次の結果を返します。

    knowledge	                  | score
    -----------------------------/-------
    Alibaba's 2024 revenue was CNY 941.168 billion.	 |0.899999976
    Alibaba's 2023 revenue was CNY 868.687 billion. |0.200000003
    Amazon's 2024 revenue was USD 638 billion.	   |0.100000001

ai_chunk

  • 説明: 長いテキストに対してテキストチャンキングを実行します。

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

    パラメーター名

    説明

    model

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

    long_sentence

    必須。チャンク化するソーステキスト。CHARVARCHARTEXT をサポートします。

    chunk_size

    オプション。各チャンクの長さ。INT をサポートします。デフォルトは 300 です。

    chunk_overlap

    オプション。文の分断やセマンティクスの乱れを避けるための、隣接するチャンク間の重複の長さ。INT をサポートします。デフォルトは 50 です。

    separators

    オプション。チャンクを分割するための区切り文字の配列。型は TEXT[] です。デフォルトは ["\n\n", "\n", " ", ""] です。

  • 戻り値

    • チャンクのリストを含む TEXT[] 配列を返します。

    • long_sentence パラメーターが None の場合、None を返します。

  • SELECT ai_chunk('Hologres is a unified real-time data warehousing service developed by Alibaba Cloud. You can use Hologres to write, update, process, and analyze large amounts of data in real time. Hologres supports standard SQL syntax, is compatible with PostgreSQL, and supports most PostgreSQL functions. Hologres supports online analytical processing (OLAP) and ad hoc analysis for up to petabytes of data, and provides high-concurrency and low-latency data serving. Hologres supports granular isolation of multiple workloads and enterprise-level security capabilities. Hologres is deeply integrated with MaxCompute, Realtime Compute for Apache Flink, and DataWorks, and provides full-stack real-time and batch data warehousing solutions for enterprises.',40,10);

    この関数は次の結果を返します。

    ai_chunk
    ---
    "{"Hologres is a unified real-time data warehousing","service developed by Alibaba Cloud. You can use","Hologres to write, update, process, and analyze large","amounts of data in real time. Hologres supports standard","SQL syntax, is compatible with PostgreSQL, and supports","most PostgreSQL functions. Hologres supports online analytical","processing (OLAP) and ad hoc analysis for up to petabytes","of data, and provides high-concurrency and low-latency","data serving. Hologres supports granular isolation of multiple","workloads and enterprise-level security capabilities. Hologres","is deeply integrated with MaxCompute, Realtime Compute for","Apache Flink, and DataWorks, and provides full-stack real-time","and batch data warehousing solutions for enterprises."}"

ai_gen

  • 説明: プロンプトを使用して LLM を呼び出し、応答を返します。

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

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

    • text: 必須。入力プロンプト。CHARVARCHARTEXT をサポートします。

    • 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
        ('What is AI?'),
        ('How to improve time management?'),
        ('What are the key points of a healthy diet?');
      
      SELECT
        question,
        ai_gen('Please answer the following questions in 10 words: ' || question) AS answer
      FROM
        questions;

      この関数は次の結果を返します。

      question                          | answer
      ----------------------------------|-------
      What is AI?                       | Intelligence demonstrated by machines, mimicking human cognitive functions.
      How to improve time management?   | Prioritize tasks, set goals, minimize distractions, and schedule effectively.
      Key points of a healthy diet?     | Balanced nutrients, whole foods, hydration, portion control, moderation.
    • 画像推論

      SELECT  ai_gen('jpg_llm','What is in this picture?', to_file('oss://****/bd****k/val/images/b9b53753-91a5****.jpg','oss-ap-southeast-1-internal.aliyuncs.com','acs:ram::****' ) )

      この関数は次の結果を返します。

      ai_gen
      -----
      This picture shows a city street scene. A white car with the license plate BTB-9784 is parked on the side of the road. There are several cars on the street, including a yellow taxi. In the background, there are buildings and trees. The weather looks gloomy, possibly rainy. There are also pedestrians and traffic lights on the street.

ai_classify

  • 説明: 指定されたラベルのリストに対して入力テキストを分類します。

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

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

    • content: 必須。分類するテキスト。CHARVARCHARTEXT をサポートします。

    • labels: 必須。分類用の候補ラベルの配列。2 から 20 個のラベルを提供する必要があります。ARRAY 型をサポートします。

  • 戻り値

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

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

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

    • ラベルの数が有効な範囲 (2-20) 外の場合、関数はエラーを返します。

  • CREATE TABLE product_detail(
        product_name TEXT,
        product_desc TEXT
    );
    INSERT INTO product_detail VALUES
    ('iPhone','Smartphones developed by Apple'),
    ('P50','Smartphones developed by Huawei'),
    ('X200','Smartphone developed by vivo'),
    ('Venus','DIOR dress'),
    ('Junon','DIOR dress'),
    ('Oolong Milk Tea','Cha Yan Yue Se'),
    ('Sandwich Cookies','Oreo cookies');
    
    -- ai_classify を使用してテキストを分類
    SELECT
        product_name,
        ai_classify(product_desc, ARRAY['Electronics', 'Apparel', 'Food']) AS category
      FROM
         product_detail
      LIMIT 10;

    この関数は次の結果を返します。

    product_name       | category
    -------------------|-----------
    Venus              | Apparel
    iPhone             | Electronics
    Oolong Milk Tea    | Food
    P50                | Electronics
    X200               | Electronics
    Junon              | Apparel
    Sandwich Cookies   | Food

ai_extract

  • 説明: 指定されたラベルに基づいて入力テキストから情報を抽出します。

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

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

    • content: 必須。入力テキスト。CHARVARCHARTEXT をサポートします。

    • labels: 必須。情報抽出のためのラベル。ラベルの数は 1 から 20 の間でなければなりません。ARRAY 型をサポートします。

  • 戻り値

    • 抽出されたキーと値のペアを含む JSON オブジェクトを返します。

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

    • labels パラメーターのラベル数が無効な場合、エラーが報告されます。

  • CREATE TABLE users (
      user_id TEXT,
      resume TEXT
    );
    
    INSERT INTO users (user_id, resume) VALUES
      ('u001', 'Name: John Smith, male, 28 years old. Email: john.smith@example.com, Phone: 1380013****. Extensive work experience.'),
      ('u002', 'Name: Jane Doe, female, 35 years old. Phone: 1390013****, Email: jane.doe@example.com. Has management experience.'),
      ('u003', 'Name: Sam Wang, male, 25 years old. Email: sam.wang@example.com. Phone: 1370013****.');
    
    SELECT
      user_id,
      ai_extract(resume, ARRAY['Name','Email','Phone','Gender','Age']) AS user_desc_obj
    FROM
      users;

    この関数は次の結果を返します。

    user_id | user_desc_obj
    --------|-------------
    u002    | "{"Name":"Jane Doe","Age":"35 years old","Gender":"female","Phone":"1390013****","Email":"jane.doe@example.com"}"
    u003    | "{"Name":"Sam Wang","Age":"25 years old","Gender":"male","Phone":"1370013****","Email":"sam.wang@example.com"}"
    u001    | "{"Name":"John Smith","Age":"28 years old","Gender":"male","Phone":"1380013****","Email":"john.smith@example.com"}"

ai_mask

  • 説明: テキスト情報を [MASKED] プレースホルダーでマスキングします。

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

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

    • content: 必須。マスキングする入力テキスト。CHARVARCHARTEXT をサポートします。

    • labels: 必須。マスキングする情報のラベル。ラベルの数は 1 から 20 の間でなければなりません。ARRAY 型をサポートします。

  • 戻り値

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

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

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

    • labels パラメーターのラベル数が無効な場合、エラーが報告されます。

  • SELECT ai_mask(
      'User Alex Ray, ID card number: 23030611111111, mobile number: 1388888****.',
      ARRAY['ID card', 'Mobile number']); 

    この関数は次の結果を返します。

    ai_mask
    -------
    User Alex Ray, ID card number: [MASKED], mobile number: [MASKED].

ai_fix_grammar

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

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

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

    • content: 必須。修正する文法エラーのある入力テキスト。CHARVARCHARTEXT をサポートします。

  • 戻り値

    • 修正されたテキストを返します。

    • 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: 必須。入力テキスト。CHARVARCHARTEXT をサポートします。

    • max_words: オプション。出力の最大単語数。モデルはこの長さ程度の要約を生成しようとします。デフォルトは 50 です。値 0 は単語数制限なしを意味します。

  • 戻り値

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

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

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

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

  • SELECT ai_summarize('Hologres is a unified real-time data warehousing service developed by Alibaba Cloud. You can use Hologres to write, update, process, and analyze large amounts of data in real time. Hologres supports standard SQL syntax, is compatible with PostgreSQL, and supports most PostgreSQL functions. Hologres supports online analytical processing (OLAP) and ad hoc analysis for up to petabytes of data, and provides high-concurrency and low-latency online data services. Hologres supports fine-grained isolation of multiple workloads and enterprise-level security capabilities. Hologres is deeply integrated with MaxCompute, Realtime Compute for Apache Flink, and DataWorks, and provides full-stack online and offline data warehousing solutions for enterprises.', 15);

    この関数は次の結果を返します。

    ai_summarize
    ------------
    Hologres: Alibaba Cloud's unified real-time data warehouse, offering SQL, OLAP, petabyte scale, high concurrency, and enterprise security.

ai_translate

  • 説明: 入力テキストを別の言語に翻訳します。

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

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

    • content: 必須。翻訳する入力テキスト。CHARVARCHARTEXT をサポートします。

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

  • 戻り値

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

    • 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

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

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

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

    • text1 および text2: 必須。類似度を比較する 2 つのテキスト。CHARVARCHARTEXT をサポートします。

  • 戻り値

    • 0.0 (非類似) から 1.0 (同一) までの FLOAT スコアを返します。スコアが高いほど類似度が高いことを示します。

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

    • text1text2 の両方が空の文字列 ("") の場合、1 を返します。

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

  • CREATE TABLE products2 (
        product_name TEXT
    );
    
    INSERT INTO products2 (product_name) VALUES
      ('white shirt'), ('black trousers'), ('casual top'), ('sports jacket'), ('white dress'),
      ('Bluetooth headphones'), ('milk chocolate'), ('white top'), ('men's T-shirt'), ('down jacket');
    
    SELECT product_name FROM products2 
      ORDER BY ai_similarity(product_name, 'white top') DESC LIMIT 5;
    

    この関数は次の結果を返します。

    product_name
    ----------
    white top
    white shirt
    casual top
    white dress
    men's T-shirt

ai_analyze_sentiment

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

    select ai_analyze_sentiment([model,] content);
  • パラメーター

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

    • content: 必須。入力テキスト。CHARVARCHARTEXT をサポートします。

  • 戻り値

    • 感情を表すテキストラベル (例: 'positive', 'negative') を返します。特定のラベルは使用するモデルによって異なります。

      • Qwen3 シリーズのモデル: `positive`、`negative`、`neutral`、または `mixed` を返します。入力が空の場合、NULL を返します。

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

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

  • -- 例 1
    SELECT ai_analyze_sentiment('A truly joyous and celebratory occasion.');
    -- 出力: positive
    
    -- 例 2
    SELECT ai_analyze_sentiment('A sorrowful day filled with rain and tears.');
    -- 出力: negative

ai_parse_document

  • 説明: PDF、画像、Word ドキュメント、PowerPoint スライド、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

    必須。解析するファイルコンテンツ (BINARY 型の生バイト)。

    file

    必須。解析するファイル (FILE 型)。オブジェクトテーブルとの併用が最適です。

    input_format

    オプション。入力ファイルのフォーマットを指定します。デフォルト値: auto。有効な値: PDF、Word、PPT、TXT、IMAGE、AUTO。

    • サポートされている画像フォーマット: ["jpg", "jpeg", "png", "tif", "tiff", "bmp"]

    • input_formatauto に設定されている (またはデフォルトで auto になっている) 場合で、OSS ディレクトリに混合ドキュメントタイプが含まれている場合、モデルは拡張子に基づいてファイルタイプを自動的に決定します。

    output_format

    オプション。解析結果の TEXT に希望するフォーマットを指定します。デフォルト値: JSON。サポートされているフォーマット: JSON、markdown。

  • 戻り値

    解析されたドキュメントを表す TEXT 文字列を返します。文字列のフォーマットは output_format パラメーターと一致します。

    • output_formatJSON の場合、結果は JSON 文字列です。さらなる処理のためには、JSON への明示的なキャストが必要です。

    • 解析に失敗した場合、例外ではなくエラーメッセージ (TEXT 型) が返されます。

    • OSS 内の単一の PDF ファイルをテキストに変換する:

      SELECT object_uri, etag, ai_parse_document(to_file ('oss://xxxx-singapore/bs_challenge_financial_14b_dataset/pdf', 'oss-ap-southeast-1-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>;
  • この関数では、直接のスカラー文字列リテラルはサポートされていません。プロンプトが変数なしの単一の文字列のみで構成されている場合は、prompt() を使用せずに直接 LLM に渡してください。この関数は通常、FROM 句と組み合わせて使用されます。

  • パラメーター

    • template_string: 必須。プロンプトを構築するためのテンプレート文字列。型: TEXT。{0}{1} などを動的変数のプレースホルダーとして使用します。

    • <expr_1> [ , <expr_2>, ... ]: 少なくとも 1 つ必須。template_string 内のプレースホルダーを置き換える 1 つ以上の式パラメーター。サポートされている型: TEXT、NUMERIC、FILE。

  • 戻り値

    アセンブルされたプロンプトとその引数を含む JSON オブジェクトを返します。

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

    特殊なケース:

    • NULL template_string: エラーが報告されます。

    • NULL 式の値: 式パラメーターが NULL と評価された場合、template_string 内で文字列 "None" に置き換えられます。

    • 完全に NULL の行: FROM テーブルから処理された行全体がすべての引数に対して NULL 値になる場合、これらの引数は args 配列内で "None" で埋められ、行自体はフィルタリングされません。

  • create table customer_service_konwledge_detail(
      question text, 
      question_summarize text
    );
    
    insert into customer_service_konwledge_detail values
    ('My instance suddenly has many OOM SQL jobs', 'Backend investigation found that the customer''s traffic increased, and existing resources were insufficient. The customer has resolved the issue by scaling out.'),
    ('DataWorks cannot connect to Hologres.', 'This is not our issue. Please contact the DataWorks support on duty.');
    
    -- prompt
    SELECT question, question_summarize, ai_gen(
      prompt('Customer ticket content: {0}, Aliyun support reply: {1}. Did this reply solve the customer''s problem? Answer only yes or no.', question, question_summarize)) 
          from customer_service_konwledge_detail;
         

    以下が結果です。

              question           |                                 question_summarize                                 | ai_gen 
    -----------------------------+------------------------------------------------------------------------------------+--------
     DataWorks cannot connect to Hologres. | This is not our issue. Please contact the DataWorks support on duty.                                              | No
     Instance suddenly has many OOM SQL statements    | Backend investigation found that the customer's traffic increased, and existing resources were insufficient. The customer has resolved the issue by scaling out. | Yes
    (2 rows)

to_file

  • 説明: 指定された OSS ファイルパスを、他の関数で使用するために FILE 型に変換します。

    select to_file(oss_url, oss_endpoint, oss_rolearn);
  • これはヘルパー関数であり、AI モデルは必要ありません。

  • パラメーター

    • oss_url: 必須。TEXT 型。OSS ファイルへの完全なパス。

    • oss_endpoint: 必須。TEXT 型。OSS エンドポイント。内部エンドポイントのみがサポートされています。

    • oss_rolearn: 必須。OSS アクセス用の RoleARN。

  • 戻り値

    OSS オブジェクトを表す FILE 型を返します。ファイルパスが無効であるか、ファイルが存在しない場合、エラーが報告されます。

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

AI 関数とモデル間のリレーションシップの管理

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

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

説明

AI 関数には特定のモデルタイプが必要です (例: ai_embed は埋め込みモデルを使用し、ai_classify は LLM を使用します)。1 種類のモデルタイプのみをデプロイすると、利用可能な 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 関数を異なるモデルに再割り当てすることができます。その後、新しいモデルが呼び出されるようになります。

  • グローバルな変更

    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');
  • セッションレベルの変更

    このセッションレベルの設定は、現在の接続の間、グローバル構成をオーバーライドします。

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

ベストプラクティス

AI 関数の基本を学んだ後、実際のユースケースのための以下のベストプラクティスを探求してください。これらの例は、複雑なビジネス問題を解決するために関数を組み合わせる方法を示しています。