Categorias:

Funções de cadeia de caracteres e binários (funções de AI)

AI_FILTER

Classifica entradas de prompt de forma livre em um booliano. Atualmente, oferece suporte à filtragem de texto e imagem.

Disponibilidade de região

A tabela a seguir mostra as regiões em que você pode usar a função AI_FILTER para texto e imagens:

Tipo de dados
AWS US West 2
(Oregon)
AWS US East 1
(N. Virginia)
AWS Europe Central 1
(Frankfurt)
AWS Europe West 1
(Ireland)
AWS AP Southeast 2
(Sidney)
AWS AP Northeast 1
(Tokyo)
Azure East US 2
(Virginia)
Azure West Europe
(Países Baixos)
AWS
(Entre regiões)
TEXT

IMAGE

Sintaxe

Como aplicar AI_FILTER a uma cadeia de caracteres de entrada:

AI_FILTER( <input> )
Copy

Como aplicar AI_FILTER a uma única imagem:

AI_FILTER( <predicate> , <input> )
Copy

Como aplicar AI_FILTER a várias colunas com texto e imagens, alavancando o PROMPT:

AI_FILTER( PROMPT('<template_string>',  <col_1>,  ) )
Copy

Argumentos

Obrigatório:

Se você estiver especificando uma cadeia de caracteres de entrada:

input

Uma cadeia de caracteres contendo o texto a ser classificado.

Se você estiver filtrando em um arquivo:

predicate

Uma cadeia de caracteres que contém as instruções para classificar a entrada do arquivo como TRUE ou FALSE.

file

A coluna pela qual o arquivo é classificado com base nas instruções especificadas em predicate. Você pode usar IMAGE FILE como uma entrada para a função AI_FILTER.

Se você estiver usando a função PROMPT() para formatar as entradas:

Para prompts mais complicados, especialmente com várias colunas de arquivos, você pode usar PROMPT para ajudar a criar um input.

A função PROMPT() é compatível com a formatação dos tipos de dados de cadeia de caracteres e FILE. Para obter detalhes sobre o uso, consulte Exemplos.

Retornos

Retorna um valor booliano que indica se a instrução é avaliada como TRUE ou FALSE para o texto especificado.

Requisitos de controle de acesso

Os usuários devem usar uma função que tenha a função do banco de dados SNOWFLAKE.CORTEX_USER. Consulte Privilégios obrigatórios para obter mais informações sobre esse privilégio.

Otimização de desempenho e custos

Por padrão, AI_FILTER inclui uma otimização de desempenho integrada em consultas qualificadas. Essa otimização pode proporcionar um desempenho de 2 a 10 vezes mais rápido e até 60% menos uso de tokens, com impacto mínimo na qualidade.

Essa otimização é acionada automaticamente quando o mecanismo de consulta detecta um padrão adequado. Semelhante a outras otimizações de consulta, o Snowflake não garante que essa otimização será aplicada a todas as consultas. O mecanismo utiliza roteamento adaptável e reescrita com reconhecimento de contexto para executar operações de AI mais eficientes sempre que possível.

Para desativar essa otimização para sua conta, entre em contato com seu gerente de conta.

Notas de uso

Para um desempenho ideal, siga estas diretrizes:

  • Certifique-se de que as colunas enviadas para AI_FILTER não contenham valores NULL.

  • Use texto simples em inglês para cadeia de caracteres de entrada ou para os argumentos de PROMPT().

  • Forneça detalhes sobre a instrução de texto de entrada. Por exemplo, em vez de uma instrução como “parece satisfeito”, use “Na transcrição de suporte a seguir, o cliente parece satisfeito”.

  • Considere a possibilidade de formular a entrada na forma de uma pergunta. Por exemplo, “Na seguinte transcrição de suporte, o cliente parece satisfeito?”

Exemplos

AI_FILTER: texto

Pode ser chamado como uma função booliana escalar simples em constantes de cadeia de caracteres.

SELECT AI_FILTER('Is Canada in North America?');
Copy
TRUE

