Menggunakan penyematan kustom

Jika telah membuat embedding vektor kustom sendiri untuk data Anda, Anda dapat menguploadnya ke Vertex AI Search dan menggunakannya saat membuat kueri dengan Vertex AI Search.

Fitur ini tersedia untuk penyimpanan data dengan data terstruktur kustom atau data tidak terstruktur dengan metadata. Fitur ini tidak tersedia untuk penelusuran media dan kesehatan.

Secara default, Vertex AI Search otomatis membuat embedding vektor tanpa memerlukan konfigurasi apa pun. Jika Anda belum terbiasa membuat penyematan, Google merekomendasikan agar Vertex AI Search membuat dan menggunakan penyematan untuk Anda. Namun, jika Anda telah membuat embedding sendiri untuk data, Anda mungkin lebih memilih untuk menggunakannya daripada embedding yang dihasilkan oleh Vertex AI Search, terutama jika embedding kustom Anda berisi konteks tambahan yang dapat memperkaya pengambilan dan peringkat penelusuran Anda. Misalnya:

  • Penyematan Anda telah dilatih pada kata-kata kustom, seperti istilah internal yang kesamaan semantiknya tidak akan diperoleh dengan melatih data publik—misalnya, istilah khusus organisasi yang hanya muncul dalam dokumen pribadi.
  • Anda telah membuat penyematan untuk profil pengguna dan ingin menggunakannya untuk membuat peringkat dokumen yang dipersonalisasi dan relevan secara semantik. Anda dapat menggunakan sematan untuk mendapatkan peringkat berbasis personalisasi, yang dapat meningkatkan sematan dokumen Google untuk peringkat berbasis relevansi.

Untuk menggunakan embedding Anda sendiri:

  1. Sebelum memulai: Pastikan sematan Anda memenuhi semua persyaratan
  2. Menyerap data dengan penyematan: Menyerap dokumen Anda dengan penyematannya
  3. Perbarui skema Anda: Perbarui skema Anda dengan kolom properti utama dan spesifikasi dimensi
  4. Tentukan penyematan Anda: Tentukan penyematan Anda secara global, atau per permintaan penelusuran.

Sebelum memulai

Sebelum memulai, pastikan sematan Anda memenuhi persyaratan berikut:

  • Penyematan didukung untuk data terstruktur dan data tidak terstruktur dengan metadata
  • Embedding harus diberikan sebagai array satu dimensi
  • Dimensi penyematan harus antara 1 dan 768, inklusif
  • Embedding didukung untuk teks dan gambar. Video tidak didukung
  • Hingga dua kolom dapat diberi tag sebagai kolom properti kunci penyematan. Anda dapat menggunakan dua kolom untuk kasus seperti pengujian A/B untuk penyematan
  • Penetapan properti kunci kolom sematan saat ini tidak dapat dihapus setelah ditetapkan

Menyerap data dengan penyematan

Anda dapat menyerap embedding dokumen dalam satu hingga dua kolom yang disertakan sebagai bagian dari data atau metadata dokumen tersebut selama penyerapan dokumen.

Untuk menyerap data dengan penyematan:

  1. Siapkan data Anda untuk penyerapan, bergantung pada jenis data Anda:

    • Data terstruktur: Saat Anda menyiapkan data, sertakan sematan setiap dokumen sebagai array satu dimensi dalam satu hingga dua kolom dalam dokumen. Anda dapat memberikan hingga dua penyematan (misalnya, jika melakukan pengujian A/B antara penyematan). Setiap penyematan harus diberikan di kolomnya sendiri dalam dokumen, misalnya: "example_embedding_vector": [0.1, 0.2, 0.3 ...]

      Ikuti panduan untuk menyiapkan data terstruktur dalam dokumentasi Menyiapkan data untuk penyerapan.

    • Data tidak terstruktur dengan metadata: Saat menyiapkan data, sertakan sematan setiap dokumen sebagai array satu dimensi dalam kolom di metadata dokumen. Anda dapat memberikan hingga dua penyematan (misalnya, saat melakukan pengujian A/B antara penyematan). Setiap penyematan harus disediakan di kolomnya sendiri dalam metadata dokumen, misalnya: "example_embedding_vector": [0.1, 0.2, 0.3 ...]

      Ikuti panduan untuk menyiapkan data tidak terstruktur dengan metadata untuk metode penyerapan Anda (Cloud Storage atau BigQuery) dalam dokumentasi Menyiapkan data untuk penyerapan.

  2. Ikuti petunjuk untuk jenis data Anda di Membuat penyimpanan data penelusuran untuk menyerap dokumen dengan penyematan.

Selanjutnya, perbarui skema Anda untuk menggunakan kolom penyematan yang benar.

