Usar linguagem natural em operadores SQL

Esta página descreve como usar a linguagem natural em operadores SQL usando as funções de operador fornecidas pelo mecanismo de consulta de IA do AlloyDB. É possível usar os operadores ai.if, mesclar com ai.if, ai.score e ai.generate para combinar a linguagem natural com consultas SQL.

Para usar as instruções desta página, você precisa entender o AlloyDB para PostgreSQL e conhecer os conceitos de IA generativa.

O AlloyDB reserva o esquema ai e tenta criá-lo quando você instala a extensão google_ml_integration. Se a criação do esquema falhar, use as funções com o mesmo nome no esquema google_ml.

Antes de começar

Usar filtros e mesclagens nas consultas

Para avaliar se uma condição declarada em linguagem natural é atendida, use o operador ai.if/google_ml.if . A função retorna um valor booleano verdadeiro ou falso e retorna NULL se a saída não for detectada claramente.

A consulta de exemplo a seguir mostra como encontrar as avaliações de restaurantes que mencionam vagas de estacionamento.

    SELECT review AS talks_about_parking
    FROM user_reviews
    WHERE
      ai.if(
        prompt => 'the following review talks about parking at the restaurant. review: ' || review);

Realizar uma operação de mesclagem

Para realizar uma operação de mesclagem, use o operador ai.if/google_ml.if com a mesclagem. A consulta de exemplo a seguir encontra o número de avaliações que mencionam cada item do cardápio do restaurante.

    SELECT item_name, COUNT(*)
    FROM menu_items JOIN user_reviews
      ON ai.if(
        prompt => 'Does the following user review talk about the menu item mentioned ? review: ' || user_reviews.review_text || ' menu item: ' || item_name)
    GROUP BY item_name;

Pontuar os resultados da consulta

Para ordenar uma lista de itens em uma consulta com base em um critério semântico declarado em linguagem natural, use o operador ai.rank/google_ml.rank

A consulta de exemplo a seguir recebe as 20 avaliações mais positivas do restaurante. Ela ordena a resposta com base nos critérios definidos na chamada de função ai.rank/google_ml.rank.

    SELECT review AS top20
    FROM user_reviews
    ORDER BY ai.rank('Score the following review according to these rules: score of 8 to 10 if the review says the food is excellent, 4 to 7 if the review says the food is and 1 to 3 if the review says the food is not good. Here is the review: ' || review)
    LIMIT 20;

Gerar texto para operadores SQL com linguagem natural

Para gerar texto com base em comandos especificados em linguagem natural, use a função ai.generate/google_ml.generate.

A consulta a seguir gera um resumo de cada avaliação do usuário com base nos critérios definidos na chamada de função ai.generate.

    SELECT
      ai.generate(
        prompt => 'Summarize the review in 20 words or less. Review: ' || review_text) AS review_summary
    FROM user_reviews;

A seguir