Dokumen ini menjelaskan cara melakukan penelusuran kesamaan vektor di AlloyDB untuk PostgreSQL menggunakan ekstensi pgvector
. Penelusuran kesamaan vektor, 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 secara semantik mirip setelah menyimpan dan mengindeks embedding. Gunakan fitur kueri pgvector
untuk menemukan
tetangga terdekat untuk vektor embedding.
Untuk mengetahui informasi selengkapnya tentang cara menyimpan embedding vektor dan membuat indeks, lihat Menyimpan embedding vektor dan Membuat indeks.
Menjalankan penelusuran kemiripan dengan input vektor
Untuk menjalankan penelusuran kemiripan, tentukan tabel, kolom sematan,
fungsi jarak, sematan target, dan jumlah baris yang akan ditampilkan. Anda juga dapat menggunakan fungsi embedding()
untuk menerjemahkan teks ke dalam vektor, lalu membandingkan vektor tersebut dengan embedding yang disimpan menggunakan operator pgvector
.
Untuk menemukan tetangga semantik terdekat untuk vektor embedding, Anda dapat menjalankan contoh kueri berikut, dengan menetapkan fungsi jarak yang sama dengan yang Anda gunakan selama pembuatan indeks.
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN DISTANCE_FUNCTION_QUERY ['EMBEDDING']
LIMIT ROW_COUNT
Ganti kode berikut:
TABLE
: tabel yang berisi embedding untuk membandingkan teks.EMBEDDING_COLUMN
: kolom yang berisi embedding yang disimpan.DISTANCE_FUNCTION_QUERY
: fungsi jarak yang akan digunakan dengan kueri ini. Pilih salah satu opsi berikut berdasarkan fungsi jarak yang digunakan saat membuat indeks:Jarak L2:
<->
Produk dalam:
<#>
Jarak kosinus:
<=>
EMBEDDING
: vektor embedding yang ingin Anda temukan tetangga semantik terdekatnya yang tersimpan.ROW_COUNT
: jumlah baris yang akan ditampilkan.Tentukan
1
jika Anda hanya menginginkan satu kecocokan terbaik.
Untuk mengetahui 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 ke dalam vektor, dan untuk menemukan baris database dengan embedding yang paling mirip secara semantik. Ekstensi PostgreSQL pgvector
bawaan disesuaikan untuk AlloyDB, dan disebut sebagai vector
. Anda menerapkan
vektor ke salah satu operator pgvector
tetangga terdekat, misalnya
<=>
untuk jarak kosinus.
Karena embedding()
menampilkan array real
, Anda harus melakukan transmisi eksplisit panggilan
embedding()
ke vector
untuk menggunakan nilai ini dengan operator pgvector
.
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<=> google_ml.embedding('MODEL_IDVERSION_TAG', 'TEXT')
LIMIT ROW_COUNT
Ganti kode berikut:
MODEL_ID
: ID model yang akan dikueri.Jika Anda menggunakan Vertex AI Model Garden, tentukan
text-embedding-005
sebagai ID model. Berikut adalah model berbasis cloud yang dapat digunakan AlloyDB untuk embedding teks. Untuk mengetahui informasi selengkapnya, lihat Embedding teks.Opsional:
VERSION_TAG
: tag versi model yang akan dikueri. Awali tag dengan@
.Jika Anda menggunakan salah satu model berbahasa Inggris
text-embedding-005
dengan Vertex AI, tentukan salah satu tag versi—misalnya,text-embedding-005
, yang tercantum di Versi model.Google sangat menyarankan 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 ke dalam penyematan vektor.
Untuk mempercepat penelusuran KNN yang difilter, Anda dapat menggunakan columnar engine AlloyDB. Untuk mengetahui informasi selengkapnya, lihat Mempercepat penelusuran vektor yang difilter (Pratinjau) dan Mengonfigurasi mesin columnar.
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.