Menjalankan penelusuran kemiripan vektor

Penelusuran kesamaan vektor, yang 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 mengkueri database AlloyDB untuk tetangga terdekat.

Untuk mengetahui informasi selengkapnya tentang cara menyimpan embedding vektor dan membuat indeks, lihat Menyimpan embedding vektor dan Membuat indeks.

Untuk menjalankan penelusuran kesamaan, tentukan tabel, kolom embedding, fungsi jarak, embedding target, dan jumlah baris yang akan ditampilkan. Anda juga dapat menggunakan fungsi embedding() untuk menerjemahkan teks menjadi 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, tempat Anda 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 dari 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 tersimpan terdekatnya.

  • 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.

Anda juga dapat menggunakan fungsi embedding() untuk menerjemahkan teks menjadi vektor, dan untuk menemukan baris database dengan embedding yang paling mirip secara semantik. Ekstensi PostgreSQL pgvector standar 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 mentransmisikan panggilan embedding() ke vector untuk menggunakan nilai ini dengan operator pgvector.

  CREATE EXTENSION IF NOT EXISTS vector;

  SELECT * FROM TABLE
    ORDER BY EMBEDDING_COLUMN
    <=> google_ml.embedding('MODEL_IDVERSION_TAG', 'TEXT')::vector
    LIMIT ROW_COUNT;

Ganti kode berikut:

  • MODEL_ID: ID model yang akan dikueri.

    Jika Anda menggunakan Model Garden, tentukan text-embedding-005 sebagai ID model. Ini 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 bahasa Inggris text-embedding-005 dengan Gemini Enterprise Agent Platform, tentukan salah satu tag versi—misalnya, text-embedding-005, yang tercantum dalam 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.

  • TABLE: tabel yang akan dikueri.

  • EMBEDDING_COLUMN: kolom yang berisi embedding yang disimpan.

  • TEXT: teks yang akan diterjemahkan menjadi 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 dan Mengonfigurasi columnar engine.

Langkah berikutnya