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.
Nota
Os Cortex Search Services vêm com custos adicionais de armazenamento e computação. Para obter mais detalhes, consulte Considerações sobre custo.
Nesta versão, apenas um único Cortex Search Service por dimensão lógica é suportado.
Configuração do Cortex Search Service¶
As etapas a seguir mostram como definir um Cortex Search Service para uma dimensão lógica no seu modelo semântico do Cortex Analyst:
Criação de uma tabela dinâmica
USE DATABASE my_database; USE SCHEMA my_schema; CREATE OR REPLACE DYNAMIC TABLE my_logical_dimension_landing_table WAREHOUSE = xsmall TARGET_LAG = '1 hour' AS ( SELECT DISTINCT my_column AS my_dimension FROM my_table );
Nota
Uma tabela dinâmica é usada aqui porque DISTINCT atualmente não é bem suportada pelo Cortex Search Services. Você também pode usar uma exibição materializada se ela for mais adequada ao seu caso de uso. Para uma comparação de tabelas dinâmicas e exibições materializadas, consulte Exibições, exibições materializadas e tabelas dinâmicas.
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 my_dimension FROM my_logical_dimension_landing_table );`
Requisitos do Cortex Search Service
O serviço deve ser indexado em uma coluna com o mesmo nome da dimensão lógica.
O banco de dados e o esquema do serviço de pesquisa devem corresponder aos da tabela física ou exibição que contém a dimensão.
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_name: my_logical_dimension_search_service