Fungsi yang dioptimalkan di AlloyDB untuk PostgreSQL memungkinkan Anda menggunakan model proxy yang lebih kecil dan lebih cepat untuk memproses sebagian besar kueri SQL yang menggunakan fungsi AI, dan hanya beralih ke model bahasa besar (LLM) yang lebih besar jika diperlukan. Pendekatan ini mengurangi biaya operasional dan meningkatkan responsivitas kueri dengan meminimalkan panggilan LLM jarak jauh untuk tugas klasifikasi atau pemfilteran baris demi baris.
Fungsi AlloyDB AI seperti ai.if() dapat memiliki latensi tinggi karena panggilan jarak jauh ke model bahasa besar (LLM). Fungsi yang dioptimalkan mengatasi
masalah latensi ini dengan menggunakan model proxy yang lebih kecil dan dilatih secara lokal untuk memproses
kueri Anda. Model ini dilatih pada sampel data Anda, menggunakan output LLM sebagai sumber kebenaran.
Pemeriksaan akurasi dilakukan saat runtime pada sampel baris menggunakan LLM. Untuk melakukan pemeriksaan ini, AlloyDB menggunakan LLM untuk membuat label bagi baris sampel dan membandingkannya dengan prediksi model proxy untuk memverifikasi akurasi. Jika pemeriksaan akurasi gagal, kueri akan kembali menggunakan LLM.
Saat Anda menggunakan fungsi yang dioptimalkan, AlloyDB akan melakukan hal berikut:
- Melatih model proxy: AlloyDB melatih model proxy ringan pada sampel data Anda. Hal ini terjadi di latar belakang saat Anda menggunakan
pernyataan
PREPAREdengan fungsiai.if()untuk melatih model untuk kueri yang dioptimalkan. - Menjalankan kueri: saat Anda menggunakan pernyataan
EXECUTE, AlloyDB menggunakan model proxy terlatih untuk memproses kueri secara lokal. - Menggunakan LLM sebagai pengganti: jika akurasi model rendah, atau jika AlloyDB tidak dapat menemukan model, AlloyDB akan otomatis menggunakan LLM sebagai pengganti.

Sebelum memulai
Sebelum Anda menggunakan fungsi yang dioptimalkan, lakukan hal berikut:
- Hubungkan ke database Anda menggunakan psql atau
AlloyDB Studio sebagai pengguna
postgresatau sebagai pengguna yang memiliki akses ke tabel tempat data berada. Pastikan ekstensi
google_ml_integrationtelah diinstal dan tersedia di versi 1.5.8 atau yang lebih tinggi.SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.8 (1 row)Mengonfigurasi AlloyDB agar berfungsi dengan Gemini Enterprise Agent Platform. Untuk mengetahui informasi selengkapnya, lihat Mengintegrasikan database Anda dengan Agent Platform.
Pastikan flag database berikut diaktifkan. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi flag database instance.
google_ml_integration.enable_model_supportgoogle_ml_integration.enable_ai_query_enginegoogle_ml_integration.enable_cost_optimized_ai_functions
Buat embedding untuk tabel yang ingin Anda kueri. Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola embedding otomatis untuk tabel.
Pertimbangkan hal berikut:
- Kolom data sumber harus berjenis
TEXTatauVARCHAR. - Kolom embedding yang memberikan input ke fungsi AI yang dioptimalkan
harus berjenis
REAL[]atauVECTOR. - Fungsi yang dioptimalkan hanya tersedia di region tempat model generatif Agent Platform tersedia. Untuk mengetahui daftar region yang tersedia, lihat Deployment dan endpoint.
- Kolom data sumber harus berjenis
Menggunakan fungsi yang dioptimalkan
Untuk menggunakan fungsi yang dioptimalkan, gunakan pernyataan PREPARE dan EXECUTE
dengan fungsi ai.if(). Berikut adalah contoh cara menggunakan fungsi yang dioptimalkan:
Buat tabel
restaurant_reviews. Kolomreviewyang menyimpan data sumber berjenisTEXT, dan kolomreview_embeddingyang digunakan untuk kueri berjenisVECTOR(768).CREATE TABLE restaurant_reviews ( id SERIAL, name VARCHAR(64), city VARCHAR(64), review TEXT, review_embedding VECTOR(768) );Gunakan pernyataan
PREPAREdengan fungsiai.if()untuk menunjukkan bahwa kueri harus menggunakan fungsi yang dioptimalkan. Pernyataan ini memicu pelatihan asinkron model di latar belakang.Model hanya dilatih dalam kondisi berikut:
- Ada tepat satu fungsi
ai.if()dalam kueri. ai.if()tidak berada di dalam subkueri.
PREPARE positive_reviews_query AS SELECT r.name, r.city FROM restaurant_reviews r WHERE ai.if('Is the following a positive review? Review: ' || r.review, r.review_embedding) GROUP BY r.name, r.city HAVING COUNT(*) > 500;- Ada tepat satu fungsi
Jalankan kueri menggunakan pernyataan
EXECUTE. Karena pernyataanPREPAREbersifat spesifik untuk sesi saat ini, Anda harus menjalankan pernyataanEXECUTEpada koneksi yang sama:EXECUTE positive_reviews_query;conn2=> SELECT r.name, r.city FROM restaurant_reviews r WHERE ai.if('Is the following a positive review? Review: ' || r.review, r.review_embedding) GROUP BY r.name, r.city HAVING COUNT(*) > 500;Model proxy terlatih tidak akan digunakan jika salah satu kondisi berikut terpenuhi:
- Kolom konten atau embedding yang direferensikan di
ai.if()berubah. Kedua kolom harus berada dalam tabel yang sama. - Perintah yang diberikan ke kolom konten berubah.
- Struktur kueri berubah, sehingga menghasilkan
query_idyang berbeda. - Kueri gagal memenuhi nilai minimum pemeriksaan akurasi di awal kueri.
Dalam kasus ini, kueri akan beralih kembali menggunakan LLM, dan AlloyDB akan menampilkan peringatan.
- Kolom konten atau embedding yang direferensikan di
Opsional. Untuk menonaktifkan pemeriksaan validasi akurasi untuk seluruh lingkungan database, yang diperlukan karena pemeriksaan akurasi juga dilakukan selama pelatihan model, jalankan perintah berikut.
ALTER DATABASE DATABASE_NAME SET google_ml_integration.proxy_models_enable_accuracy_check = off;Ganti
DATABASE_NAMEdengan nama database Anda.
Melatih ulang model proxy
Jika data tabel pokok Anda berubah secara signifikan, Anda dapat melatih ulang model proxy dengan menjalankan pernyataan PREPARE lagi. Menyiapkan ulang kueri akan menggantikan model proxy yang ada dengan memulai permintaan pelatihan baru.
Batasan
Jika Anda mengubah kolom konten sumber, kolom embedding, atau perintah yang diberikan ke fungsi ai.if(), Anda harus mengeluarkan pernyataan PREPARE baru.
AlloyDB melatih fungsi yang dioptimalkan untuk memperkirakan
perilaku kombinasi unik perintah dan data input.