Fungsi yang dioptimalkan memungkinkan Anda menggunakan model proxy yang lebih kecil dan lebih cepat untuk memproses sebagian besar kueri Anda, lalu kembali ke LLM yang lebih besar hanya jika diperlukan. Pendekatan ini mengurangi biaya operasional dan meningkatkan respons kueri. Fungsi yang dioptimalkan meminimalkan penggunaan LLM untuk tugas klasifikasi atau pemfilteran baris demi baris, yang dapat ditangani dengan lebih baik oleh model proxy.
Fungsi AI AlloyDB 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 bagi kueri yang dioptimalkan. - Mengeksekusi kueri: saat Anda menggunakan pernyataan
EXECUTE, AlloyDB menggunakan model proxy terlatih untuk memproses kueri secara lokal. - Kembali ke LLM: jika akurasi model rendah, atau jika AlloyDB tidak dapat menemukan model, AlloyDB akan otomatis kembali menggunakan LLM.

Sebelum memulai
Sebelum Anda menggunakan fungsi yang dioptimalkan, lakukan hal berikut:
- Hubungkan ke database menggunakan psql atau
AlloyDB Studio sebagai pengguna
postgresatau sebagai pengguna yang memiliki akses ke tabel tempat data berada. Verifikasi bahwa ekstensi
google_ml_integrationdiinstal dan tersedia di versi 1.5.8 atau yang lebih baru.SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.8 (1 row)Konfigurasi AlloyDB agar dapat digunakan dengan Vertex AI. Untuk mengetahui informasi selengkapnya, lihat Mengintegrasikan database Anda dengan Vertex AI.
Pastikan tanda 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 penyematan yang memberikan input ke fungsi AI yang dioptimalkan
harus berjenis
REAL[]atauVECTOR. - Fungsi yang dioptimalkan hanya tersedia di region tempat model generatif Vertex AI tersedia. Untuk mengetahui daftar region yang tersedia, lihat Lokasi AI generatif.
- 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 model asinkron 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 pernyataanPREPAREkhusus untuk sesi saat ini, Anda harus menjalankan pernyataanEXECUTEdi 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 digunakan jika salah satu kondisi berikut terpenuhi:
- Kolom konten atau penyematan yang dirujuk dalam
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 melakukan fallback ke penggunaan LLM, dan AlloyDB akan menampilkan peringatan.
- Kolom konten atau penyematan yang dirujuk dalam
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.runtime_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. Mempersiapkan ulang kueri akan menggantikan model proxy yang ada dengan memulai permintaan pelatihan baru.
Batasan
Jika Anda mengubah kolom konten sumber, kolom sematan, atau perintah yang diberikan ke fungsi ai.if(), Anda harus mengeluarkan pernyataan PREPARE baru.
AlloyDB melatih fungsi yang dioptimalkan untuk memperkirakan perilaku kombinasi unik dari perintah dan data input.