Halaman ini menunjukkan cara menggunakan AlloyDB sebagai alat model bahasa besar (LLM) dan membuat penyematan vektor berdasarkan LLM.
Untuk mengetahui informasi selengkapnya tentang penggunaan model ML dengan AlloyDB Omni, lihat Mem-build aplikasi AI generatif.
AlloyDB memungkinkan Anda menggunakan LLM yang dihosting oleh Vertex AI untuk menerjemahkan string teks menjadi embedding, yang merupakan representasi model dari makna semantik teks tertentu sebagai vektor numerik. Untuk mengetahui informasi selengkapnya tentang dukungan Vertex AI untuk embedding teks, lihat Embedding teks.
Sebelum memulai
Agar AlloyDB dapat membuat penyematan, pastikan Anda memenuhi persyaratan berikut:
Pembatasan regional
Anda dapat membuat penyematan di wilayah tempat AI Generatif di Vertex AI tersedia. Untuk mengetahui daftar region, lihat Lokasi AI Generatif di Vertex AI .
Untuk AlloyDB, pastikan cluster AlloyDB dan model Vertex AI yang Anda kueri berada di region yang sama.
Ekstensi database yang diperlukan
Pastikan ekstensi
google_ml_integration
diinstal di database AlloyDB Anda.CREATE EXTENSION google_ml_integration;
Ekstensi ini disertakan dengan AlloyDB. Anda dapat menginstalnya di database mana pun di cluster.
Tetapkan flag database
google_ml_integration.enable_model_support
keoff
.
Menyiapkan akses model
Sebelum dapat membuat penyematan dari database AlloyDB, Anda harus mengonfigurasi AlloyDB agar berfungsi dengan model penyematan teks.
Untuk menggunakan model textembeddings-gecko
berbasis cloud, Anda perlu
mengintegrasikan database dengan
Vertex AI.
Memberikan akses kepada pengguna database untuk membuat penyematan
Berikan izin kepada pengguna database untuk menjalankan fungsi embedding
guna menjalankan prediksi:
Hubungkan klien
psql
ke instance utama cluster, seperti yang dijelaskan dalam Menghubungkan klienpsql
ke instance.Di command prompt psql, hubungkan ke database dan berikan izin:
\c DB_NAME GRANT EXECUTE ON FUNCTION embedding TO USER_NAME;
Ganti kode berikut:
DB_NAME: nama database tempat izin harus diberikan
USER_NAME: nama pengguna yang harus diberikan izin
Membuat embedding
AlloyDB menyediakan fungsi yang memungkinkan Anda menerjemahkan teks menjadi
penyematan vektor. Kemudian, Anda dapat menyimpan penyematan tersebut di database sebagai data vektor, dan secara opsional menggunakan fungsi pgvector
untuk mendasarkan kueri.
Untuk membuat penyematan menggunakan AlloyDB, gunakan fungsi embedding()
yang disediakan oleh ekstensi google_ml_integration
:
SELECT embedding( 'MODEL_IDVERSION_TAG', 'TEXT');
Ganti kode berikut:
MODEL_ID
: ID model yang akan dikueri.Jika Anda menggunakan Vertex AI Model Garden, tentukan
textembedding-gecko@003
sebagai ID model. Ini adalah model berbasis cloud yang dapat digunakan AlloDB untuk embedding teks. Untuk informasi selengkapnya, lihat Embedding teks.Opsional:
VERSION_TAG
: tag versi model yang akan dibuat kueri. Awali tag dengan@
.Jika Anda menggunakan salah satu model bahasa Inggris
textembedding-gecko
dengan Vertex AI, tentukan salah satu tag versi—misalnya,textembedding-gecko@003
, yang tercantum di Versi model.Google sangat menyarankan agar Anda selalu menentukan tag versi. Jika Anda tidak menentukan tag versi, AlloyDB akan selalu menggunakan versi model terbaru, yang dapat menyebabkan hasil yang tidak terduga.
TEXT
: teks yang akan diterjemahkan menjadi embedding vektor.
Contoh berikut menggunakan versi 003
model bahasa Inggris textembedding-gecko
untuk membuat penyematan
berdasarkan string literal yang diberikan:
SELECT embedding('textembedding-gecko@003', 'AlloyDB is a managed, cloud-hosted SQL database service.');
Menyimpan embedding
Embedding yang dihasilkan menggunakan ekstensi google_ml_integration
diimplementasikan sebagai array nilai real
.
Embed yang dihasilkan ini diteruskan sebagai input untuk fungsi ekstensi
pgvector
.
Untuk menyimpan nilai ini dalam tabel, tambahkan kolom real[]
:
ALTER TABLE TABLE ADD COLUMN EMBEDDING_COLUMN real[DIMENSIONS];
Setelah membuat kolom untuk menyimpan penyematan, Anda dapat mengisinya berdasarkan nilai yang sudah disimpan di kolom lain dalam tabel yang sama:
UPDATE TABLE SET EMBEDDING_COLUMN = embedding('MODEL_IDVERSION_TAG', SOURCE_TEXT_COLUMN);
Ganti kode berikut:
TABLE
: nama tabelEMBEDDING_COLUMN
: nama kolom penyematan
MODEL_ID
: ID model yang akan dikueri.Jika Anda menggunakan Model Garden Vertex AI, tentukan
textembedding-gecko@003
sebagai ID model. Ini adalah model berbasis cloud yang dapat digunakan AlloDB untuk embedding teks. Untuk informasi selengkapnya, lihat Embedding teks.Opsional:
VERSION_TAG
: tag versi model yang akan dibuat kueri. Awali tag dengan@
.Jika Anda menggunakan salah satu model bahasa Inggris
textembedding-gecko
dengan Vertex AI, tentukan salah satu tag versi—misalnya,textembedding-gecko@003
, yang tercantum di Versi model.Google sangat menyarankan agar Anda selalu menentukan tag versi. Jika Anda tidak menentukan tag versi, AlloyDB akan selalu menggunakan versi model terbaru, yang dapat menyebabkan hasil yang tidak terduga.
SOURCE_TEXT_COLUMN
: nama kolom yang menyimpan teks untuk diterjemahkan menjadi embedding
Melakukan penelusuran kemiripan
Anda juga dapat menggunakan fungsi embedding()
untuk menerjemahkan teks menjadi vektor. Anda menerapkan vektor ke
operator tetangga terdekat pgvector
, <->
, untuk menemukan baris database dengan
embedding yang paling mirip secara semantik.
Karena embedding()
menampilkan array real
, Anda harus secara eksplisit mentransmisikan
panggilan embedding()
ke vector
untuk menggunakan nilai ini dengan operator
pgvector
.
CREATE EXTENSION google_ml_integration;
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<-> embedding('MODEL_IDVERSION_TAG', 'TEXT')
LIMIT ROW_COUNT
Menggunakan tag versi model untuk menghindari error
Google sangat menyarankan agar Anda selalu menggunakan versi stabil dari model penyematan yang dipilih. Untuk sebagian besar model, ini berarti menyetel tag versi secara eksplisit.
Memanggil fungsi embedding()
tanpa menentukan tag versi
model secara sintaksis valid, tetapi juga rentan error.
Jika Anda menghapus tag versi saat menggunakan model di Vertex AI Model Garden, Vertex AI akan menggunakan versi terbaru model. Versi ini mungkin bukan versi stabil terbaru. Untuk mengetahui informasi selengkapnya tentang versi model Vertex AI yang tersedia, lihat Versi model.
Versi model Vertex AI tertentu selalu menampilkan respons
embedding()
yang sama untuk input teks tertentu. Jika Anda tidak menentukan versi
model dalam panggilan ke embedding()
, versi model baru
yang dipublikasikan dapat tiba-tiba mengubah vektor yang ditampilkan untuk input tertentu,
sehingga menyebabkan error atau perilaku tidak terduga lainnya di aplikasi Anda.
Untuk menghindari masalah ini, selalu tentukan versi model.
Memecahkan masalah
ERROR: Model tidak ditemukan untuk model_id
Pesan error
Saat Anda mencoba membuat penyematan menggunakan fungsi embedding()
atau google_ml.embedding()
, error berikut akan terjadi:
ERROR: 'Model not found for model_id:
Perbaikan yang direkomendasikan
Upgrade ekstensi
google_ml_integration
dan coba buat penyematan lagi.ALTER EXTENSION google_ml_integration UPDATE;
Anda juga dapat menghapus ekstensi, lalu membuatnya lagi.
DROP extension google_ml_integration; CREATE EXTENSION google_ml_integration;
Jika Anda membuat penyematan menggunakan fungsi
google_ml.embedding()
, pastikan model terdaftar dan Anda menggunakanmodel_id
yang benar dalam kueri.