Memperbarui skema

Perbarui skema Anda dengan pemetaan properti utama dan dimensi untuk kolom sematan menggunakan Google Cloud konsol atau API.

Konsol

Untuk memperbarui skema menggunakan konsol Google Cloud , ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Di menu navigasi, klik Data Stores.

  3. Di kolom Name, klik penyimpanan data dengan skema yang ingin Anda perbarui.

  4. Klik tab Schema untuk melihat skema data Anda.

  5. Klik tombol Edit.

  6. Temukan kolom penyematan Anda dalam skema dan di kolom Properti utama, pilih embedding_vector sebagai properti utama untuk kolom tersebut.

    Jika Anda memiliki kolom sematan kedua, ulangi langkah ini untuk kolom tersebut.

  7. Di kolom Dimensi, masukkan jumlah dimensi untuk kolom penyematan tersebut.

    Jika Anda memiliki kolom sematan kedua, ulangi langkah ini untuk kolom tersebut.

  8. Klik Simpan untuk menerapkan perubahan skema.

    Setelah memperbarui skema, perlu waktu hingga 24 jam untuk mengindeks ulang, bergantung pada ukuran penyimpanan data Anda.

REST

Untuk memperbarui skema menggunakan API, ikuti langkah-langkah berikut:

  1. Dengan mengikuti petunjuk REST di Memperbarui skema, tentukan pemetaan properti kunci dan jumlah dimensi untuk setiap kolom penyematan:

    • "keyPropertyMapping": "embedding_vector"
    • "dimension": NUMBER_OF_DIMENSIONS

    Misalnya, berikut adalah skema JSON yang diformat dengan 768 dimensi untuk kolom example_embedding_vector:

      {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "example_embedding_vector": {
            "type": "array",
            "keyPropertyMapping": 'embedding_vector',
            "dimension": 768,
            "items": {
              "type": "number"
            }
          }
        }
      }
    

    Dalam permintaan skema update, JSON yang diformat di atas akan disertakan sebagai string JSON:

      "jsonSchema": "{\"$schema\":\"https://json-schema.org/draft/2020-12/schema\",\"type\":\"object\",\"properties\":{\"example_embedding_vector\":{\"type\":\"array\",\"keyPropertyMapping\":\"embedding_vector\",\"dimension\":768,\"items\":{\"type\":\"number\"}}}}"
    

    Setelah memperbarui skema, perlu waktu hingga 24 jam untuk mengindeks ulang, bergantung pada ukuran penyimpanan data Anda.

Selanjutnya, tentukan penyematan Anda.

Menentukan penyematan Anda

Setelah pengindeksan dari pembaruan skema Anda selesai, Anda dapat mengirim permintaan penelusuran yang menyertakan spesifikasi penyematan.

Ada dua cara untuk menentukan penyematan:

  • Menentukan penyematan secara global: Untuk menentukan penyematan yang sama ke semua permintaan penelusuran, perbarui setelan penayangan Anda untuk menyertakan spesifikasi penyematan menggunakan konsol Google Cloud atau API.
  • Tentukan penyematan per permintaan penelusuran: Kirim embeddingSpec di setiap permintaan penelusuran menggunakan API. Setelan ini akan menggantikan setelan global jika ditetapkan.

Menentukan penyematan secara global

Anda dapat menentukan sematan yang sama di semua permintaan penelusuran menggunakan konsolGoogle Cloud atau API.

Konsol

Untuk memberikan spesifikasi penyematan yang sama ke semua permintaan penelusuran, perbarui setelan penayangan Anda dengan spesifikasi penyematan.

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Klik Lihat untuk penyimpanan data dengan skema yang ingin Anda perbarui.

  3. Buka halaman Konfigurasi, lalu klik tab Penayangan.

  4. Untuk Embedding field path, masukkan nama kolom yang telah Anda petakan ke properti kunci embedding.

  5. Untuk Ekspresi peringkat, masukkan fungsi atau fungsi untuk mengontrol peringkat hasil. Variabel diberi bobot sesuai dengan ekspresi yang Anda masukkan. Ekspresi peringkat adalah satu fungsi atau beberapa fungsi yang digabungkan oleh + dalam format function, { " + ", function }.

    Fungsi yang didukung adalah:

    • DOUBLE * relevance_score
    • DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)

    Variabel berikut diterima:

    • relevance_score: Variabel standar yang disediakan oleh Vertex AI Search untuk mengukur relevansi dokumen. Skor berkisar dari 0 hingga 1,0, termasuk batas.
    • dotProduct(): Fungsi yang telah ditentukan sebelumnya yang disediakan oleh Vertex AI Search. Anda harus memberikan nama kolom yang sama ke fungsi ini seperti yang Anda lakukan untuk embeddingVector.fieldPath.

    Contoh:

    • 0.3 * relevance_score
    • 0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)

