Menggunakan penyematan kustom

Jika sudah membuat embedding vektor kustom 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 generik atau data tidak terstruktur dengan metadata. Fitur ini tidak tersedia untuk penelusuran media dan layanan kesehatan.

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

  • Penyematan Anda telah dilatih dengan kata kustom, seperti istilah internal yang kemiripan semantiknya tidak akan ditangkap dengan pelatihan pada 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 penyematan untuk mendapatkan peringkat berbasis personalisasi, yang dapat meningkatkan penyematan dokumen Google untuk peringkat berbasis relevansi.

Untuk menggunakan embedding Anda sendiri:

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

Sebelum memulai

Sebelum memulai, pastikan penyematan Anda memenuhi persyaratan berikut:

  • Penyematan didukung untuk data terstruktur dan data tidak terstruktur dengan metadata
  • Penyematan harus diberikan sebagai array satu dimensi
  • Dimensi penyematan harus antara 1 dan 768, inklusif
  • Embedding didukung untuk teks dan gambar. Video tidak didukung
  • Maksimum 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 penyematan saat ini tidak dapat dihapus setelah ditetapkan

Menyerap data dengan penyematan

Anda dapat menyerap penyematan 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 untuk penyerapan, bergantung pada jenis data Anda:

    • Data terstruktur: Saat Anda menyiapkan data, sertakan setiap penyematan dokumen sebagai array satu dimensi dalam satu hingga dua kolom dalam dokumen. Anda dapat menyediakan hingga dua penyematan (misalnya, jika pengujian A/B dilakukan di 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 Anda menyiapkan data, sertakan penyematan setiap dokumen sebagai array satu dimensi dalam kolom di metadata dokumen. Anda dapat memberikan hingga dua penyematan (misalnya, saat pengujian A/B antar-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 transfer Anda (Cloud Storage atau BigQuery) dalam dokumentasi Menyiapkan data untuk transfer.

  2. Ikuti petunjuk untuk jenis data Anda di Membuat mesin dan menyerap data dengan Vertex AI Search untuk menyerap dokumen dengan penyematan.

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

Memperbarui skema

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

Konsol

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

  1. Di konsol Google Cloud, buka halaman Agent Builder.

    Agent Builder

  2. Di menu navigasi, klik Penyimpanan Data.

  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 di skema dan di kolom Key properties, pilih embedding_vector sebagai properti kunci untuk kolom tersebut.

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

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

    Jika Anda memiliki kolom penyematan 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 berformat 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 pembaruan, JSON berformat 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

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

Ada dua cara untuk menentukan penyematan:

Menentukan penyematan secara global

Anda dapat menentukan penyematan yang sama di semua permintaan penelusuran menggunakan konsol Google Cloud atau API.

Konsol

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

  1. Di konsol Google Cloud, buka halaman Agent Builder.

    Agent Builder

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

  5. Untuk Ekspresi peringkat, masukkan satu atau beberapa fungsi untuk mengontrol peringkat hasil. Variabel diberi bobot 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 standar yang disediakan oleh Vertex AI Search untuk mengukur relevansi dokumen. Rentang skornya adalah 0 hingga 1,0, termasuk batas.
    • dotProduct(): Fungsi standar 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, update servingConfig dengan embeddingConfig.

  1. Lakukan patch pada entity servingConfig dengan kolom yang ingin Anda perbarui. Tentukan kolom yang Anda perbarui dengan updateMask.

    Pada contoh berikut, embeddingConfig menggunakan penyematan 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 penyematan.
    • ranking_expression: Mengontrol peringkat hasil. Variabel dipertimbangkan 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 standar yang disediakan oleh Vertex AI Search.
    • dotProduct(): Fungsi standar yang disediakan oleh Vertex AI Search. Dot product 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 otomatis disertakan.

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

Menentukan penyematan per permintaan penelusuran

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

  1. Kirim permintaan penelusuran yang menyertakan embeddingSpec.

    Contoh embeddingSpec berikut menggunakan penyematan 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 penyematan.
    • vector: Vektor input yang diberikan sebagai array.
    • ranking_expression: Mengontrol peringkat hasil. Variabel dipertimbangkan 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 standar yang disediakan oleh Vertex AI Search untuk mengukur relevansi dokumen. Rentang skornya adalah 0 hingga 1,0, termasuk batas.
      • dotProduct(): Fungsi standar 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 menyertakan skor relevansi dan nilai perkalian titik. Contoh:

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

Langkah selanjutnya