Penelusuran kemiripan vektor, juga dikenal sebagai penelusuran tetangga terdekat, di AlloyDB untuk PostgreSQL memungkinkan Anda menemukan baris dalam database yang paling mirip secara semantik dengan vektor kueri. Setelah menyimpan dan mengindeks embedding, Anda dapat menggunakan operator pgvector dan fungsi jarak untuk membuat kueri database AlloyDB untuk tetangga terdekat.
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 embedding, fungsi jarak, embedding target, dan jumlah baris yang akan ditampilkan. Anda juga dapat menggunakan fungsi embedding() untuk menerjemahkan teks ke dalam vektor, lalu membandingkan vektor 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 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 dari yang berikut berdasarkan fungsi jarak yang digunakan saat membuat indeks:Jarak L2:
<->Produk dalam:
<#>Jarak kosinus:
<=>
EMBEDDING: vektor embedding yang ingin Anda temukan tetangga semantik tersimpan terdekatnya.ROW_COUNT: jumlah baris yang akan ditampilkan.Tentukan
1jika 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 stok disesuaikan untuk AlloyDB, dan disebut sebagai vector. Anda menerapkan
vektor ke salah satu operator tetangga terdekat pgvector, misalnya
<=> untuk jarak kosinus.
Karena embedding() menampilkan array real, Anda harus secara eksplisit melakukan transmisi panggilan
embedding() ke vector agar dapat 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 Model Garden, tentukan
text-embedding-005sebagai ID model. Ini adalah model berbasis cloud yang AlloyDB dapat gunakan untuk embedding teks. Untuk mengetahui informasi selengkapnya, lihat Embedding teks.- (Opsional)
VERSION_TAG: tag versi model yang akan dikueri. Tambahkan@di awal tag.Jika Anda menggunakan salah satu model bahasa Inggris
text-embedding-005dengan Gemini Enterprise Agent Platform, tentukan salah satu tag versi—misalnya,text-embedding-005, yang tercantum dalam Versi model.Google sangat merekomendasikan agar Anda selalu menentukan tag versi. Jika Anda tidak menentukan tag versi, AlloyDB menggunakan versi model terbaru, yang mungkin menyebabkan hasil yang tidak terduga.
TABLE: tabel yang akan dikueri.EMBEDDING_COLUMN: kolom yang berisi embedding yang disimpan.TEXT: teks yang akan diterjemahkan ke dalam embedding vektor.ROW_COUNT: jumlah baris yang akan ditampilkan.
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 columnar engine.
Langkah berikutnya
- Melakukan tutorial penelusuran vektor
- Menyesuaikan performa kueri vektor
- Metrik indeks vektor
- Pelajari cara membuat asisten belanja cerdas dengan AlloyDB, pgvector, dan pengelolaan endpoint model.
- Pelajari tentang referensi pengelolaan endpoint model.