Dokumen ini menjelaskan cara melakukan penelusuran kesamaan vektor di AlloyDB untuk PostgreSQL menggunakan ekstensi pgvector
. Penelusuran kesamaan vektor, yang juga dikenal sebagai penelusuran tetangga terdekat, memungkinkan Anda menemukan titik data dalam data yang paling mirip dengan vektor kueri tertentu.
Anda dapat membuat kueri database AlloyDB untuk vektor yang mirip secara semantik setelah
menyimpan dan mengindeks embedding. Gunakan fitur kueri pgvector
untuk menemukan tetangga terdekat untuk vektor penyematan.
Untuk informasi selengkapnya tentang cara menyimpan penyematan vektor dan membuat indeks, lihat artikel Menyimpan penyematan vektor dan Membuat indeks.
Menjalankan penelusuran kemiripan dengan input vektor
Untuk menjalankan penelusuran kemiripan, tentukan tabel, kolom penyematan,
fungsi jarak, penyematan target, dan jumlah baris yang akan ditampilkan. Anda juga dapat menggunakan fungsi embedding()
untuk menerjemahkan teks menjadi vektor, lalu membandingkan vektor dengan penyematan yang disimpan menggunakan operator pgvector
.
Untuk menemukan tetangga semantik terdekat untuk vektor penyematan, Anda dapat menjalankan contoh kueri berikut, dengan menetapkan fungsi jarak yang sama dengan yang digunakan selama pembuatan indeks.
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN DISTANCE_FUNCTION_QUERY ['EMBEDDING']
LIMIT ROW_COUNT
Ganti kode berikut:
TABLE
: tabel yang berisi penyematan untuk membandingkan teks.EMBEDDING_COLUMN
: kolom yang berisi penyematan yang disimpan.DISTANCE_FUNCTION_QUERY
: fungsi jarak yang akan digunakan dengan kueri ini. Pilih salah satu dari opsi berikut berdasarkan fungsi jarak yang digunakan saat membuat indeks:Jarak L2:
<->
Produk dalam:
<#>
Jarak kosinus:
<=>
EMBEDDING
: vektor penyematan yang ingin Anda temukan tetangga semantik terdekatnya.ROW_COUNT
: jumlah baris yang akan ditampilkan.Tentukan
1
jika Anda hanya menginginkan satu kecocokan terbaik.
Untuk informasi selengkapnya tentang contoh kueri lainnya, lihat Membuat kueri.
Menjalankan penelusuran kemiripan menggunakan pgvector
dengan input teks
Anda juga dapat menggunakan fungsi embedding()
untuk menerjemahkan teks menjadi vektor. Ekstensi PostgreSQL pgvector
bawaan
disesuaikan untuk AlloyDB, dan disebut sebagai vector
. Anda menerapkan vektor ke salah satu operator tetangga terdekat pgvector
, misalnya <->
untuk jarak L2, 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 IF NOT EXISTS google_ml_integration VERSION '1.2';
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<-> embedding('MODEL_IDVERSION_TAG', 'TEXT')
LIMIT ROW_COUNT
Ganti kode berikut:
MODEL_ID
: ID model yang akan dikueri.Jika Anda menggunakan Model Garden Vertex AI, tentukan
text-embedding-005
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
text-embedding-005
dengan Vertex AI, tentukan salah satu tag versi—misalnya,text-embedding-005
, yang tercantum di Versi model.Google sangat merekomendasikan agar Anda selalu menentukan tag versi. Jika Anda tidak menentukan tag versi, AlloyDB akan menggunakan versi model terbaru, yang dapat menyebabkan hasil yang tidak terduga.
TEXT
: teks yang akan diterjemahkan menjadi embedding vektor.
Langkah berikutnya
- Tutorial melakukan penelusuran vektor
- Menyesuaikan performa kueri vektor
- Metrik indeks vektor
- Pelajari cara membuat asisten belanja pintar dengan AlloyDB, pgvector, dan pengelolaan endpoint model.