REST

Untuk memberikan spesifikasi penyematan yang sama ke semua permintaan penelusuran, perbarui servingConfig dengan embeddingConfig.

  1. Patch entitas servingConfig dengan kolom yang ingin Anda perbarui. Tentukan kolom yang Anda perbarui dengan updateMask.

    Dalam contoh berikut, embeddingConfig menggunakan sematan di kolom example_embedding_field dan memberikan bobot 0,5 ke relevance_score.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d '{
          "name": "projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search",
          "embeddingConfig": {
            "fieldPath": "example_embedding_field"
          },
          "ranking_expression": "0.5 * relevance_score"
        }' \
    'https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search?updateMask=embeddingConfig,rankingExpression'
    
    • fieldPath: Nama kolom yang telah Anda petakan ke properti kunci embedding.
    • ranking_expression: Mengontrol peringkat hasil. Variabel ditimbang sesuai dengan ekspresi yang Anda masukkan. Ekspresi peringkat adalah satu fungsi atau beberapa fungsi yang digabungkan oleh + dalam format function, { " + ", function }.

    Fungsi yang didukung adalah:

    • DOUBLE * relevance_score
    • DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)

    Variabel berikut diterima:

    • relevance_score: Variabel yang telah ditentukan sebelumnya yang disediakan oleh Vertex AI Search.
    • dotProduct(): Fungsi yang telah ditentukan sebelumnya yang disediakan oleh Vertex AI Search. Produk titik dinormalisasi. Anda harus memberikan nama kolom yang sama ke fungsi ini seperti yang Anda lakukan untuk embeddingVector.fieldPath.

    Contoh:

    • 0.3 * relevance_score
    • 0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
  2. Saat Anda mengirim permintaan penelusuran, servingConfig.embeddingConfig akan disertakan secara otomatis.

    Jika Anda mengirim permintaan penelusuran yang secara eksplisit menyertakan embeddingSpec yang berbeda, embeddingSpec tersebut akan menggantikan servingConfig.embeddingConfig. Lihat petunjuk Per permintaan untuk mengetahui cara memberikan spesifikasi penyematan untuk permintaan penelusuran tunggal.

Menentukan penyematan per permintaan penelusuran

Anda dapat memberikan spesifikasi embedding untuk satu permintaan penelusuran menggunakan API. Spesifikasi penyematan per permintaan menggantikan spesifikasi penyematan global.

  1. Kirim permintaan penelusuran yang menyertakan embeddingSpec.

    Contoh embeddingSpec berikut menggunakan sematan di kolom example_embedding_field, menentukan "Contoh kueri" sebagai vektor input, dan memberikan bobot 0,5 ke relevance_score dan 0,3 ke example_embedding_field saat menghitung peringkat.

      "embeddingSpec": {
        "embeddingVectors": [{
          "fieldPath": "example_embedding_field",
          "vector": [
            0.96241474,
            -0.45999944,
            0.108588696
          ]
        }]
      },
      "ranking_expression": "0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)"
    
    • fieldPath: Nama kolom yang telah Anda petakan ke properti kunci embedding.
    • vector: Vektor input yang diberikan sebagai array.
    • ranking_expression: Mengontrol peringkat hasil. Variabel ditimbang sesuai dengan ekspresi yang Anda masukkan. Ekspresi peringkat adalah satu fungsi atau beberapa fungsi yang digabungkan dengan + dalam format function, { " + ", function }.

      Fungsi yang didukung adalah:

      • DOUBLE * relevance_score
      • DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)

      Variabel berikut diterima:

      • relevance_score: Variabel yang telah ditentukan sebelumnya yang disediakan oleh Vertex AI Search untuk mengukur relevansi dokumen. Skor berkisar dari 0 hingga 1,0, termasuk batas.
      • dotProduct(): Fungsi yang telah ditentukan sebelumnya yang disediakan oleh Vertex AI Search. Anda harus memberikan nama kolom yang sama ke fungsi ini seperti yang Anda lakukan untuk embeddingVector.fieldPath.

      Contoh:

      • 0.3 * relevance_score
      • 0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
  2. Mendapatkan hasil dalam respons penelusuran. Setiap hasil penelusuran mencakup skor relevansi dan nilai produk titiknya. Contoh:

    "modelScores": {
      "dotProduct(example_embedding_field)": [0.02150772698223591],
      "relevance_score": [ 0.8828125 ]
    }
    
    • dotProduct(): Produk titik yang dihitung untuk dokumen hasil penelusuran.
    • relevance_score: Skor relevansi yang dihitung untuk dokumen hasil penelusuran.

Langkah berikutnya