As funções de IA são experimentais. Defina
allow_experimental_ai_functions para ativá-las.As funções de IA podem retornar saídas imprevisíveis. O resultado dependerá muito da qualidade do prompt e do modelo usado.- Aplicação de cotas: Limites por consulta para tokens (
ai_function_max_input_tokens_per_query,ai_function_max_output_tokens_per_query) e chamadas de API (ai_function_max_api_calls_per_query). - Retentativas com backoff: Falhas transitórias são repetidas (
ai_function_max_retries) com backoff exponencial (ai_function_retry_initial_delay_ms).
Configuração
aiGenerate, aiClassify, aiFilter, aiExtract, aiTranslate, aiRedact) em vez das funções de embedding (aiEmbed, aiSimilarity), que requerem endpoints diferentes e geralmente usam modelos diferentes.
Exemplo de instrução para criar uma coleção nomeada com credenciais do provedor: uma com endpoint de chat e outra com endpoint de embedding:
Parâmetros da coleção nomeada
Qualquer API compatível com OpenAI (por exemplo, vLLM, Ollama, LiteLLM) pode ser usada definindo
provider = 'openai' e apontando o endpoint para o seu serviço.Selecionando credenciais
- a chave
credentialsdo seu mapa de parâmetros, quando presente; - caso contrário, a configuração padrão de credenciais aplicável:
ai_function_text_default_credentialspara as funções de texto (aiGenerate,aiClassify,aiFilter,aiExtract,aiTranslate,aiRedact);ai_function_embedding_default_credentialspara as funções de embedding (aiEmbed,aiSimilarity).
aiFilter, que retorna UInt8 e pode ser usada diretamente em WHERE:
Mapa de parâmetros
Map(String, String) opcional de parâmetros. Todos os valores são strings (coloque os números entre aspas, por exemplo, '0.2'). Chaves desconhecidas são rejeitadas. Uma chave presente substitui o valor correspondente da coleção nomeada; uma chave ausente recorre à coleção nomeada (para model/max_tokens) ou ao padrão interno. A exceção são as funções de embedding (aiEmbed, aiSimilarity), que recebem model como um argumento posicional obrigatório (por exemplo, aiEmbed(text, model[, params]), aiSimilarity(text1, text2, model[, params])) e geram erro se ele for definido no mapa de parâmetros ou na coleção nomeada. Isso serve para garantir embeddings reproduzíveis.
Os parâmetros a seguir são comuns a todas as funções de IA:
Funções individuais aceitam parâmetros adicionais específicos de cada função (como
max_tokens, temperature, system_prompt, instructions e dimensions). Consulte a referência de cada função abaixo para ver quais parâmetros ela aceita e seus valores padrão.
Configurações no nível da consulta
ai_function_.
Restringindo hosts de endpoint
endpoint em uma coleção nomeada de IA é um destino de saída ao qual o servidor se conecta com sua própria identidade, potencialmente enviando (se especificada) a api_key da coleção nomeada no cabeçalho da requisição. Por padrão, o ClickHouse permite qualquer host. Para restringir as funções a um conjunto específico de provedores, configure remote_url_allow_hosts na configuração do servidor, por exemplo:
Segurança de transporte (HTTP vs HTTPS)
endpoint. Não há criptografia do payload da requisição no nível da aplicação; a proteção dos dados em trânsito depende inteiramente do esquema:
https://— a conexão usa TLS. O corpo da requisição (texto de entrada, prompts) e aapi_keyno cabeçalho da requisição são criptografados em trânsito, e o certificado do provedor é validado. Use isto para qualquer provedor remoto.http://— a conexão não é criptografada. O corpo da requisição e aapi_keysão enviados em texto claro. Use isto somente com um provedor confiável em uma rede privada (por exemplo, uma instância local devLLMouOllama).
endpoint que enviaria dados em texto claro para um host remoto: qualquer endpoint que não seja HTTPS e cujo host não seja de loopback gera uma exceção. Hosts de loopback (localhost, 127.0.0.0/8, ::1) estão isentos, portanto um servidor de modelo local em http://localhost funciona imediatamente. Para permitir um endpoint http:// em texto claro em um host remoto, defina ai_function_allow_insecure_endpoint como 1. Essa verificação é independente de remote_url_allow_hosts: essa configuração é uma lista de permissões de hosts e não inspeciona o esquema da URL, portanto um endpoint http:// direcionado a um host permitido ainda passa por ela.
Observe que, em ambos os casos, o provedor recebe os dados de entrada em texto claro após a terminação de TLS; o TLS protege os dados apenas no caminho de rede entre o servidor e o provedor.
Provedores compatíveis
Observabilidade
Consulte estes eventos:
aiClassify
credentials do mapa de parâmetros opcional, ou da
configuração ai_function_text_default_credentials quando o mapa a omite.
Sintaxe
AIClassify
Argumentos
text— Texto a ser classificado.Stringcategories— Lista constante de rótulos de categorias possíveis.Array(String)params—Map(String, String)constante opcional de parâmetros. Chaves específicas da função:temperature(temperatura de amostragem que controla a aleatoriedade; padrão0.0),max_tokens(número máximo de tokens de saída por chamada; padrão1024). Os parâmetros comunscredentialsemodeltambém se aplicam (consulte Funções de IA).Map(String, String)
ai_function_throw_on_error esteja desabilitado. String
Exemplos
Classificar o sentimento
Query
Response
Query
aiEmbed
Array(Float32).
Dentro de um único bloco de linhas, as entradas são agrupadas em lotes de até
ai_function_embedding_max_batch_size
entradas por requisição HTTP para reduzir a sobrecarga por chamada.
As credenciais (uma coleção nomeada que especifica o provedor, o endpoint e, opcionalmente, uma chave de API)
são obtidas da chave credentials no mapa de parâmetros ou da configuração
ai_function_embedding_default_credentials quando o mapa a omite. Observe que aiEmbed usa uma
configuração de credenciais padrão separada das funções de texto, já que um endpoint de embeddings é diferente
de um endpoint de chat.
O model é um argumento posicional obrigatório (um String constante). Diferentemente das funções de texto,
aiEmbed não lê model da coleção nomeada nem do mapa de parâmetros. Uma coleção nomeada
que define model é rejeitada.
O parâmetro opcional dimensions, quando compatível com o modelo (por exemplo, text-embedding-3-* da OpenAI),
solicita um vetor do tamanho especificado; caso contrário, o tamanho nativo do modelo é retornado.
Sintaxe
AIEmbed
Argumentos
text— Texto para gerar o embedding.Stringmodel— Nome do modelo de embedding.const Stringparams—Map(String, String)constante opcional de parâmetros. Chave específica da função:dimensions(dimensionalidade de destino do vetor de saída;0ou omitido significa o tamanho nativo do modelo). O parâmetro comumcredentialstambém se aplica (consulte Funções de IA).Map(String, String)
ai_function_throw_on_error estiver desabilitado, ou se uma cota for excedida com ai_function_throw_on_quota_exceeded desabilitado. Array(Float32)
Exemplos
Gerar o embedding de uma única string (credentials pode ser omitido se a configuração ai_function_embedding_default_credentials estiver definida)
Query
Query
Query
aiExtract
'a principal reclamação') ou um
esquema codificado em JSON no formato '{"field_a": "description of field a", "field_b": "description of field b"}'.
No modo de instrução, a função retorna o valor extraído como uma string simples, ou uma string vazia se nada for encontrado.
No modo de esquema, a função retorna uma string contendo um objeto JSON cujas chaves correspondem ao esquema solicitado; os campos ausentes são null.
As credenciais (uma coleção nomeada que especifica o provedor, o modelo, o endpoint e, opcionalmente, uma chave de API)
são obtidas da chave credentials do mapa de parâmetros opcional ou da
configuração ai_function_text_default_credentials quando o mapa a omite.
Sintaxe
AIExtract
Argumentos
text— Texto do qual extrair informações.Stringinstruction_or_schema— Instrução de extração em formato livre ou um objeto JSON constante que descreve os campos a serem extraídos.const Stringparams—Map(String, String)constante opcional de parâmetros. Chaves específicas da função:temperature(temperatura de amostragem que controla a aleatoriedade; padrão0.0),max_tokens(número máximo de tokens de saída por chamada; padrão1024). Os parâmetros comunscredentialsemodeltambém se aplicam (consulte AI Functions).Map(String, String)
ai_function_throw_on_error estiver desativado. String
Exemplos
Instrução em formato livre
Query
Response
Query
aiFilter
UInt8) adequado para WHERE, PREWHERE e JOIN ... ON.
A função solicita que o modelo responda apenas com true ou false em letras minúsculas. Solicitações com falha (quando
ai_function_throw_on_error está desabilitado) e respostas não reconhecidas são mapeadas para 0, portanto a linha é filtrada.
Aviso: Não confie nos resultados de aiFilter sem analisá-los cuidadosamente. Predicados baseados em LLM podem estar incorretos
ou ser inconsistentes; use-os apenas quando falsos positivos e falsos negativos forem aceitáveis.
As credenciais (uma coleção nomeada que especifica o provedor, o modelo, o endpoint e, opcionalmente, uma chave de API)
são obtidas da chave credentials do mapa de parâmetros opcional ou da
configuração ai_function_text_default_credentials quando o mapa não a inclui.
Observação: usar aiFilter em JOIN ... ON avalia a LLM uma vez para cada par candidato e pode ser caro.
Sintaxe
AIFilter
Argumentos
text— Texto a ser avaliado.Stringcondition— Condição constante em linguagem natural que o texto deve atender.Stringparams—Map(String, String)constante e opcional de parâmetros. Chaves específicas da função:temperature(temperatura de amostragem que controla a aleatoriedade; padrão0.0),max_tokens(máximo de tokens de saída por chamada; padrão1024). Os parâmetros comunscredentialsemodeltambém se aplicam (consulte Funções de IA).Map(String, String)
1 se o texto atender à condição; caso contrário, 0. Retorna o valor padrão (0) se a solicitação falhar e ai_function_throw_on_error estiver desabilitado. UInt8
Exemplos
Filtrar avaliações irritadas
Query
Query
aiGenerate
credentials do mapa de parâmetros opcional ou da
configuração ai_function_text_default_credentials quando o mapa a omite.
O mapa de parâmetros opcional também pode definir system_prompt (uma instrução que orienta o
comportamento do modelo, por exemplo, tom, formato e papel), temperature, max_tokens e model. Se system_prompt não
for definido, o valor padrão é: You are a helpful assistant. Provide a clear and concise response.
Sintaxe
AIGenerate
Argumentos
prompt— O prompt ou a pergunta do usuário a ser enviada ao modelo.Stringparams—Map(String, String)constante opcional de parâmetros. Chaves específicas da função:temperature(temperatura de amostragem que controla a aleatoriedade; padrão0.7),max_tokens(máximo de tokens de saída por chamada; padrão1024),system_prompt(instrução constante em nível de sistema que orienta o comportamento do modelo; por padrão, um prompt genérico de assistente). Os parâmetros comunscredentialsemodeltambém se aplicam (consulte funções de IA).Map(String, String)
ai_function_throw_on_error estiver desabilitado. String
Exemplos
Pergunta simples
Query
Response
Query
Query
aiRedact
[REDACTED] por padrão, configurável pelo
parâmetro replacement). O array categories restringe quais tipos de PII são ocultados; um array vazio
recorre a um conjunto padrão de categorias comuns (nome, e-mail, número de telefone, endereço, cartão de crédito, endereço IP).
aiRedact instrui o modelo a alterar apenas os spans de PII detectados, mas a preservação do texto ao redor é
feita conforme as melhores práticas possíveis, e o modelo ainda pode alterá-lo (consulte o aviso acima). Caracteres de controle diferentes de tabulação,
quebra de linha e retorno de carro também são normalizados para espaços antes da solicitação; portanto, a saída não é
idêntica em bytes a entradas que os contêm.
Como aiRedact retorna todo o texto de entrada com PII substituída, a saída tem aproximadamente o mesmo tamanho da entrada.
Defina max_tokens (padrão 1024) como um valor maior que o comprimento da entrada em tokens; uma resposta truncada por um limite muito baixo
ficará incompleta.
Sintaxe
AIRedact
Argumentos
text— Texto a ser ocultado.Stringcategories— Lista constante de categorias de PII a serem ocultadas (por exemplo,['name', 'ssn', 'credit_card']). Um array vazio usa um conjunto padrão de categorias comuns (nome, e-mail, número de telefone, endereço, cartão de crédito, endereço IP).Array(String)params—Map(String, String)constante opcional de parâmetros. Chaves específicas da função:temperature(temperatura de amostragem que controla a aleatoriedade; padrão0.0),max_tokens(número máximo de tokens de saída por chamada; padrão1024— comoaiRedactretorna o texto completo, defina-o como maior que o comprimento da entrada em tokens; caso contrário, a resposta poderá ser truncada e incompleta),replacement(token que substitui cada span de PII detectado; padrão[REDACTED]). Os parâmetros comunscredentialsemodeltambém se aplicam (consulte Funções de IA).Map(String, String)
ai_function_throw_on_error esteja desabilitado. String
Exemplos
Ocultar categorias específicas
Query
Response
Query
aiSimilarity
-1 é atribuída a
vetores de embedding opostos; semanticamente, isso significa que textos com pontuações próximas de -1 têm significados
opostos. Uma pontuação de 0 significa que os vetores são ortogonais: semanticamente não relacionados. Por fim, uma pontuação de 1
significa que os vetores de embedding apontam na mesma direção; textos com pontuações próximas de 1 têm
significados semelhantes. É o complemento de cosineDistance para os mesmos embeddings
(aiSimilarity = 1 - cosineDistance(embedding1, embedding2)).
O processamento em lotes, as credenciais e o parâmetro dimensions são iguais aos de aiEmbed, incluindo a
configuração de credenciais padrão ai_function_embedding_default_credentials.
Assim como em aiEmbed, model é um argumento posicional obrigatório (uma String constante) e não é lido da
coleção nomeada nem do mapa de parâmetros.
Sintaxe
AISimilarity
Argumentos
text1— Primeiro texto.Stringtext2— Segundo texto.Stringmodel— Nome do modelo de embedding.const Stringparams—Map(String, String)constante opcional de parâmetros. Chave específica da função:dimensions(dimensionalidade de destino dos embeddings;0ou a omissão do parâmetro indica o tamanho nativo do modelo). O parâmetro comumcredentialstambém se aplica (consulte Funções de IA).Map(String, String)
[-1, 1] ou NULL se um dos textos for NULL ou estiver vazio, se uma solicitação de embedding falhar e ai_function_throw_on_error estiver desabilitado ou se uma cota for excedida com ai_function_throw_on_quota_exceeded desabilitado. Nullable(Float32)
Exemplos
Compare duas strings (credentials pode ser omitido se a configuração ai_function_embedding_default_credentials estiver definida)
Query
Query
Query
aiTranslate
instructions do mapa de parâmetros (por exemplo, 'mantenha os termos técnicos sem tradução').
As credenciais (uma coleção nomeada que especifica o provedor, o modelo, o endpoint e, opcionalmente, uma chave de API)
são obtidas da chave credentials do mapa de parâmetros opcional, ou da
configuração ai_function_text_default_credentials quando o mapa não a inclui.
Sintaxe
AITranslate
Argumentos
text— Texto a ser traduzido.Stringtarget_language— Nome do idioma de destino ou código BCP-47 (por exemplo,'French','es-MX').Stringparams—Map(String, String)constante opcional de parâmetros. Chaves específicas da função:temperature(temperatura de amostragem que controla a aleatoriedade; padrão0.3),max_tokens(número máximo de tokens de saída por chamada; padrão1024),instructions(instruções adicionais de estilo ou dialeto para o tradutor). Os parâmetros comunscredentialsemodeltambém se aplicam (consulte Funções de IA).Map(String, String)
ai_function_throw_on_error estiver desabilitado. String
Exemplos
Traduzir para o francês
Query
Response
Query