- Categorias:
Funções de cadeia de caracteres e binários (Large Language Model)
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> )
Como aplicar AI_FILTER a uma única imagem:
AI_FILTER( <predicate> , <input> )
Como aplicar AI_FILTER a várias colunas com texto e imagens, alavancando o Função PROMPT:
AI_FILTER( PROMPT('<template_string>', <col_1>, … ) )
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
ouFALSE
.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 Função 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.
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?');
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));
Para facilitar a formatação de modelos em várias colunas, o Snowflake fornece Função 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));
+--------------------------+
| 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 ;
+-------------+-------+--------+
| 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.
Importante
Ao realizar operações de JOIN que utilizam a função AI_FILTER, cada tabela no JOIN não pode exceder 500 linhas.
Para permitir uniões em maior escala, entre em contato com o gerente da sua conta para ativar a versão preliminar da otimização adaptável.
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));
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);
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));
+--------------------------+
| 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