Halaman ini menjelaskan cara membuat kueri menggunakan operator SQL yang didukung AI yang disediakan oleh fungsi AI. Anda dapat menggunakan ai.if untuk filter,
operator ai.rank, dan ai.generate untuk menggabungkan bahasa alami dengan kueri SQL.
Untuk menggunakan petunjuk di halaman ini, Anda harus memahami AlloyDB dan memahami konsep AI generatif.
AlloyDB AI mencadangkan dan membuat skema
ai.
Sebelum memulai
Sebelum Anda menggunakan bahasa alami di operator SQL, lakukan hal berikut:
- Pastikan ekstensi
google_ml_integrationtelah diinstal. - Verifikasi bahwa tanda
google_ml_integration.enable_model_supportditetapkan keon. - Berintegrasi dengan Vertex AI.
- Gunakan model Gemini yang didukung di wilayah Anda.
Berintegrasi dengan Vertex AI dan menginstal ekstensi
- Konfigurasi akses pengguna ke model Vertex AI.
- Pastikan versi terbaru
google_ml_integrationsudah diinstal.Untuk memeriksa versi yang diinstal, jalankan perintah berikut:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.2 (1 row)
Jika ekstensi tidak diinstal atau jika versi yang diinstal lebih lama dari 1.5.2, update ekstensi.
CREATE EXTENSION IF NOT EXISTS google_ml_integration; ALTER EXTENSION google_ml_integration UPDATE;
Jika Anda mengalami masalah saat menjalankan perintah sebelumnya, atau jika ekstensi tidak diupdate ke versi 1.5.2 setelah Anda menjalankan perintah sebelumnya, hubungi Google Cloud dukungan.
Untuk menggunakan fungsi mesin kueri AI AlloyDB, tetapkan flag
google_ml_integration.enable_ai_query_engineketrue.SQL
- Mengaktifkan mesin kueri AI untuk sesi saat ini.
SET google_ml_integration.enable_ai_query_engine = true;
- Mengaktifkan fitur untuk database tertentu di seluruh sesi.
ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_ai_query_engine = 'on';
- Aktifkan mesin kueri AI untuk pengguna tertentu di seluruh sesi dan database.
ALTER ROLE postgres SET google_ml_integration.enable_ai_query_engine = 'on';
Konsol
Untuk mengubah nilai flag
google_ml_integration.enable_ai_query_engine, ikuti langkah-langkah di Mengonfigurasi flag database instance.gcloud
Untuk menggunakan gcloud CLI, Anda dapat menginstal dan melakukan inisialisasi Google Cloud CLI, atau Anda dapat menggunakan Cloud Shell.
Anda dapat mengubah nilai tanda
google_ml_integration.enable_ai_query_engine. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi flag database instance.gcloud alloydb instances update INSTANCE_ID \ --database-flags google_ml_integration.enable_ai_query_engine=on \ --region=REGION_ID \ --cluster=CLUSTER_ID \ --project=PROJECT_ID
- Mengaktifkan mesin kueri AI untuk sesi saat ini.
Menggunakan model Gemini yang didukung di wilayah Anda
Jika cluster AlloyDB for PostgreSQL Anda berada di region yang tidak mendukung gemini-2.0-flash, Anda dapat menggunakan salah satu model Gemini lain yang tersedia di region Anda menggunakan model_id parameter.
Atau, Anda dapat mendaftarkan endpoint model Gemini dan memberikan ID model tersebut ke operator AI. Untuk mengetahui informasi selengkapnya, lihat Mendaftarkan dan memanggil model AI jarak jauh menggunakan pengelolaan endpoint model.
Contoh berikut menunjukkan cara mendaftarkan endpoint Gemini lainnya. Dalam contoh ini, endpoint Gemini kedua ini adalah
endpoint global untuk gemini-2.0-flash. Anda dapat menggunakan model terdaftar ini dengan operator AI dengan meneruskan model_id =>gemini-2.0-flash-global` sebagai argumen tambahan.
CALL
google_ml.create_model(
model_id => 'gemini-2.0-flash-global',
model_type => 'llm',
model_provider => 'google',
model_qualified_name => 'gemini-2.0-flash',
model_request_url => 'https://aiplatform.googleapis.com/v1/projects/<project_id>/locations/global/publishers/google/models/gemini-2.0-flash:generateContent',
model_auth_type => 'alloydb_service_agent_iam'
);
Menggunakan filter dalam kueri
AlloyDB AI menawarkan beberapa fungsi SQL berteknologi AI yang memungkinkan Anda menggunakan pemrosesan bahasa alami dan LLM secara langsung dalam kueri database, termasuk operator ai.if dan ai.rank.
Filter
Untuk mengevaluasi apakah suatu kondisi yang dinyatakan dalam bahasa alami terpenuhi, gunakan
operator ai.if/google_ml.if. Fungsi ini menampilkan nilai boolean true atau false, dan menampilkan false jika output tidak terdeteksi dengan jelas.
- Function signature
FUNCTION ai.if(prompt TEXT, model_id VARCHAR(100) DEFAULT NULL) RETURNS bool
Contoh berikut menunjukkan penggunaan operator ai.if sebagai filter untuk menemukan restoran dengan lebih dari 500 ulasan positif yang berlokasi di kota dengan populasi lebih dari 100.000. Contoh ini menggunakan restaurant_reviews dan
berisi data seperti ulasan dan lokasi kota. Operator ai.if membantu Anda memahami sentimen ulasan dan menggabungkan lokasi dari database dengan pengetahuan umum Gemini tentang populasi di lokasi tersebut.
SELECT r.name, r.location_city
FROM restaurant_reviews r
WHERE
AI.IF(r.location_city || ' has a population OF more than 100,000 AND the following is a positive review; Review: ' || r.review)
GROUP BY r.name, r.location_city
HAVING COUNT(*) > 500;
Berikut adalah contoh yang sama menggunakan model yang Anda daftarkan di Menggunakan model Gemini yang didukung di wilayah Anda.
SELECT r.name, r.location_city
FROM restaurant_reviews r
WHERE
AI.IF(r.location_city || ' has a population of more than 100,000 AND the following is a positive review; Review: ' || r.review, model_id => 'gemini-2.0-flash-global')
GROUP BY r.name, r.location_city
HAVING COUNT(*) > 500;
Melakukan gabungan pada kueri yang menggunakan operator if
Untuk melakukan operasi gabungan, gunakan operator ai.if/google_ml.if dengan gabungan. Contoh kueri berikut menemukan jumlah ulasan yang menyebutkan setiap item menu dari menu restoran.
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;
Pembuatan dan peringkasan teks
Fungsi ai.generate menghasilkan teks dengan menggabungkan data yang diberikan dengan perintah pengguna.
-- Function Signature
FUNCTION ai.generate(prompt TEXT, model_id VARCHAR(100) DEFAULT NULL) RETURNS TEXT
Misalnya, Anda dapat menggunakan kueri berikut untuk membuat ringkasan singkat dari setiap ulasan pengguna.
SELECT
ai.generate(
prompt => 'Summarize the review in 20 words or less. Review: ' || review) AS review_summary
FROM user_reviews
Memberi skor pada hasil kueri Anda
Jika Anda perlu mengurutkan hasil kueri menggunakan petunjuk bahasa alami kustom,
gunakan operator ai.rank. Fungsi ini memungkinkan Anda memberikan perintah yang menjelaskan kriteria peringkat dan menampilkan skor untuk setiap item.
-- Function signature
FUNCTION ai.rank(prompt TEXT, model_id VARCHAR(100) DEFAULT NULL) RETURNS real
Misalnya, kueri berikut mendapatkan 20 ulasan restoran paling positif, menggunakan skor dari LLM.
SELECT review AS top20
FROM user_reviews
ORDER BY ai.rank(
'Score the following review according to these rules:
(1) Score OF 8 to 10 IF the review says the food IS excellent.
(2) 4 to 7 IF the review says the food is ok.
(3) 1 to 3 IF the review says the food is not good. Here is the review:' || review) DESC
LIMIT 20;