Skip to main content
AI 関数は ClickHouse の組み込み関数で、AI の呼び出しや埋め込みの生成に使用でき、データの処理、情報の抽出、データの分類などを行えます。
AI 関数は Experimental です。有効にするには allow_experimental_ai_functions を設定してください。
AI 関数は予測不能な出力を返す場合があります。結果は、プロンプトの品質と使用するモデルに大きく依存します。
すべての関数は、以下を提供する共通のインフラストラクチャを利用しています。

Configuration

AI 関数は、プロバイダーの認証情報と設定を格納した 名前付きコレクション を参照します。関数ごと、または関数呼び出しごとに、異なる 名前付きコレクション を作成して使い分けることができます。たとえば、テキスト関数 (aiGenerateaiClassifyaiExtractaiTranslate) で使用する 名前付きコレクション と、異なるエンドポイントが必要で通常は異なるモデルを使用する aiEmbed 関数で使用する 名前付きコレクション を、別々に定義したい場合があります。 プロバイダーの認証情報を含む 名前付きコレクション を作成するための例のステートメントを以下に示します。1 つはチャット用エンドポイント、もう 1 つは埋め込み用エンドポイントです。

名前付きコレクションのパラメータ

provider = 'openai' を設定し、endpoint を利用するサービスに向けることで、任意の OpenAI 互換 API (例: vLLM、Ollama、LiteLLM) を使用できます。

認証情報の選択

関数は、使用する 名前付きコレクション を次の順序で特定します。
  1. 存在する場合は、パラメータマップの credentials キー。
  2. それ以外の場合は、該当するデフォルト認証情報の設定。
どちらも設定されていない場合、呼び出しは失敗します。テキスト関数と埋め込み関数でデフォルト設定が分かれているのは、chat-completions のエンドポイントが embeddings 用のものとは異なるためです。

パラメータマップ

各関数は、末尾に任意の Map(String, String) のパラメータマップを受け取れます。すべての値は文字列です (数値も '0.2' のようにクォートしてください) 。不明なキーは受け付けられません。指定されたキーは、対応する 名前付きコレクション の値を上書きします。指定されていないキーは、名前付きコレクション (model/max_tokens の場合) または組み込みのデフォルト値が使われます。例外は aiEmbed で、model を必須の位置引数として受け取り (aiEmbed(text, model[, params]))、代わりにパラメータマップや 名前付きコレクション に設定するとエラーになります。 以下のパラメータは、すべての AI 関数に共通です。 各関数は、これに加えて関数固有の追加パラメータ (max_tokenstemperaturesystem_promptinstructionsdimensions など) を受け付けます。受け付けるパラメータとそのデフォルト値については、以下の各関数のリファレンスを参照してください。

クエリレベルの設定

すべての AI 関連の設定は、ai_function_ プレフィックスで Settings に一覧表示されています。

エンドポイントホストの制限

AI named collection の endpoint URL は、サーバーが自身の identity で接続する送信先であり、リクエストヘッダーに named collection の api_key を (指定されている場合に) 含めて送信する可能性があります。デフォルトでは、ClickHouse はすべてのホストへの接続を許可します。関数を特定の provider 群のみに制限するには、サーバー設定で remote_url_allow_hosts を設定します。例:
この設定はサーバー全体に適用され、HTTP を使用するすべての機能に適用されることに注意してください。

転送のセキュリティ (HTTP と HTTPS)

転送方式は、endpoint URL のスキームのみによって決まります。リクエストのペイロード自体がアプリケーションレベルで暗号化されることはなく、転送中データの保護はスキームに完全に依存します。
  • https:// — 接続に TLS が使用されます。リクエストボディ (入力テキスト、プロンプト) と、リクエストヘッダー内の api_key は転送中に暗号化され、プロバイダー の certificate も検証されます。リモートの プロバイダー には必ずこちらを使用してください。
  • http:// — 接続は暗号化されません。リクエストボディと api_key は平文で送信されます。これは、private network 上の信頼できる プロバイダー (例: ローカルの vLLM または Ollama インスタンス) に対してのみ使用してください。
AI 関数は HTTPS を強制しません。http:// エンドポイント も受け入れられ、データは暗号化されないまま送信されます。現時点では、平文の AI エンドポイント を拒否する server-side の設定はありません。remote_url_allow_hosts は宛先 host のみを制限し、URL スキームは検査しないため、許可された host への http:// エンドポイント は引き続き許可されます。転送を暗号化したい場合は、https:// エンドポイント を使うように 名前付きコレクション を設定してください。 いずれの場合も、プロバイダー は TLS 終端後の入力データを平文で受け取る点に注意してください。TLS が保護するのは、server と プロバイダー の間のネットワーク経路上のデータのみです。

