Categorias:

Funções de agregação (geral) Funções de cadeia de caracteres e binários (funções de AI)

AI_AGG

Reduz uma coluna de dados de texto usando uma instrução em linguagem natural.

Por exemplo, AI_AGG(reviews, 'Describe the most common complaints mentioned in the book reviews') retornará um resumo do feedback do usuário.

Ao contrário de COMPLETE (SNOWFLAKE.CORTEX) e SUMMARIZE (SNOWFLAKE.CORTEX), essa função suporta conjuntos de dados maiores do que a janela máxima de contexto do modelo de linguagem.

Consulte também:

AI_SUMMARIZE_AGG

Sintaxe

AI_AGG( <expr>, <instruction> )
Copy

Argumentos

Obrigatório:

expr

Essa é uma expressão que contém texto no qual uma operação de agregação deve ser executada, como avaliações de restaurantes ou transcrições telefônicas.

instruction

Uma string contendo uma especificação em linguagem natural da agregação a ser executada, por exemplo, «resuma as avaliações» ou «identifique todas as pessoas mencionadas e escreva uma breve autobiografia para cada uma delas».

Retornos

Retorna uma cadeia de caracteres que contém o resultado da agregação.

A função pode indicar que os dados que você forneceu não contêm a resposta se:

  • Você não fornece uma instrução clara especificando como agregar os dados

  • Os dados não têm as informações necessárias para concluir sua instrução

Notas de uso

Para um desempenho ideal, siga estas diretrizes:

  • Use texto em inglês simples para a instrução.

  • Forneça uma instrução declarativa em vez de fazer uma pergunta. Por exemplo, em vez de uma pergunta como “Você consegue resumir isto?”, use “Resuma as transcrições das chamadas telefônicas”.

  • Descreva o texto fornecido na instrução. Por exemplo, em vez de uma instrução como “resuma”, use “Resuma as transcrições da chamada de telefone”.

  • Descreva o caso de uso pretendido. Por exemplo, em vez de “encontrar a melhor avaliação”, use “encontrar a avaliação mais positiva e bem escrita do restaurante para destacar no site do restaurante”.

  • Considere dividir a instrução em várias etapas. Por exemplo, em vez de “Resuma os novos artigos”, use “Você receberá artigos de vários editores apresentando eventos de diferentes pontos de vista. Por favor, crie um resumo conciso e elaborada dos textos de origem sem perder nenhuma informação crucial.»

Exemplos

AI_AGG pode ser usado como uma função escalar simples em constantes de string. No exemplo a seguir, AI_AGG é usado para resumir as classificações de produtos, que são fornecidas como uma única string.

SELECT AI_AGG('[Excellent, Excellent, Great, Mediocre]',
              'Summarize the product ratings for a blog post targeting consumers');
Copy
Overall, the product has received overwhelmingly positive reviews, with the majority of users rating it as 'Excellent' or 'Great'. Only a small percentage of users had a mediocre experience with the product. This suggests that the product is well-liked by most consumers and is a great option for those looking for a reliable choice.

AI_AGG também pode ser usado em uma coluna de dados. No exemplo a seguir, as classificações de produto do exemplo acima são fornecidas como uma coluna em uma tabela usando uma expressão de tabela comum.

WITH reviews AS (
            SELECT 'The restaurant was excellent.' AS review
  UNION ALL SELECT 'Excellent! I loved the pizza!'
  UNION ALL SELECT 'It was great, but the service was meh.'
  UNION ALL SELECT 'Mediocre food and mediocre service'
)
SELECT AI_AGG(review, 'Summarize the restaurant reviews for potential consumers')
  FROM reviews;
Copy
Reviews for this restaurant are mixed. Some customers had a very positive experience, describing the restaurant as "excellent" and loving the pizza. However, others had a more neutral or negative experience, citing mediocre food and service.

AI_AGG também pode ser usado em combinação com GROUP BY. O exemplo a seguir resume as classificações de dois produtos (identificados pela coluna product_id) em uma tabela de exibições.

WITH reviews AS (
            SELECT 1 AS restaurant_id, 'The restaurant was excellent.' AS review
  UNION ALL SELECT 1, 'Excellent! I loved the pizza!'
  UNION ALL SELECT 1, 'It was great, but the service was meh.'
  UNION ALL SELECT 1, 'Mediocre food and mediocre service'
  UNION ALL SELECT 2, 'Terrible quality ingredients, I should have eaten at home.'
  UNION ALL SELECT 2, 'Bad restaurant, I would avoid this place.'
)
SELECT restaurant_id,
       AI_AGG(review, 'Summarize the restaurant reviews for potential consumers')
  FROM reviews
 GROUP BY 1;
Copy
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| RESTAURANT_ID | SUMMARIZED_REVIEW                                                                                                                                                                                                                                 |
|---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 1             | Reviews for this restaurant are mixed. Some customers had a very positive experience, describing the restaurant as "excellent" and loving the pizza. However, others had a more neutral or negative experience, citing mediocre food and service. |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 2             | Two reviewers had extremely negative experiences at this restaurant, citing poor quality ingredients and advising others to avoid it.                                                                                                             |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

A instrução pode ser usada para várias tarefas de agregação e para configurar o estilo e o tom da resposta. O exemplo a seguir usa uma instrução para encontrar a classificação mais positiva para cada produto e fornecer traduções para francês e polonês da classificação.

WITH reviews AS (
            SELECT 1 AS product_id, 'Excellent' AS review
  UNION ALL SELECT 1, 'Excellent'
  UNION ALL SELECT 1, 'Great'
  UNION ALL SELECT 1, 'Mediocre'
  UNION ALL SELECT 2, 'Terrible'
  UNION ALL SELECT 2, 'Bad'
  UNION ALL SELECT 2, 'Average'
)
SELECT product_id,
       AI_AGG(review, 'Identify the most positive rating and translate it into French and Polish, one word only') AS summarized_review
  FROM reviews
 GROUP BY 1;
Copy
+------------+--------------------+
| PRODUCT_ID | SUMMARIZED_REVIEW  |
|------------+--------------------+
| 1          | French: Excellent  |
|            | Polish: Doskonały  |
+------------+--------------------+
| 2          | French: Moyen      |
|            | Polish: Przeciętny |
+------------+--------------------+

Consulte também AI_SUMMARIZE_AGG.