Pular para o conteúdo
Lucas Lessa
Voltar para as notícias
SnowflakePublic PreviewImpacto: Médio

Consulte o Cortex Search direto em SQL com a função CORTEX_SEARCH_RETRIEVE

A função de tabela CORTEX_SEARCH_RETRIEVE permite consultar serviços do Cortex Search diretamente no SQL com baixa latência, suportando buscas pontuais ou por linha com junções LATERAL para RAG e chatbots.

O que mudou

O Snowflake disponibilizou em visualização pública (Public Preview) a função de tabela CORTEX_SEARCH_RETRIEVE. Com ela, você pode executar buscas semânticas de baixa latência em um serviço do Cortex Search usando comandos SQL convencionais.

Para que serve

Imagine que você armazena dúvidas de suporte e quer recuperar os artigos de ajuda mais relevantes diretamente em uma query analítica, sem precisar orquestrar chamadas de API externa ou scripts em Python.

Com esse recurso é possível:

  • Buscar contexto relevante em tempo real para aplicações de RAG e chatbots.
  • Executar buscas linha a linha a partir de uma tabela usando junções LATERAL.
  • Cruzar o conteúdo retornado da pesquisa com outras tabelas relacionais usando JOIN e GROUP BY.

Como usar

A sintaxe base chama a função passando o serviço de busca e o termo desejado:

SELECT *
FROM TABLE(CORTEX_SEARCH_RETRIEVE(
    service_name => '<database>.<schema>.<cortex_search_service>',
    query => '<query_string>',
    limit => 10
));

No exemplo abaixo, uma consulta pontual busca artigos sobre despesas corporativas:

SELECT *
FROM TABLE(CORTEX_SEARCH_RETRIEVE(
    service_name => 'meu_catalogo.meu_esquema.meu_servico_busca',
    query => 'como solicitar reembolso de despesas',
    limit => 5
));

O que acontece nesse código:

  1. O Snowflake envia a consulta para o serviço meu_servico_busca no banco e schema indicados.
  2. O serviço avalia os índices e reutiliza a camada de serving existente.
  3. O comando retorna até 5 registros com maior proximidade semântica.

Para buscar referências para cada registro de uma tabela, use LATERAL:

SELECT
    p.id_pergunta,
    p.texto_pergunta,
    cs.titulo_artigo,
    cs.METADATA$RESULT_DETAIL
FROM minhas_perguntas AS p,
LATERAL CORTEX_SEARCH_RETRIEVE(
    service_name => 'meu_catalogo.meu_esquema.meu_servico_busca',
    query => p.texto_pergunta,
    limit => 2
) AS cs;

O que acontece nesse código:

  1. A junção LATERAL avalia a função para cada linha presente em minhas_perguntas.
  2. O texto da coluna p.texto_pergunta serve como entrada de busca.
  3. São retornados até 2 artigos correspondentes para cada pergunta avaliada.

O que retorna

A função entrega as colunas da fonte indexada (exceto colunas do tipo VECTOR) e adiciona metadados operacionais:

CampoDescrição
METADATA$REQUEST_IDIdentificador único da requisição de busca para rastreio e depuração.
METADATA$ERRORMensagem de erro caso a busca falhe naquela linha; nulo em caso de sucesso.
METADATA$RESULT_DETAILJSON com dados sobre a pontuação e os componentes de relevância.

Limitações e requisitos

  • Estágio: Public Preview, aberto a todas as contas nas regiões com suporte ao Cortex Search.
  • Permissões: A role utilizada precisa do privilégio USAGE no Cortex Search Service.
  • Estado do serviço: A camada de serving do Cortex Search precisa estar ativa. Se o serviço entrou em auto-suspend por inatividade, o primeiro comando reativa o serving com latência adicional de inicialização.
  • Casos de uso: Projetado para consultas individuais e de baixa latência. Cargas com processamento em lote ou volumes massivos devem utilizar CORTEX_SEARCH_BATCH.
  • Compartilhamento: Não há suporte para serviços consumidos via compartilhamento de dados (data sharing ou listings).
Ver nota oficial do Snowflake

Retrieve Cortex Search (Public Preview)

Resumo e explicação gerados por IA a partir da release note oficial. Em caso de dúvida, a documentação oficial da plataforma prevalece.

Relacionadas