サポートされているプロバイダー

オブザーバビリティ

AI 関数のアクティビティは、ClickHouse の ProfileEvents で追跡できます。 これらのイベントをクエリします。

aiClassify

導入バージョン: v26.4.0 指定されたテキストを、LLMプロバイダーを使用して、与えられたカテゴリのいずれか 1 つに分類します。 この関数は、固定の分類プロンプトと、モデルが指定されたラベルのうちちょうど 1 つだけを返すよう制約する JSON スキーマのレスポンスフォーマットとともに、テキストを送信します。レスポンスが {"category": "..."} 形式の JSON オブジェクトとして返された場合は、ラベルが取り出され、その文字列が返されます。 認証情報 (プロバイダー、モデル、エンドポイント、および必要に応じて API key を指定する 名前付きコレクション) は、オプションの パラメータマップ の credentials キーから取得されるか、その map で省略されている場合は ai_function_text_default_credentials 設定から取得されます。 構文
別名: AIClassify 引数
  • text — 分類するテキスト。String
  • categories — 候補となるカテゴリラベルの定数リスト。Array(String)
  • params — オプションの定数 Map(String, String) パラメーター。関数固有のキー: temperature (ランダム性を制御するサンプリング温度。デフォルト 0.0)、max_tokens (1 回の呼び出しあたりの最大出力トークン数。デフォルト 1024)。共通パラメーター credentialsmodel も適用されます (AI 関数 を参照)。Map(String, String)
戻り値 指定されたカテゴリラベルのいずれか、またはリクエストが失敗し、ai_function_throw_on_error が無効になっている場合はカラム型のデフォルト値 (空文字列) 。String 感情を分類
Query
Response
明示的に指定した認証情報を使用してカラムを分類する
Query

aiEmbed

導入バージョン: v26.6.0 設定済みの AI provider を使用して、指定されたテキストの埋め込みベクトルを生成します。 この関数はテキストを設定済みの埋め込み エンドポイント に送信し、生成されたベクトルを Array(Float32) として返します。 1つの block 内の行については、呼び出しごとのオーバーヘッドを減らすため、入力は 1回の HTTP request あたり最大 ai_function_embedding_max_batch_size エントリの batches にグループ化されます。 認証情報 (provider、エンドポイント、必要に応じて API key を指定する 名前付きコレクション) は、パラメータマップ の credentials キーから取得されるか、 map で省略されている場合は ai_function_embedding_default_credentials 設定から取得されます。aiEmbed では テキスト関数とは別のデフォルト認証情報設定が使われる点に注意してください。これは、embeddings エンドポイント が chat エンドポイント とは異なるためです。 model は必須の位置引数 (定数の String) です。テキスト関数とは異なり、 aiEmbed は 名前付きコレクション や パラメータマップ から model を読み取りません。model を定義する 名前付きコレクション は、 暗黙的に無視されるのではなく、拒否されます。 オプションの dimensions parameter は、モデルが対応している場合 (たとえば OpenAI’s text-embedding-3-*) 、 指定したサイズのベクトルを要求します。対応していない場合は、モデル本来のサイズが返されます。 構文
引数
  • text — 埋め込み対象のテキスト。String
  • model — 埋め込みモデル名。const String
  • params — 省略可能な定数 Map(String, String) パラメーター。関数固有のキー: dimensions (出力ベクトルの目標次元数。0 または省略時はモデルのネイティブのサイズを意味します) 。共通パラメーター credentials も使用できます (AI 関数 を参照) 。Map(String, String)
戻り値 埋め込みベクトル。入力が NULL または空の場合、リクエストが失敗して ai_function_throw_on_error が無効になっている場合、あるいは ai_function_throw_on_quota_exceeded が無効になっている状態でクォータを超過した場合は、空の配列を返します。Array(Float32) 単一の文字列を埋め込む (ai_function_embedding_default_credentials が設定されている場合、credentials は省略できます)
Query
次元を明示する場合
Query
テキストを含むカラムを埋め込む
Query

aiExtract

