Menjalankan penelusuran kemiripan vektor

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.

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.

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