As funções de IA do StarRocks integram recursos de modelos de linguagem grandes (LLM) diretamente ao SQL. Isso permite executar análise, transformação e geração de texto como parte de qualquer consulta OLAP, sem mover dados para um pipeline externo.
Todas as 12 funções integradas retornam valores tipados (VARCHAR, FLOAT, JSON ou BOOLEAN) compatíveis com operações de JOIN, GROUP BY, agregação e filtro. Os dados brutos permanecem no StarRocks; apenas os campos passados para a função são enviados ao endpoint do modelo.
Cada usuário recebe uma cota gratuita de teste de 1 milhão de tokens. Após exceder a cota de teste gratuito, o uso adicional será cobrado com base no consumo real de tokens. Para detalhes sobre preços, consulte AI function pricing .
Vantagens dos recursos
Alta eficiência de concorrência: Quatro threads gerenciam centenas de chamadas LLM simultâneas. Uma abordagem no lado do cliente exigiria um número equivalente de processos, e o agendador do sistema operacional entraria em colapso muito antes da conclusão da carga de trabalho.
Zero operações de limitação de taxa: A proteção integrada de três níveis, combinada com o tratamento compatível com DashScope, elimina a necessidade de gerenciar manualmente a mecânica de RPM ou TPM.
Dados permanecem no local: Todo o pipeline executa em SQL dentro do banco de dados, sem ETL e sem risco de exfiltração de dados.
Menor custo de tokens: O pushdown de predicados reduz o volume de chamadas, o cache elimina duplicatas e a contabilidade precisa rastreia cada token. A mesma carga de trabalho pode custar 30% menos ou até menos.
Confiabilidade de nível industrial: Tolerância a falhas no nível de linha, novas tentativas inteligentes e observabilidade baseada em Profile permitem que jobs em lote com milhões de linhas executem sem supervisão.
Casos de uso
|
Caso de uso |
Funções |
|
Pontuação de sentimento pronta para painéis em avaliações de clientes |
|
|
Marcação automática de catálogo de produtos ou tickets de suporte |
|
|
Extração de campos estruturados (nomes, datas, locais) de texto livre |
|
|
Mascaramento de PII antes da gravação em um ambiente de staging |
|
|
Limpeza e padronização de conteúdo gerado pelo usuário |
|
|
Resumo de documentos longos ou threads de tickets |
|
|
Tradução e localização de registros multilíngues |
|
|
Classificação de FAQ ou resultados de busca por relevância semântica |
|
|
Conclusão de texto e geração de conteúdo com IA geral |
|
|
Filtragem de linhas por condições em linguagem natural |
|
|
Execução de perguntas e respostas em uma base de conhecimento ou recurso personalizado |
|
Modelos suportados
O StarRocks AI Center atribui modelos diferentes para tipos distintos de funções de IA. Os seguintes modelos têm suporte atualmente:
|
Capacidade |
Modelo |
Funções aplicáveis |
|
Geração de texto (LLM) |
|
|
|
Tradução |
|
|
|
Compreensão multimodal |
|
|
|
Embedding de texto |
|
|
|
Embedding multimodal |
|
|
O modelo
qwen3-vl-embeddingaparece tanto em embedding de texto quanto multimodal porque produz um espaço vetorial unificado. Vetores de texto e de imagem/vídeo podem ser comparados diretamente entre modalidades, tornando-o ideal para recuperação cross-modal.Acesse modelos personalizados por meio de Resources registrados no AI Center. Use
ai_custom_query/ai_custom_embedding/ai_custom_multimodal_embeddingpara invocá-los.
Pré-requisitos
Antes de começar, verifique se você atende aos requisitos de kernel e rede:
Requisitos de versão do kernel
3.3.20-2.1.1 e posteriores
3.5.16-2.1.1 e posteriores
Configurar acesso à rede
Os nós BE do StarRocks precisam de acesso de saída à internet para alcançar endpoints de service de modelos externos. Configure um NAT Gateway na VPC onde seu cluster está em execução:
Crie um NAT Gateway e vincule um Elastic IP Address (EIP) a ele.
Adicione uma regra SNAT que roteie o tráfego do bloco CIDR do nó BE através do NAT Gateway.
Confirme se as tabelas de rotas da sua VPC e as políticas de grupo de segurança permitem tráfego de saída.
Para detalhes de configuração, consulte Internet NAT gateway.
Referência de funções
Todas as funções são chamadas em SQL padrão. Os resultados retornam como valores tipados e podem ser usados diretamente em expressões de consulta subsequentes.
|
Função |
O que faz |
Retorna |
|
|
Classifica o texto como positivo, negativo, neutro, misto ou desconhecido |
VARCHAR |
|
|
Atribui um rótulo de uma lista personalizada |
JSON |
|
|
Extrai entidades nomeadas e as retorna como JSON |
JSON |
|
|
Substitui categorias específicas de PII por |
VARCHAR |
|
|
Corrige gramática e ortografia |
VARCHAR |
|
|
Gera um resumo, com limite opcional de palavras |
VARCHAR |
|
|
Traduz o texto para o idioma de destino |
VARCHAR |
|
|
Retorna uma pontuação de similaridade semântica de 0 a 1 |
FLOAT |
|
|
Gera conteúdo usando um modelo e prompt especificados |
VARCHAR |
|
|
Gera conteúdo com parâmetros adicionais (temperature, max_tokens, etc.) |
VARCHAR |
|
|
Filtra linhas avaliando uma condição em linguagem natural |
BOOLEAN |
|
|
Executa uma consulta em um recurso ou base de conhecimento personalizada |
VARCHAR |
Detalhes das funções
ai_sentiment
Classifica o sentimento do texto de entrada.
Sintaxe
ai_sentiment(text)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
VARCHAR |
O texto a analisar |
Retorno
VARCHAR — 'positive', 'negative', 'neutral', 'mixed' ou 'unknown'. Retorna NULL se não for possível determinar o sentimento.
Exemplos
Teste com valor único:
SELECT ai_sentiment('I am happy');
-- Returns: 'positive'
Aplicar a uma coluna de tabela:
SELECT
review_id,
review_text,
ai_sentiment(review_text) AS sentiment
FROM customer_reviews
LIMIT 10;
ai_classify
Atribui um rótulo de uma lista definida por você.
Sintaxe
ai_classify(text, labels)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
VARCHAR |
O texto a classificar |
|
|
ARRAY<VARCHAR> |
Rótulos candidatos — no mínimo 2 e no máximo 20 elementos |
Retorno
JSON — contém o resultado da classificação. Retorna NULL se a classificação falhar.
Exemplos
Teste com valor único:
SELECT ai_classify('My password is leaked.', ['urgent', 'not urgent']);
-- Returns: {"labels": ["urgent"]}
Marcar descrições de produtos em massa:
SELECT
product_id,
description,
ai_classify(description, ['clothing', 'shoes', 'accessories', 'furniture']) AS category
FROM products
LIMIT 10;
ai_extract
Extrai entidades nomeadas do texto e as retorna como um objeto JSON.
Sintaxe
ai_extract(text, entity_labels)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
VARCHAR |
O texto de onde extrair as entidades |
|
|
ARRAY<VARCHAR> |
Tipos de entidade a extrair, ex.: |
Retorno
Objeto JSON onde as chaves são os tipos de entidade e os valores são o texto extraído.
Exemplo
SELECT ai_extract(
'John Doe lives in New York and works for Acme Corp.',
['person', 'location', 'organization']
);
-- Returns: {"person":"John Doe","location":"New York","organization":"Acme Corp"}
ai_redact
Substitui categorias específicas de PII por [REDACTED].
Sintaxe
ai_redact(text, categories)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
VARCHAR |
O texto a mascarar |
|
|
ARRAY<VARCHAR> |
Categorias de PII a mascarar, ex.: |
Retorno
VARCHAR com as entidades correspondentes substituídas por [REDACTED].
Exemplos
Teste com valor único:
SELECT ai_redact(
'John Doe lives in New York. His email is john.doe@example.com.',
['person', 'email']
);
-- Returns: "[REDACTED] lives in New York. His email is [REDACTED]."
Mascarar PII em uma tabela de log antes da exportação:
SELECT
log_id,
ai_redact(log_text, ['person', 'email', 'phone']) AS redacted_log
FROM audit_logs
LIMIT 10;
ai_fix_grammar
Corrige gramática e ortografia no texto.
Sintaxe
ai_fix_grammar(text)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
VARCHAR |
O texto a corrigir |
Retorno
VARCHAR com gramática e ortografia corrigidas.
Exemplo
SELECT ai_fix_grammar('This sentence have some mistake');
-- Returns: "This sentence has some mistake"
ai_summarize
Gera um resumo conciso do texto de entrada.
Sintaxe
ai_summarize(text)
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
|
VARCHAR |
Sim |
O texto a resumir |
Retorno
Resumo em VARCHAR.
Exemplo
SELECT ai_summarize(
'Apache Spark is a unified analytics engine for large-scale data processing...',
10
);
-- Returns: "Spark: unified engine for large-scale data processing with APIs and tools."
ai_translate
Traduz texto de um idioma para outro.
Sintaxe
ai_translate(text, source_lang, target_lang)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
VARCHAR |
O texto a traduzir |
|
|
VARCHAR |
Código do idioma de origem (ISO 639-1) |
|
|
VARCHAR |
Código do idioma de destino (ISO 639-1) |
Códigos de idioma comuns:
|
Idioma |
Código |
|
Árabe |
|
|
Chinês (Simplificado) |
|
|
Inglês |
|
|
Francês |
|
|
Alemão |
|
|
Hindi |
|
|
Japonês |
|
|
Coreano |
|
|
Português |
|
|
Russo |
|
|
Espanhol |
|
Retorno
VARCHAR traduzido.
Exemplo
SELECT ai_translate('Hello, how are you?', 'en', 'es');
-- Returns: "Hola, ¿cómo estás?"
ai_similarity
Calcula a similaridade semântica entre dois textos.
Sintaxe
ai_similarity(text1, text2)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
VARCHAR |
Primeiro texto |
|
|
VARCHAR |
Segundo texto |
Retorno
FLOAT entre 0 e 1. Uma pontuação de 1,0 significa que os textos são idênticos. Essa pontuação é usada principalmente para ordenação.
Exemplo
SELECT ai_similarity(
'I enjoy hiking in the mountains.',
'I love walking through mountain trails.'
);
-- Returns: 0.82
ai_complete
Gera conteúdo usando um modelo especificado. Suporta duas sobrecargas: uma forma simples e uma forma parametrizada.
Sintaxe
-- Overload 1: Simple
ai_complete(model, prompt)
-- Overload 2: With parameters
ai_complete(model, prompt, params)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
VARCHAR |
O nome do modelo, ex.: |
|
|
VARCHAR |
O prompt que orienta a geração de conteúdo |
|
|
MAP<VARCHAR, VARCHAR> |
Opcional. Parâmetros adicionais do modelo, como |
Retorno
VARCHAR — o texto gerado.
Exemplos
Forma simples:
SELECT ai_complete('qwen-plus', 'Write a catchy email subject for a summer bike sale with a 20% discount');
-- Returns: "Summer Cycling Carnival: 20% Off for a Limited Time!"
Com parâmetros:
SELECT ai_complete('qwen-plus', 'Summarize the benefits of cloud computing', map{'temperature':'0.7', 'max_tokens':'200'});
-- Returns: "Cloud computing offers scalable resources, cost efficiency..."
ai_filter
Avalia uma condição em linguagem natural em relação ao texto e retorna TRUE ou FALSE. Útil para filtrar linhas em cláusulas WHERE.
Sintaxe
ai_filter(text, condition)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
VARCHAR |
O texto a avaliar |
|
|
VARCHAR |
Uma condição em linguagem natural descrevendo os critérios de filtro |
Retorno
BOOLEAN — TRUE se o texto satisfizer a condição, FALSE caso contrário.
Exemplo
SELECT * FROM reviews WHERE ai_filter(review_text, 'mentions product quality issues');
-- Returns rows where the review text discusses product quality problems
ai_custom_query
Executa uma consulta em um recurso ou base de conhecimento personalizada.
Sintaxe
ai_custom_query(resource, prompt)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
VARCHAR |
O nome do recurso personalizado ou base de conhecimento a consultar |
|
|
VARCHAR |
A consulta ou pergunta a fazer ao recurso |
Retorno
VARCHAR.
Exemplo
SELECT ai_custom_query('my_knowledge_base', 'What is StarRocks?');
-- Returns: "StarRocks is a high-performance analytical data warehouse..."
Multimodal e agregação de IA
ai_complete (compreensão e geração)
Interface de invocação de modelo de uso geral com suporte a inferência de texto e compreensão multimodal. É a função mais flexível entre as Funções de IA do StarRocks. Ela lida tanto com inferência simples de texto quanto com entradas multimodais, como imagens, vídeos e fusão de múltiplos conteúdos. Para geração de texto, consulte ai_complete na seção de funções de texto. Esta seção descreve a compreensão e geração multimodal.
Compreensão e geração multimodal
É possível passar dados binários de imagem, uma URL juntamente com uma modalidade ou um array de múltiplos conteúdos para conduzir um LLM multimodal para compreensão e geração.
Sintaxe
-- Binary image input
ai_complete(prompt, binary_image)
ai_complete(prompt, binary_image, extra_params)
ai_complete(model, prompt, binary_image)
ai_complete(model, prompt, binary_image, extra_params)
-- URL + modality input
ai_complete(model, prompt, input, modality)
ai_complete(model, prompt, input, modality, extra_params)
-- Multi-content fusion input
ai_complete(model, prompt, contents)
ai_complete(model, prompt, contents, extra_params)
Parâmetros
model: Recomendamos especificar explicitamente para geração multimodal (por exemplo,qwen-vl-max). As formas de URL/vídeo e múltiplos conteúdos não possuem sobrecarga de modelo padrão inequívoca; portanto, passe o modelo explicitamente.prompt: Obrigatório. O prompt.binary_image: Dados binários de imagem do tipo VARBINARY.input: Uma URL ou entrada codificada em base64 do tipo VARCHAR. Deve ser usado junto com modality.modality: O tipo de modalidade de entrada. Valores válidos:imageetext. Nota: Passarvideoatualmente retorna NULL (é necessário extrair quadros externamente e reduzir para imagem).contents: Entrada de fusão de múltiplos conteúdos do tipo ARRAY<MAP<VARCHAR,VARCHAR>>. Suporta passar várias imagens ou conteúdo misto em uma única chamada.extra_params: Opcional. Parâmetros de geração como um MAP.
Retorno
Retorna a resposta do modelo do tipo VARCHAR.
Exemplos
-- Understand an image from a URL
SELECT ai_complete('qwen-vl-max',
'Describe the main content of this image',
'https://bucket.oss-cn-hangzhou.aliyuncs.com/demo.jpg',
'image');
-- Understand a binary image
SELECT ai_complete('qwen-vl-max', 'Recognize the text in the image', image_binary)
FROM scanned_docs LIMIT 10;
-- Multi-content fusion (image and text)
SELECT ai_complete('qwen-vl-max', 'Compare the differences between these two images',
array[
map{'type': 'image_url', 'image_url': 'https://bucket.oss-cn-hangzhou.aliyuncs.com/img1.jpg'},
map{'type': 'image_url', 'image_url': 'https://bucket.oss-cn-hangzhou.aliyuncs.com/img2.jpg'}
]);
ai_embed
Converte texto em um vetor semântico de dimensão fixa.
Sintaxe
ai_embed(text)
ai_embed(model, text)
ai_embed(model, text, extra_params)
Parâmetros
model: Opcional. O nome do modelo de embedding.text: Obrigatório. O texto a vetorizar.extra_params: Opcional (ex.: dimension).
Retorno
Vetor ARRAY<FLOAT>. Retorna NULL se o texto for NULL.
ai_custom_embedding
Chama um modelo de embedding personalizado por meio de um Resource para gerar vetores de texto.
Sintaxe
ai_custom_embedding(resource_name, text)
ai_custom_embedding(resource_name, text, extra_params)
Retorno
Vetor ARRAY<FLOAT>.
ai_embed_multimodal
Converte imagens, vídeos ou texto em vetores semânticos em um espaço vetorial unificado, com suporte a recuperação cross-modal e fusão de múltiplos conteúdos.
Sintaxe
ai_embed_multimodal(input, modality)
ai_embed_multimodal(model, input, modality)
ai_embed_multimodal(binary_image)
ai_embed_multimodal(contents)
Parâmetros
input: URL ou entrada codificada em Base64. Deve ser usado com modality.modality: Um entre image, video ou text.binary_image: Dados binários de imagem, tipo VARBINARY.contents: Entrada de fusão de múltiplos conteúdos, ARRAY<MAP<VARCHAR,VARCHAR>>.
Retorno
Vetor ARRAY<FLOAT>.
ai_custom_multimodal_embedding
Chama um modelo de embedding multimodal personalizado por meio de um Resource.
Sintaxe
ai_custom_multimodal_embedding(resource_name, input, modality)
ai_custom_multimodal_embedding(resource_name, binary_image)
ai_custom_multimodal_embedding(resource_name, contents)
Retorno
Vetor ARRAY<FLOAT>.
ai_agg
Realiza agregação baseada em LLM em um grupo de textos usando um prompt (função de agregação GROUP BY).
Sintaxe
ai_agg(text, instruction)
ai_agg(model, text, instruction)
Parâmetros
text: Obrigatório. A coluna de texto a agregar.instruction: Obrigatório. A instrução de agregação.
Retorno
VARCHAR — o resultado agregado (um por grupo).
ai_agg_summary
Gera um resumo agregado para um grupo de textos — um wrapper de conveniência em torno de ai_agg para sumarização.
Sintaxe
ai_agg_summary(text)
ai_agg_summary(model, text)
Retorno
VARCHAR — o resumo agregado (um por grupo).
Para orientar a direção do resumo, use ai_agg e descreva requisitos específicos na instrução.
Melhores práticas
Ao combinar funções básicas, você pode construir pipelines de processamento de dados de IA ponta a ponta em uma única instrução SQL — sem necessidade de exportar dados para services externos.
Filtragem semântica + roteamento de classificação
Use ai_filter no WHERE para selecionar registros semanticamente relevantes e aplique ai_classify para atribuir rótulos, habilitando o roteamento semântico para tickets ou avaliações. Ideal para despacho automático de tickets, categorização de feedback de usuários e cenários similares.
-- Step 1: Semantically filter complaint tickets
-- Step 2: Classify complaints by business line
SELECT ticket_id, content,
ai_classify(content, ['logistics', 'product quality', 'after-sales', 'pricing dispute']) AS category
FROM tickets
WHERE ai_filter(content, 'the content expresses a customer complaint or dissatisfaction');
Construção de conjunto de dados para recuperação multimodal
Use ai_embed_multimodal para vetorizar imagens/vídeos em escala, grave-os em colunas vetoriais e combine índices vetoriais com índices de texto completo para recuperação híbrida. Os dados nunca saem do lakehouse. Ideal para busca visual de produtos, recuperação de conteúdo de vídeo e construção de base de conhecimento RAG multimodal.
-- Batch-vectorize product images
INSERT INTO product_vectors (product_id, image_vec)
SELECT product_id,
ai_embed_multimodal('qwen3-vl-embedding', image_url, 'image') AS image_vec
FROM products;
-- Text-to-image search: find products most similar to a description
SELECT product_id, image_url
FROM product_vectors
ORDER BY cosine_similarity(image_vec,
ai_embed_multimodal('qwen3-vl-embedding', 'red summer dress', 'text'))
DESC LIMIT 10;
Sumarização de IA no nível de cliente/produto
Empregue ai_agg / ai_agg_summary no GROUP BY para consolidar múltiplos textos por entidade em um perfil ou resumo, produzindo colunas de saída prontas para análise. Indicado para criação de perfil de clientes, resumo de avaliações de produtos e extração de notas de reuniões.
-- Generate a problem profile for each customer
SELECT customer_id,
ai_agg(content, 'Summarize all tickets for this customer in one sentence, covering main issues and sentiment') AS customer_profile
FROM support_tickets
GROUP BY customer_id;
-- Aggregate product review summaries
SELECT product_id,
ai_agg_summary(review_text) AS review_digest
FROM product_reviews
GROUP BY product_id;
Mascaramento de PII antes da análise
Aplique ai_redact para anonimizar o texto antes de armazená-lo para análise, equilibrando conformidade e usabilidade. Adequado para preparação de dados de dev/teste, higienização de logs de auditoria e cenários de conformidade com privacidade.
-- Redact user feedback and write to an analysis table
INSERT INTO feedback_anonymized (ticket_id, content_clean)
SELECT ticket_id,
ai_redact(content, ['name', 'phone', 'ID number', 'email', 'bank card']) AS content_clean
FROM user_feedback;
Geração e tradução de conteúdo em lote
Combine ai_complete para geração de textos de marketing em lote com ai_translate para localização multilíngue — tudo dentro do SQL, sem necessidade de ferramentas externas.
-- Batch-generate marketing slogans and translate to English
SELECT product_name,
ai_complete('qwen3.6-plus',
concat('Write a promotional slogan (15 words max) for: ', product_name)) AS slogan,
ai_translate(
ai_complete('qwen3.6-plus',
concat('Write a promotional slogan (15 words max) for: ', product_name)),
'en', 'ja') AS slogan_ja
FROM products
WHERE category = 'summer_new';
Configuração do cluster
Parâmetros dinâmicos do BE controlam o comportamento das funções de IA. Altere-os em tempo de execução usando ADMIN SET CONFIG — nenhuma reinicialização necessária.
Para visualizar os valores atuais:
SELECT * FROM information_schema.be_configs WHERE NAME LIKE 'ai_%';
Conexão do modelo
|
Parâmetro |
Padrão |
Descrição |
|
|
|
Endpoint do service de modelo. Suporta qualquer endpoint Chat/Completions compatível com OpenAI. |
|
|
|
O modelo a chamar. Suporta modelos de geração de texto. |
|
|
|
Chave de API para o Alibaba Cloud Model Studio. Consulte Get an API key. |
|
|
|
Prompt de sistema aplicado a todas as funções de IA. |
|
|
|
Tempo limite de conexão HTTP em milissegundos (padrão: 10 segundos). |
|
|
|
Tempo limite de requisição HTTP em milissegundos (padrão: 10 minutos). |
|
|
|
Máximo de requisições HTTP simultâneas para o modelo. Controla o throughput de requisições. |
|
|
(Formato compatível com OpenAI) |
Modelo de corpo de requisição. Placeholders: |
Tamanhos de lote
Cada função envia requisições ao modelo em lotes. Lotes maiores reduzem o número de chamadas ao modelo e podem diminuir o tempo total de resposta.
|
Parâmetro |
Padrão |
Função |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Modelos de prompt
Cada função usa um modelo de prompt configurável. Os placeholders do modelo usam $0, $1, etc.
|
Parâmetro |
Placeholders |
Função |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|