導入バージョン: v26.4.0 LLMプロバイダーを使用して、非構造化テキストから構造化情報を抽出します。 3 番目の引数には、自由形式の自然言語による指示 (例: '主な訴え') または '{"field_a": "field a の説明", "field_b": "field b の説明"}' の形式の JSON エンコードされたスキーマを指定できます。 指示モードでは、この関数は抽出した値をプレーンな文字列として返し、何も見つからなかった場合は空文字列を返します。 スキーマモードでは、この関数は要求されたスキーマに対応するキーを持つ JSON オブジェクト文字列を返します。存在しないフィールドは null になります。 認証情報 (プロバイダー、model、エンドポイント、および必要に応じて API key を指定する 名前付きコレクション) は、省略可能な パラメータマップ の credentials キーから取得されるか、 map で省略されている場合は ai_function_text_default_credentials setting から取得されます。 構文
別名: AIExtract 引数
  • text — 情報を抽出するテキスト。String
  • instruction_or_schema — 自由形式の抽出指示、または抽出するフィールドを記述した定数の JSONオブジェクト。const String
  • params — オプションの定数 Map(String, String) パラメーター。関数固有のキー: temperature (ランダム性を制御するサンプリング温度。デフォルト 0.0)、max_tokens (1 回の呼び出しあたりの最大出力トークン数。デフォルト 1024)。共通パラメーターである credentialsmodel も適用されます (AI 関数 を参照)。Map(String, String)
戻り値 単一の抽出結果 (指示モード) または JSONオブジェクト文字列 (スキーマモード) 。リクエストが失敗し、ai_function_throw_on_error が無効になっている場合は、カラム型のデフォルト値 (空文字列) を返します。String 自由形式の指示
Query
Response
スキーマ抽出
Query

aiGenerate

導入バージョン: v26.4.0 LLMプロバイダーを使用して、プロンプトから自由形式のテキストコンテンツを生成します。 この関数は、プロンプトを設定済みのAIプロバイダーに送信し、生成されたテキストを返します。 認証情報 (provider、model、endpoint、および必要に応じて API key を指定する名前付きコレクション) は、任意のパラメータマップの credentials キーから取得されるか、 パラメータマップで省略されている場合は ai_function_text_default_credentials 設定から取得されます。 任意のパラメータマップでは、system_prompt (モデルの 動作 (例: tone、format、role) を導く指示) 、temperaturemax_tokensmodel も設定できます。system_prompt が 設定されていない場合のデフォルト値は次のとおりです: You are a helpful assistant. Provide a clear and concise response. 構文
別名: AIGenerate 引数
  • prompt — モデルに送信する、ユーザーのプロンプトまたは質問。String
  • params — 省略可能な定数 Map(String, String) パラメータ。関数固有のキーは次のとおりです: temperature (ランダム性を制御するサンプリング温度。デフォルトは 0.7) 、max_tokens (1 回の呼び出しで生成できる最大トークン数。デフォルトは 1024) 、system_prompt (モデルの振る舞いを導く定数のシステムレベル命令。デフォルトは汎用的なアシスタント用プロンプト) 。共通パラメータの credentialsmodel も利用できます (AI 関数 を参照) 。Map(String, String)
戻り値 生成されたテキスト応答。リクエストが失敗し、ai_function_throw_on_error が無効になっている場合は、カラム型のデフォルト値 (空文字列) が返されます。String 単純な質問
Query
Response
明示的に指定した認証情報とシステムプロンプト
Query
カラムの値を要約する
Query

aiTranslate

導入バージョン: v26.4.0 指定されたテキストを、LLMプロバイダーを使用して指定した対象言語に翻訳します。 文体や方言に関する追加の指示は、パラメータマップの instructions キーで渡すことができます (例: '技術用語は翻訳しない') 。 認証情報 (provider、model、endpoint、および必要に応じて API key を指定する 名前付きコレクション) は、省略可能なパラメータマップの credentials キーから取得され、マップでこれが省略されている場合は ai_function_text_default_credentials 設定から取得されます。 構文
別名: AITranslate 引数
  • text — 翻訳するテキスト。 String
  • target_language — 対象言語名または BCP-47 コード (例: 'French', 'es-MX') 。 String
  • params — 省略可能な定数 Map(String, String) パラメータ。関数固有のキー: temperature (ランダム性を制御するサンプリング温度。デフォルトは 0.3) 、max_tokens (1 回の呼び出しで生成される出力トークンの最大数。デフォルトは 1024) 、instructions (翻訳向けの追加のスタイルまたは方言に関する指示) 。共通パラメータの credentialsmodel も使用できます (AI 関数 を参照) 。 Map(String, String)
戻り値 翻訳されたテキスト。リクエストが失敗し、ai_function_throw_on_error が無効な場合は、カラム型のデフォルト値 (空文字列) を返します。 String フランス語に翻訳
Query
Response
スタイル指示に従って日本語に翻訳
Query
最終更新日 2026年7月23日