Melhore a pesquisa literal para aprimorar as respostas do Cortex Analyst¶
Este tópico descreve maneiras de melhorar pesquisas de cadeia de caracteres literal para ajudar o Cortex Analyst a gerar consultas SQL mais precisas. Às vezes, escrever a consulta SQL correta para responder a uma pergunta exige o conhecimento de valores literal exatos para filtro. Como esses valores nem sempre podem ser extraídos diretamente da pergunta, pode ser necessária alguma pesquisa.
Por exemplo, se um usuário fizer uma pergunta como:
What was my overall sales of iced tea in Q1?
Você pode tentar a seguinte consulta:
SELECT DISTINCT name FROM product WHERE name LIKE '%iced%tea%'
Se você já passou por esse processo, sabe que essa não é uma solução perfeita. Por exemplo, esta consulta não mostrará nenhum produto chamado “Chá gelado”, mas mostrará alguns “chás com especiarias”.
O Cortex Analyst oferece duas soluções para ajudar a melhorar o uso literal:
Pesquisa semântica sobre os valores de amostra fornecidos no seu modelo semântico.
Pesquisa semântica usando Cortex Search Services.
É aqui que a integração com o Cortex Search pode ajudar. Cortex Search é um recurso que permite a pesquisa difusa de baixa latência e alta qualidade em dados de texto. É possível criar um Cortex Search Service para fazer uma pesquisa semântica na coluna do banco de dados subjacente para encontrar quaisquer valores literais necessários para o Cortex Analyst usar na consulta SQL que responde à pergunta do usuário.
Pesquisa semântica sobre valores de amostra¶
Para dimensões com cardinalidade relativamente baixa (cerca de 1 a 10 valores distintos), é recomendado usar uma pesquisa de valor de amostra especificando valores de amostra suficientes para mostrar a estrutura da resposta para a dimensão. Esta solução não requer armazenamento adicional além do aumento mínimo no tamanho do modelo semântico.
Antes de o Cortex Analyst gerar uma consulta SQL para sua pergunta, ele faz uma pesquisa de similaridade semântica entre sua pergunta e os valores de amostra fornecidos para identificar quaisquer valores literal apropriados que possam ser necessários para escrever sua consulta. Observe que a pesquisa de similaridade semântica pode recuperar literais mais relevantes do que a abordagem de consulta de correspondência de cadeia de caracteres difusas mencionada acima.
Somente um definir de tamanho fixo de valores de amostra recuperados será apresentado ao LLM como literais que podem ser necessários para escrever a consulta SQL. Isso significa que adicionar mais valores de amostra não coloca você em risco de exceder a janela de contexto do LLM.
Pesquisa semântica usando o Cortex Search Service¶
Para dimensões com maior cardinalidade (mais de 10 valores distintos) ou dimensões cujos valores mudam com frequência, você pode usar um Cortex Search Service para pesquisar os literais. Esta solução reduz a duplicação de dados e mantém seu modelo semântico conciso.
Os Cortex Search Services vêm com custos adicionais de armazenamento e computação. Para obter mais detalhes, consulte Considerações sobre custo.
Nota
Nesta versão, apenas um único Cortex Search Service por dimensão lógica é suportado.
Há duas opções para criar um Cortex Search Service para uma dimensão lógica no seu modelo semântico do Cortex Analyst:
Usar a Cortex Analyst UI para criar um Cortex Search Service. Essa é a abordagem recomendada, pois é mais simples e menos propensa a erros do que a configuração manual.
Criar um Cortex Search Service manualmente com código SQL. Essa abordagem é mais flexível, mas requer que você escreva o código.
Opção 1: usar a Cortex Analyst UI¶
É possível criar um Cortex Search Service no Snowsight usando a UI de criação de modelos semânticos do Cortex Analyst. Essa abordagem não exige escrever ou editar o SQL ou YAML, e é adequada para a maioria dos usos.
No Snowsight, navegue até AI/ML > Cortex Analyst > Create new model. Siga o fluxo de criação de modelo para criar o modelo semântico do Cortex Analyst. A tela de configuração do Cortex Search Services está no final desse fluxo.
Ao definir dimensões na UI, selecione as colunas com os valores de texto para os quais você quer melhorar a correspondência de literais. O assistente seleciona automaticamente as colunas de alta cardinalidade, mas você pode escolher outras colunas. Em seguida, a UI permite que você escolha as configurações do seu novo serviço e, em seguida, cria o serviço automaticamente quando você conclui o fluxo.
O serviço é provisionado no banco de dados e no esquema que você selecionou. Depois de criado, o serviço será automaticamente vinculado ao seu modelo semântico. (O assistente também gera o YAML que vincula o serviço.)
Opção 2: criar um Cortex Search Service manualmente¶
As etapas a seguir mostram como configurar um Cortex Search Service para uma dimensão lógica no seu modelo semântico do Cortex Analyst:
Criação do Cortex Search Service
CREATE OR REPLACE CORTEX SEARCH SERVICE my_logical_dimension_search_service ON my_dimension WAREHOUSE = xsmall TARGET_LAG = '1 hour' AS ( SELECT DISTINCT my_dimension FROM my_logical_dimension_landing_table );`
Inclua o serviço do Cortex Search no seu modelo semântico usando o seguinte snippet yaml:
tables: - name: my_table base_table: database: my_database schema: my_schema table: my_table dimensions: - name: my_dimension expr: my_column cortex_search_service: service: my_logical_dimension_search_service literal_column: my_column # optional database: my_search_database # optional schema: my_search_schema # optional
Os campos a seguir são opcionais em
cortex_search_service
:literal_column
: o padrão é o índice de pesquisa.database
: o padrão é o banco de dados da tabela base especificada.schema
: o padrão é o esquema da tabela base especificada.