Embedding teks adalah representasi vektor dari data teks, dan digunakan dengan berbagai cara untuk menemukan item yang serupa. Anda berinteraksi dengan embedding teks setiap kali menyelesaikan penelusuran Google atau melihat rekomendasi saat berbelanja online. Saat membuat embedding teks, Anda akan mendapatkan representasi vektor teks alami sebagai array bilangan floating point. Artinya, semua teks input Anda diberikan representasi numerik. Dengan membandingkan jarak numerik antara representasi vektor dari dua bagian teks, aplikasi dapat menentukan kesamaan antara teks atau objek yang diwakili oleh teks.
Dengan text-embeddings API Vertex AI, Anda dapat membuat
embedding teks dengan AI Generatif. Dengan menggunakan
tutorial ini, Anda dapat membuat embedding teks untuk data yang disimpan dalam
model embedding Spanner dan Vertex AI seperti
model textembedding-gecko
.
Untuk mempelajari lebih lanjut penyematan, lihat Mendapatkan embedding teks.
Tujuan
Dalam tutorial ini, Anda akan mempelajari cara:
- Daftarkan model
textembedding-gecko
Vertex AI dalam skema Spanner menggunakan pernyataan DDL. - Mereferensikan model terdaftar menggunakan kueri SQL untuk membuat penyematan dari data yang disimpan di Spanner.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:
- Spanner
- Vertex AI
Untuk mengetahui informasi selengkapnya tentang biaya Spanner, lihat halaman Harga Spanner.
Untuk mengetahui informasi selengkapnya tentang biaya Vertex AI, lihat halaman harga Vertex AI.
Membuat dan menyimpan embedding teks
Bergantung pada model yang Anda gunakan, pembuatan penyematan mungkin memerlukan waktu beberapa saat. Untuk beban kerja yang lebih sensitif terhadap performa, praktik terbaiknya adalah menghindari pembuatan penyematan dalam transaksi baca-tulis. Sebagai gantinya, buat penyematan dalam transaksi hanya baca menggunakan contoh SQL berikut.
GoogleSQL
Mendaftarkan model penyematan teks di Spanner
Di GoogleSQL, Anda harus mendaftarkan model sebelum menggunakannya dengan
fungsi ML.PREDICT
. Untuk mendaftarkan model textembedding-gecko
di database Spanner, jalankan pernyataan DDL berikut:
CREATE MODEL MODEL_NAME
INPUT(content STRING(MAX))
OUTPUT(
embeddings
STRUCT<
statistics STRUCT<truncated BOOL, token_count FLOAT64>,
values ARRAY<FLOAT64>>
)
REMOTE OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko$MODEL_VERSION'
);
Ganti kode berikut:
MODEL_NAME
: nama model penyematanPROJECT
: project yang menghosting endpoint Vertex AILOCATION
: lokasi endpoint Vertex AIMODEL_VERSION
: versi model penyematantextembedding-gecko
Spanner memberikan izin yang sesuai secara otomatis. Jika tidak, tinjau kontrol akses endpoint model.
Penemuan dan validasi skema tidak tersedia untuk model AI
Generatif. Anda harus memberikan klausa INPUT
dan OUTPUT
yang cocok
dengan skema model. Untuk mengetahui skema lengkap model Gecko, lihat
Mendapatkan embedding teks.
Membuat embedding teks
Untuk membuat penyematan, teruskan potongan teks langsung ke
fungsi ML.PREDICT
menggunakan SQL berikut:
SELECT embeddings.values
FROM ML.PREDICT(
MODEL MODEL_NAME,
(SELECT "A product description" as content)
);
Untuk membuat penyematan data yang disimpan dalam tabel, gunakan SQL berikut:
SELECT id, embeddings.values
FROM ML.PREDICT(
MODEL MODEL_NAME,
(SELECT id, description as content FROM Products)
);
Menyimpan penyematan teks
Setelah membuat penyematan dalam transaksi hanya baca, simpan di Spanner agar dapat dikelola dengan data operasional Anda. Untuk menyimpan penyematan, gunakan transaksi baca-tulis.
Untuk beban kerja yang kurang sensitif terhadap performa, Anda dapat membuat dan menyisipkan penyematan dengan SQL berikut dalam transaksi baca-tulis:
CREATE TABLE Products(
id INT64 NOT NULL,
description STRING(MAX),
embeddings ARRAY<FLOAT32>,
) PRIMARY KEY(id);
INSERT INTO Products (id, description, embeddings)
SELECT @Id, @Description, embeddings.values
FROM ML.PREDICT(
MODEL MODEL_NAME,
(SELECT @Description as content)
);
PostgreSQL
Membuat embedding teks
Untuk membuat penyematan, teruskan potongan teks langsung ke
fungsi spanner.ML_PREDICT_ROW
menggunakan SQL berikut:
SELECT
spanner.ML_PREDICT_ROW(
'projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko$MODEL_VERSION',
'{"instances": [{"content": "A product description"}]}'::jsonb
) ->'predictions'->0->'embeddings'->'values';
Ganti kode berikut:
PROJECT
: project yang menghosting endpoint Vertex AILOCATION
: lokasi endpoint Vertex AIMODEL_VERSION
: versi model penyematantextembedding-gecko
Untuk membuat penyematan data yang disimpan dalam tabel, gunakan SQL berikut:
SELECT id, spanner.ML_PREDICT_ROW(
'projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko$MODEL_VERSION',
JSONB_BUILD_OBJECT('instances', JSONB_BUILD_ARRAY(JSONB_BUILD_OBJECT('content', description))))
) -> `predictions`->0->`embeddings`->`values``
FROM Products;
Ganti kode berikut:
PROJECT
: project yang menghosting endpoint Vertex AILOCATION
: lokasi endpoint Vertex AIMODEL_VERSION
: versi model penyematantextembedding-gecko
Menyimpan penyematan teks
Setelah membuat penyematan dalam transaksi hanya baca, simpan di Spanner agar dapat dikelola dengan data operasional Anda. Untuk menyimpan penyematan, gunakan transaksi baca-tulis.
Untuk beban kerja yang kurang sensitif terhadap performa, Anda dapat membuat dan menyisipkan penyematan dengan SQL berikut dalam transaksi baca-tulis:
CREATE TABLE Products (
id INT8 NOT NULL,
description TEXT,
embeddings REAL[],
PRIMARY KEY(id)
);
INSERT INTO Products (id, description, embeddings)
SELECT @Id, @Description, spanner.FLOAT32_ARRAY(spanner.ML_PREDICT_ROW(
'projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko$MODEL_VERSION',
JSONB_BUILD_OBJECT('instances', JSONB_BUILD_ARRAY(JSONB_BUILD_OBJECT('content', @Description)))
) -> 'predictions'->0->'embeddings'->'values'
));
Ganti kode berikut:
PROJECT
: project yang menghosting endpoint Vertex AILOCATION
: lokasi endpoint Vertex AIMODEL_VERSION
: versi model penyematantextembedding-gecko
Memperbarui embedding teks
Untuk memperbarui penyematan atau menyerap data secara real time, gunakan pernyataan UPDATE
(GoogleSQL
dan PostgreSQL).
Untuk memperbarui tabel Products
dalam contoh sebelumnya, gunakan SQL berikut:
GoogleSQL
UPDATE Products
SET
description = @description,
embeddings = (SELECT embeddings.values
FROM ML.PREDICT(MODEL MODEL_NAME, (SELECT @description as content))
)
WHERE id = @id;
Ganti kode berikut:
MODEL_NAME
: nama model penyematan
PostgreSQL
UPDATE
Products
SET
description = $1,
embeddings = spanner.FLOAT32_ARRAY(
spanner.ML_PREDICT_ROW(
'projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko$MODEL_VERSION',
JSONB_BUILD_OBJECT('instances', JSONB_BUILD_ARRAY(JSONB_BUILD_OBJECT('content', $1)))
) -> 'predictions'->0->'embeddings'->'values')
WHERE
id = $2;
Ganti kode berikut:
PROJECT
: project yang menghosting endpoint Vertex AILOCATION
: lokasi endpoint Vertex AIMODEL_VERSION
: versi model penyematantextembedding-gecko
Langkah selanjutnya
- Pelajari cara menggunakan Vertex AI Vector Search untuk menelusuri item yang memiliki kemiripan semantik.
- Pelajari machine learning dan penyematan lebih lanjut di kursus singkat tentang penyematan.