Você pode CONCAT , || instruções com colunas de texto para usar essa função:

WITH reviews AS (
            SELECT 'Wow... Loved this place.' AS review
  UNION ALL SELECT 'The pizza is not good.'
)
SELECT * FROM reviews
WHERE AI_FILTER(CONCAT('The reviewer enjoyed the restaurant: ', review));
Copy

Para facilitar a formatação de modelos em várias colunas, o Snowflake fornece PROMPT; por exemplo:

WITH reviews AS (

SELECT 'Wow... Loved this place.' AS review
UNION ALL SELECT 'The pizza is not good.'
)
SELECT * FROM reviews
WHERE AI_FILTER(PROMPT('The reviewer enjoyed the restaurant: {0}', review));
Copy
+--------------------------+
| REVIEW                   |
|--------------------------+
| Wow... Loved this place. |
+--------------------------+

Ao avaliar a qualidade de AI_FILTER, pode ser útil comparar os predicados candidatos entre as colunas.

WITH country AS (
          SELECT 'Switzerland' AS country,
UNION ALL SELECT 'Korea'
),
region AS (
            SELECT 'Asia' AS region,
  UNION ALL SELECT 'Europe'
)
SELECT country,
      region,
      AI_FILTER(PROMPT('{0} is in {1}', country, region)) AS result
FROM country CROSS JOIN region ;
Copy
+-------------+-------+--------+
| COUNTRY     |REGION | RESULT |
|-------------+-------+--------+
| Switzerland |Europe | TRUE   |
|-------------+-------+--------+
| Switzerland | Asia  | FALSE  |
|-------------+-------+--------+
| Korea       |Europe | FALSE  |
+-------------+-------+--------+
| Korea       | Asia  | TRUE   |
+-------------+-------+--------+

Uso do AI_FILTER com um JOIN

Você pode usar o AI_FILTER com um JOIN para expressar a vinculação de duas tabelas com um prompt de linguagem natural que a AI pode usar para raciocinar.

O exemplo a seguir une a tabela RESUMES com a tabela JOBS usando um prompt com a função AI_FILTER.

SELECT *
FROM RESUMES
JOIN JOBS
ON AI_FILTER(PROMPT('Evaluate if this resume {0} fits this job description {1}', RESUME.contents, JOBS.jd));
Copy

AI_FILTER: imagens

Os exemplos a seguir filtram arquivos de imagem com base em uma instrução.

Filtre imagens fornecendo um predicado de instrução e a coluna do arquivo de imagem:

WITH pictures AS (
  SELECT
      TO_FILE(file_url) AS img
  FROM DIRECTORY(@file_stage)
)
SELECT
FL_GET_RELATIVE_PATH(img) AS file_path FROM pictures
WHERE AI_FILTER('Is this a picture of a cat?', img);
Copy
WITH pictures AS (
  SELECT
      TO_FILE(file_url) AS img
  FROM DIRECTORY(@file_stage)
)
SELECT
    FL_GET_RELATIVE_PATH(img) AS file_path FROM pictures
WHERE AI_FILTER(PROMPT('{0} is a cat picture', img));
Copy
+--------------------------+
|        FILE_PATH         |
|--------------------------+
|        2cats.jpg         |
+--------------------------+
|        cat1.png          |
+--------------------------+
|      orange_cat.jpg      |
+--------------------------+

Limitações

  • As funções do Snowflake AI não são compatíveis com a atualização incremental dinâmica da tabela.

  • As funções do Snowflake AI não funcionam no FILEs criado a partir de arquivos de estágio dos seguintes tipos de estágio:

    • Estágios internos com modo de criptografia TYPE = 'SNOWFLAKE_FULL'

    • Estágios externos com qualquer modo criptografado no lado do cliente:

      • TYPE = 'AWS_CSE'

      • TYPE = 'AZURE_CSE'

    • Estágio do usuário, estágio da tabela

    • Estágio com nomes entre aspas duplas