Las funciones de IA son experimentales. Configura
allow_experimental_ai_functions para habilitarlas.Las funciones de IA pueden devolver resultados impredecibles. El resultado dependerá en gran medida de la calidad del prompt y del modelo utilizado.- Aplicación de cuotas: Límites por consulta de tokens (
ai_function_max_input_tokens_per_query,ai_function_max_output_tokens_per_query) y llamadas a la API (ai_function_max_api_calls_per_query). - Reintentos con backoff: Los fallos transitorios se reintentan (
ai_function_max_retries) con backoff exponencial (ai_function_retry_initial_delay_ms).
Configuración
aiGenerate, aiClassify, aiFilter, aiExtract, aiTranslate, aiRedact) en lugar de las funciones de embedding (aiEmbed, aiSimilarity), ya que requieren endpoints diferentes y normalmente usan modelos distintos.
Ejemplo de sentencia para crear una colección nombrada con credenciales del proveedor: una con un endpoint de chat y otra con un endpoint de embeddings:
Parámetros de la colección nombrada
Se puede usar cualquier API compatible con OpenAI (p. ej. vLLM, Ollama, LiteLLM) configurando
provider = 'openai' y apuntando endpoint a su servicio.Selección de credenciales
- la clave
credentialsde su mapa de parámetros, cuando está presente; - en caso contrario, la configuración predeterminada de credenciales aplicable:
ai_function_text_default_credentialspara las funciones de texto (aiGenerate,aiClassify,aiFilter,aiExtract,aiTranslate,aiRedact);ai_function_embedding_default_credentialspara las funciones de embedding (aiEmbed,aiSimilarity).
aiFilter, que devuelve UInt8 y puede usarse directamente en WHERE:
Mapa de parámetros
Map(String, String) de parámetros al final. Todos los valores son cadenas (ponga entre comillas los números, por ejemplo, '0.2'). Las claves desconocidas se rechazan. Si una clave está presente, sobrescribe el valor correspondiente de la colección nombrada; si una clave no está presente, se usa el valor de la colección nombrada (para model/max_tokens) o el valor predeterminado integrado. La excepción son las funciones de embedding (aiEmbed, aiSimilarity), que toman model como un argumento posicional obligatorio (por ejemplo, aiEmbed(text, model[, params]), aiSimilarity(text1, text2, model[, params])) y generan un error si, en su lugar, se establece en el mapa de parámetros o en la colección nombrada. Esto tiene como objetivo garantizar embeddings reproducibles.
Los siguientes parámetros son comunes a todas las funciones de IA:
Las funciones individuales aceptan parámetros adicionales específicos de cada función (como
max_tokens, temperature, system_prompt, instructions y dimensions). Consulte la referencia de cada función a continuación para ver qué parámetros acepta y sus valores predeterminados.
Configuración a nivel de consulta
ai_function_.
Restricción de hosts de endpoint
endpoint en una colección nombrada de IA es un destino saliente al que el servidor se conecta con su propia identidad, y puede enviar (si se especifica) la api_key de la colección nombrada en los encabezados de la solicitud. De forma predeterminada, ClickHouse permite cualquier host. Para restringir las funciones a un conjunto específico de proveedores, configure remote_url_allow_hosts en la configuración del servidor, por ejemplo:
Seguridad del transporte (HTTP vs HTTPS)
endpoint. No hay cifrado del payload de la solicitud a nivel de la aplicación; la protección de los datos en tránsito depende por completo del esquema:
https://— la conexión usa TLS. El cuerpo de la solicitud (texto de entrada, prompts) y laapi_keyen el encabezado de la solicitud se cifran en tránsito, y se valida el certificado del proveedor. Use esto para cualquier proveedor remoto.http://— la conexión no está cifrada. El cuerpo de la solicitud y laapi_keyse envían en texto sin formato. Use esto solo para un proveedor de confianza en una red privada (p. ej., una instancia local devLLMoOllama).
endpoint que enviaría datos en texto sin formato a un host remoto: cualquier endpoint que no sea HTTPS cuyo host no sea de bucle local genera una excepción. Los hosts de bucle local (localhost, 127.0.0.0/8, ::1) están exentos, por lo que un servidor de modelos local en http://localhost funciona de forma predeterminada. Para permitir un endpoint http:// en texto sin formato en un host remoto, establezca ai_function_allow_insecure_endpoint en 1. Esta comprobación es independiente de remote_url_allow_hosts: esa configuración es una lista de permitidos de hosts y no inspecciona el esquema de la URL, por lo que un endpoint http:// dirigido a un host permitido igualmente la supera.
Tenga en cuenta que, en cualquiera de los dos casos, el proveedor recibe los datos de entrada en texto sin formato después de la terminación de TLS; TLS protege los datos solo en la ruta de red entre el servidor y el proveedor.
Proveedores compatibles
Observabilidad
Consulta estos eventos:
aiClassify
credentials del mapa de parámetros opcional, o de la configuración
ai_function_text_default_credentials cuando el mapa la omite.
Sintaxis
AIClassify
Argumentos
text— Texto que se va a clasificar.Stringcategories— Lista constante de etiquetas de categorías candidatas.Array(String)params—Map(String, String)constante opcional de parámetros. Claves específicas de la función:temperature(temperatura de muestreo que controla la aleatoriedad; valor predeterminado0.0),max_tokens(número máximo de tokens de salida por llamada; valor predeterminado1024). También se aplican los parámetros comunescredentialsymodel(consulte Funciones de IA).Map(String, String)
ai_function_throw_on_error está deshabilitada. String
Ejemplos
Clasificación de sentimiento
Query
Response
Query
aiEmbed
Array(Float32).
Dentro de un mismo bloque de filas, las entradas se agrupan en lotes de hasta
ai_function_embedding_max_batch_size
elementos por solicitud HTTP para reducir la sobrecarga de cada llamada.
Las credenciales (una colección nombrada que especifica el proveedor, el endpoint y, opcionalmente, una API key)
se toman de la clave credentials del mapa de parámetros, o de la configuración
ai_function_embedding_default_credentials cuando el mapa la omite. Ten en cuenta que aiEmbed usa una
configuración predeterminada de credenciales distinta de la de las funciones de texto, ya que un endpoint de embeddings difiere
de uno de chat.
model es un argumento posicional obligatorio (un String constante). A diferencia de las funciones de texto,
aiEmbed no lee model de la colección nombrada ni del mapa de parámetros. Una colección nombrada
que define model se rechaza.
El parámetro opcional dimensions, cuando el modelo lo admite (por ejemplo, text-embedding-3-* de OpenAI),
solicita un vector del tamaño indicado; de lo contrario, se devuelve el tamaño nativo del modelo.
Sintaxis
AIEmbed
Argumentos
text— Texto que se convertirá en embedding.Stringmodel— Nombre del modelo de embedding.const Stringparams—Map(String, String)constante opcional de parámetros. Clave específica de la función:dimensions(dimensionalidad de destino del vector de salida;0o si se omite significa el tamaño nativo del modelo). El parámetro comúncredentialstambién se admite (consulta Funciones de IA).Map(String, String)
ai_function_throw_on_error está desactivado, o se superó una cuota con ai_function_throw_on_quota_exceeded desactivado. Array(Float32)
Ejemplos
Generar el embedding de una sola cadena (credentials puede omitirse si la configuración ai_function_embedding_default_credentials está establecida)
Query
Query
Query
aiExtract
'the main complaint') o un
esquema codificado en JSON con la forma '{"field_a": "description of field a", "field_b": "description of field b"}'.
En el modo de instrucción, la función devuelve el valor extraído como una cadena de texto simple, o una cadena vacía si no se encuentra nada.
En el modo de esquema, la función devuelve una cadena que contiene un objeto JSON cuyas claves coinciden con el esquema solicitado; los campos ausentes son null.
Las credenciales (una colección nombrada que especifica el proveedor, el modelo, el endpoint y, opcionalmente, una API key)
se toman de la clave credentials del mapa de parámetros opcional, o de la
configuración ai_function_text_default_credentials cuando el mapa la omite.
Sintaxis
AIExtract
Argumentos
text— Texto del que extraer información.Stringinstruction_or_schema— Instrucción de extracción en formato libre, o un objeto JSON constante que describe los campos que se deben extraer.const Stringparams—Map(String, String)constante opcional de parámetros. Claves específicas de la función:temperature(temperatura de muestreo que controla la aleatoriedad; valor predeterminado0.0),max_tokens(máximo de tokens de salida por llamada; valor predeterminado1024). Los parámetros comunescredentialsymodeltambién se aplican (consulte Funciones de IA).Map(String, String)
ai_function_throw_on_error está deshabilitado. String
Ejemplos
Instrucción en formato libre
Query
Response
Query
aiFilter
UInt8) apto para WHERE, PREWHERE y JOIN ... ON.
La función solicita al modelo que responda únicamente con true o false en minúsculas. Las solicitudes fallidas (cuando
ai_function_throw_on_error está deshabilitado) y las respuestas no reconocidas se asignan a 0, por lo que se excluye la fila.
Advertencia: No confíe en los resultados de aiFilter sin revisarlos detenidamente. Los predicados basados en LLM pueden ser incorrectos
o inconsistentes; utilícelos solo cuando los falsos positivos y los falsos negativos sean aceptables.
Las credenciales (una colección nombrada que especifica el proveedor, el modelo, el endpoint y, opcionalmente, una API key)
se obtienen de la clave credentials del mapa de parámetros opcional o de la
configuración ai_function_text_default_credentials cuando el mapa no la incluye.
Nota: al usar aiFilter en JOIN ... ON, el LLM se evalúa una vez por cada par candidato, lo que puede resultar costoso.
Sintaxis
AIFilter
Argumentos
text— Texto que se evaluará.Stringcondition— Condición constante en lenguaje natural que debe cumplir el texto.Stringparams—Map(String, String)constante opcional de parámetros. Claves específicas de la función:temperature(temperatura de muestreo que controla la aleatoriedad; valor predeterminado:0.0),max_tokens(máximo de tokens de salida por llamada; valor predeterminado:1024). También se aplican los parámetros comunescredentialsymodel(consulte Funciones de IA).Map(String, String)
1 si el texto cumple la condición; 0 en caso contrario. Devuelve el valor predeterminado (0) si la solicitud falla y ai_function_throw_on_error está deshabilitado. UInt8
Ejemplos
Filtrar reseñas de usuarios enfadados
Query
Query
aiGenerate
credentials del mapa de parámetros opcional, o de la
configuración ai_function_text_default_credentials cuando el mapa no la incluye.
El mapa de parámetros opcional también puede establecer system_prompt (una instrucción que guía el
comportamiento del modelo, p. ej., tono, formato y rol), temperature, max_tokens y model. Si system_prompt no está
establecido, el valor predeterminado es: You are a helpful assistant. Provide a clear and concise response.
Sintaxis
AIGenerate
Argumentos
prompt— El prompt o la pregunta del usuario que se enviará al modelo.Stringparams—Map(String, String)constante opcional de parámetros. Claves específicas de la función:temperature(temperatura de muestreo que controla la aleatoriedad; valor predeterminado0.7),max_tokens(máximo de tokens de salida por llamada; valor predeterminado1024),system_prompt(instrucción constante a nivel de sistema que guía el comportamiento del modelo; de forma predeterminada, un prompt genérico de asistente). También se aplican los parámetros comunescredentialsymodel(consulte Funciones de IA).Map(String, String)
ai_function_throw_on_error está deshabilitado. String
Ejemplos
Pregunta simple
Query
Response
Query
Query
aiRedact
[REDACTED] de forma predeterminada, configurable mediante el
parámetro replacement). El array categories restringe los tipos de PII que se redactan; un array vacío
recurre a un conjunto predeterminado de categorías comunes (nombre, correo electrónico, número de teléfono, dirección, tarjeta de crédito, dirección IP).
aiRedact indica al modelo que cambie únicamente los spans de PII detectados, pero conservar el texto circundante se realiza
según el mejor esfuerzo y el modelo puede alterarlo de todos modos (consulte la advertencia anterior). Los caracteres de control distintos de la tabulación,
el salto de línea y el retorno de carro también se normalizan a espacios antes de la solicitud, por lo que la salida no es
idéntica byte a byte a las entradas que los contienen.
Dado que aiRedact devuelve el texto de entrada completo con la PII reemplazada, la salida tiene aproximadamente la misma longitud que la entrada.
Establezca max_tokens (valor predeterminado: 1024) por encima de la longitud de la entrada en tokens; una respuesta truncada por un límite demasiado bajo
estará incompleta.
Sintaxis
AIRedact
Argumentos
text— Texto que se va a ocultar.Stringcategories— Lista constante de categorías de PII que se deben ocultar (p. ej.,['name', 'ssn', 'credit_card']). Un array vacío usa un conjunto predeterminado de categorías comunes (nombre, correo electrónico, número de teléfono, dirección, tarjeta de crédito, dirección IP).Array(String)params—Map(String, String)constante opcional de parámetros. Claves específicas de la función:temperature(temperatura de muestreo que controla la aleatoriedad; valor predeterminado0.0),max_tokens(máximo de tokens de salida por llamada; valor predeterminado1024— comoaiRedactdevuelve el texto completo, establézcalo por encima de la longitud de la entrada en tokens; de lo contrario, la respuesta podría truncarse y quedar incompleta),replacement(token que reemplaza cada span de PII detectado; valor predeterminado[REDACTED]). También se aplican los parámetros comunescredentialsymodel(consulte Funciones de IA).Map(String, String)
ai_function_throw_on_error está deshabilitado. String
Ejemplos
Ocultar categorías específicas
Query
Response
Query
aiSimilarity
-1 se asigna a
vectores de embeddings opuestos; semánticamente, esto significa que los textos con puntuaciones cercanas a -1 tienen significados
opuestos. Una puntuación de 0 significa que los vectores son ortogonales: no están relacionados semánticamente. Por último, una puntuación de 1
significa que los vectores de embeddings apuntan en la misma dirección; los textos con puntuaciones cercanas a 1 son
similares en significado. Es el complemento de cosineDistance para los mismos embeddings
(aiSimilarity = 1 - cosineDistance(embedding1, embedding2)).
El procesamiento por lotes, las credenciales y el parámetro dimensions son iguales que en aiEmbed, incluida la
configuración de credenciales predeterminadas ai_function_embedding_default_credentials.
Al igual que aiEmbed, model es un argumento posicional obligatorio (un String constante) y no se lee de la
colección nombrada ni del mapa de parámetros.
Sintaxis
AISimilarity
Argumentos
text1— Primer texto.Stringtext2— Segundo texto.Stringmodel— Nombre del modelo de embedding.const Stringparams—Map(String, String)constante opcional de parámetros. Clave específica de la función:dimensions(dimensionalidad objetivo de los embeddings;0o su omisión indica el tamaño nativo del modelo). También se aplica el parámetro comúncredentials(consulte Funciones de IA).Map(String, String)
[-1, 1], o NULL si alguno de los textos es NULL o está vacío, si falla una solicitud de embedding y ai_function_throw_on_error está deshabilitado, o si se supera una cuota y ai_function_throw_on_quota_exceeded está deshabilitado. Nullable(Float32)
Ejemplos
Compare dos cadenas (credentials puede omitirse si está configurado el ajuste ai_function_embedding_default_credentials)
Query
Query
Query
aiTranslate
instructions del mapa de parámetros (por ejemplo, 'mantener los términos técnicos sin traducir').
Las credenciales (una colección nombrada que especifica el proveedor, el modelo, el endpoint y, opcionalmente, una API key)
se obtienen de la clave credentials del mapa de parámetros opcional, o de la
configuración ai_function_text_default_credentials cuando el mapa la omite.
Sintaxis
AITranslate
Argumentos
text— Texto que se debe traducir.Stringtarget_language— Nombre del idioma de destino o código BCP-47 (p. ej.,'French','es-MX').Stringparams—Map(String, String)constante opcional de parámetros. Claves específicas de la función:temperature(temperatura de muestreo que controla la aleatoriedad; valor predeterminado0.3),max_tokens(número máximo de tokens de salida por llamada; valor predeterminado1024),instructions(instrucciones adicionales de estilo o dialecto para el traductor). También se aplican los parámetros comunescredentialsymodel(consulta Funciones de IA).Map(String, String)
ai_function_throw_on_error está deshabilitado. String
Ejemplos
Traducir al francés
Query
Response
Query