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?
Copy

Você pode tentar a seguinte consulta:

SELECT DISTINCT name FROM product WHERE name LIKE '%iced%tea%'
Copy

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:

É 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:

  1. 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
      );`
    
    Copy
  2. 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
    
    Copy

    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.