このページでは、AlloyDB AI クエリエンジンで提供される演算子関数を使用して、SQL 演算子で自然言語を使用する方法について説明します。ai.if
、ai.if
による結合、ai.score
、ai.generate
演算子を使用して、自然言語と SQL クエリを組み合わせることができます。
このページの手順は、AlloyDB for PostgreSQL と生成 AI のコンセプトに詳しい方向けのものです。
AlloyDB は ai
スキーマを予約し、google_ml_integration
拡張機能をインストールするときにこのスキーマを作成しようとします。スキーマの作成に失敗した場合は、google_ml
スキーマの同じ名前の関数を使用します。
始める前に
- 自然言語で SQL 演算子を使用するためのアクセス権をリクエストし、有効化の確認が届くまで待ってから、このページの手順に沿って操作します。
クエリでフィルタと結合を使用する
自然言語で指定された条件が満たされているかどうかを評価するには、ai.if
/google_ml.if
演算子を使用します。この関数はブール値 true または false を返します。出力が明確に検出されなかった場合は NULL を返します。
次のサンプルクエリは、駐車スペースに言及しているレストランのレビューを見つける方法を示しています。
SELECT review AS talks_about_parking
FROM user_reviews
WHERE
ai.if(
prompt => 'the following review talks about parking at the restaurant. review: ' || review);
結合オペレーションを実行する
結合オペレーションを実行するには、結合で ai.if
/google_ml.if
演算子を使用します。次のサンプルクエリは、レストランのメニューの各メニュー アイテムに言及しているレビューの数を検索します。
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;
クエリ結果をスコアリングする
自然言語で指定されたセマンティック条件に基づいてクエリ内のアイテムのリストを並べ替えるには、ai.rank/google_ml.rank
演算子を使用します。
次のサンプルクエリは、最も好意的なレストランのレビューの上位 20 件を取得します。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;
自然言語で SQL 演算子のテキストを生成する
自然言語で指定されたプロンプトに基づいてテキストを生成する場合は、ai.generate
/google_ml.generate
関数を使用します。
次のクエリは、ai.generate
関数呼び出しで指定された条件に基づいて、各ユーザー レビューの概要を生成します。
SELECT
ai.generate(
prompt => 'Summarize the review in 20 words or less. Review: ' || review_text) AS review_summary
FROM user_reviews;