Utiliser le langage naturel dans les opérateurs SQL

Cette page explique comment utiliser le langage naturel dans les opérateurs SQL à l'aide des fonctions d'opérateur fournies par le moteur de requêtes d'IA AlloyDB. Vous pouvez utiliser les opérateurs ai.if, Join with ai.if, ai.score et ai.generate pour combiner le langage naturel avec des requêtes SQL.

Pour suivre les instructions de cette page, vous devez connaître AlloyDB pour PostgreSQL et les concepts d'IA générative.

AlloyDB réserve le schéma ai et tente de le créer lorsque vous installez l'extension google_ml_integration. Si la création du schéma échoue, utilisez les fonctions du même nom dans le schéma google_ml.

Avant de commencer

Utiliser des filtres et des jointures dans vos requêtes

Pour évaluer si une condition exprimée en langage naturel est remplie, utilisez l'opérateur ai.if/google_ml.if . La fonction renvoie une valeur booléenne "true" ou "false", et renvoie NULL si la sortie n'est pas clairement détectée.

L'exemple de requête suivant montre comment trouver les avis sur les restaurants qui mentionnent un parking.

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

Effectuer une opération de jointure

Pour effectuer une opération de jointure, utilisez l'opérateur ai.if/google_ml.if avec la jointure. L'exemple de requête suivant permet de trouver le nombre d'avis qui mentionnent chaque élément du menu du restaurant.

    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;

Évaluer les résultats de vos requêtes

Pour trier une liste d'éléments dans une requête en fonction d'un critère sémantique exprimé en langage naturel, utilisez l'opérateur ai.rank/google_ml.rank.

L'exemple de requête suivant permet d'obtenir les 20 commentaires les plus positifs sur un restaurant. Il trie la réponse en fonction des critères définis dans l'appel de fonction 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;

Générer du texte pour les opérateurs SQL avec le langage naturel

Pour générer du texte à partir d'invites spécifiées en langage naturel, utilisez la fonction ai.generate/google_ml.generate.

La requête suivante génère un résumé de chaque avis utilisateur en fonction des critères indiqués dans l'appel de fonction ai.generate.

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

Étape suivante