Mengupdate dan mem-build ulang indeks aktif

Dengan kueri penelusuran yang besar, memperbarui indeks Anda penting untuk selalu memiliki informasi yang paling akurat. Anda dapat memperbarui indeks Penelusuran Vektor dengan beberapa cara:

Mengganti seluruh indeks

Untuk mengganti konten update batch atau streaming Index yang ada, gunakan metode IndexService.UpdateIndex.

  • Tetapkan Index.metadata.contentsDeltaUri ke Cloud Storage URI yang menyertakan vektor yang ingin Anda perbarui.
  • Tetapkan Index.metadata.isCompleteOverwrite ke true. Jika disetel ke benar, seluruh indeks akan sepenuhnya ditimpa dengan file metadata baru yang Anda berikan.

gcloud

  1. Perbarui file metadata indeks Anda untuk menetapkan contentsDeltaUri dan isCompleteOverwrite=true.
  2. Gunakan perintah gcloud ai indexes update.

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • LOCAL_PATH_TO_METADATA_FILE: Jalur lokal ke file metadata.
  • INDEX_ID: ID indeks.
  • LOCATION: Region tempat Anda menggunakan Vertex AI.
  • PROJECT_ID: project ID Google Cloud Anda.

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud ai indexes update INDEX_ID \
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai indexes update INDEX_ID `
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai indexes update INDEX_ID ^
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^
    --region=LOCATION ^
    --project=PROJECT_ID

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • INPUT_DIR: Jalur direktori Cloud Storage dari konten indeks.
  • INDEX_ID: ID indeks.
  • LOCATION: Region tempat Anda menggunakan Vertex AI.
  • PROJECT_ID: project ID Google Cloud Anda.
  • PROJECT_NUMBER: Nomor project yang dibuat secara otomatis untuk project Anda.

Metode HTTP dan URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID

Meminta isi JSON:

{
 "metadata": {
   "contentsDeltaUri": "INPUT_DIR",
   "isCompleteOverwrite": true
 }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
 "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID",
 "metadata": {
   "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateIndexOperationMetadata",
   "genericMetadata": {
     "createTime": "2022-01-12T23:56:14.480948Z",
     "updateTime": "2022-01-12T23:56:14.480948Z"
   }
 }
}

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.

Saat memanggil metode di bawah, tetapkan is_complete_overwrite=True untuk mengganti konten indeks sepenuhnya.

def vector_search_update_index_embeddings(
    project: str,
    location: str,
    index_name: str,
    gcs_uri: str,
    is_complete_overwrite: Optional[bool] = None,
) -> None:
    """Update a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_name (str): Required. The index to update. A fully-qualified index
          resource name or a index ID.  Example:
          "projects/123/locations/us-central1/indexes/my_index_id" or
          "my_index_id".
        gcs_uri (str): Required. The Google Cloud Storage uri for index content
        is_complete_overwrite (bool): Optional. If true, the index content will
          be overwritten wth the contents at gcs_uri.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index instance from an existing index
    index = aiplatform.MatchingEngineIndex(index_name=index_name)

    index.update_embeddings(
        contents_delta_uri=gcs_uri, is_complete_overwrite=is_complete_overwrite
    )

Konsol

Gunakan petunjuk ini untuk memperbarui konten indeks batch.

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka bagian Deploy dan Gunakan. Pilih Cari Vektor

    Buka Cari Vektor

  2. Pilih indeks yang ingin diperbarui. Halaman Info indeks akan terbuka.
  3. Pilih Edit Indeks. Panel edit indeks akan terbuka.
  4. Di kolom Cloud Storage, telusuri dan pilih folder Cloud Storage tempat data vektor Anda disimpan.
  5. Centang kotak timpa semua untuk menimpa semua data yang ada.
  6. Klik Perbarui
  7. Klik Selesai untuk menutup panel.

Mengupdate indeks batch sebagian

Untuk memperbarui penyematan Index batch yang ada, gunakan metode IndexService.UpdateIndex.

  • Tetapkan Index.metadata.contentsDeltaUri ke Cloud Storage URI yang menyertakan vektor yang ingin Anda perbarui.
  • Tetapkan Index.metadata.isCompleteOverwrite ke salah (false).

Hanya vektor yang ditentukan dalam Index.metadata.contentsDeltaUri yang diperbarui, disisipkan, atau dihapus. Penyematan lain yang ada di indeks akan tetap ada.

gcloud

  1. Perbarui file metadata indeks Anda untuk menetapkan contentsDeltaUri.
  2. Gunakan perintah gcloud ai indexes update.

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • LOCAL_PATH_TO_METADATA_FILE: Jalur lokal ke file metadata.
  • INDEX_ID: ID indeks.
  • LOCATION: Region tempat Anda menggunakan Vertex AI.
  • PROJECT_ID: project ID Google Cloud Anda.

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud ai indexes update INDEX_ID \
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai indexes update INDEX_ID `
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai indexes update INDEX_ID ^
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^
    --region=LOCATION ^
    --project=PROJECT_ID

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • INPUT_DIR: Jalur direktori Cloud Storage dari konten indeks.
  • INDEX_ID: ID indeks.
  • LOCATION: Region tempat Anda menggunakan Vertex AI.
  • PROJECT_ID: project ID Google Cloud Anda.
  • PROJECT_NUMBER: Nomor project yang dibuat secara otomatis untuk project Anda.

Metode HTTP dan URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID

Meminta isi JSON:

{
 "metadata": {
   "contentsDeltaUri": "INPUT_DIR",
   "isCompleteOverwrite": false
 }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
 "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID",
 "metadata": {
   "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateIndexOperationMetadata",
   "genericMetadata": {
     "createTime": "2022-01-12T23:56:14.480948Z",
     "updateTime": "2022-01-12T23:56:14.480948Z"
   }
 }
}

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.

Saat memanggil metode di bawah, tetapkan is_complete_overwrite=False.

def vector_search_update_index_embeddings(
    project: str,
    location: str,
    index_name: str,
    gcs_uri: str,
    is_complete_overwrite: Optional[bool] = None,
) -> None:
    """Update a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_name (str): Required. The index to update. A fully-qualified index
          resource name or a index ID.  Example:
          "projects/123/locations/us-central1/indexes/my_index_id" or
          "my_index_id".
        gcs_uri (str): Required. The Google Cloud Storage uri for index content
        is_complete_overwrite (bool): Optional. If true, the index content will
          be overwritten wth the contents at gcs_uri.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index instance from an existing index
    index = aiplatform.MatchingEngineIndex(index_name=index_name)

    index.update_embeddings(
        contents_delta_uri=gcs_uri, is_complete_overwrite=is_complete_overwrite
    )

Konsol

Gunakan petunjuk ini untuk memperbarui konten indeks batch.

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka bagian Deploy dan Gunakan. Pilih Cari Vektor

    Buka Cari Vektor

  2. Pilih indeks yang ingin diperbarui. Halaman Info indeks akan terbuka.
  3. Pilih Edit Indeks. Panel edit indeks akan terbuka.
  4. Di kolom Cloud Storage, telusuri dan pilih folder Cloud Storage tempat data vektor Anda disimpan.
  5. Pastikan kotak penimpaan lengkap sudah kosong.
  6. Klik Perbarui
  7. Klik Selesai untuk menutup panel.

Jika Index memiliki deployment terkait (lihat kolom Index.deployed_indexes) lalu ketika ada perubahan tertentu pada Index asli selesai, DeployedIndex otomatis diperbarui secara asinkron di latar belakang untuk mencerminkan perubahan ini.

Untuk memeriksa apakah perubahan telah diterapkan, bandingkan waktu selesai operasi indeks update dan DeployedIndex.index_sync_time.

Mengupdate sebagian indeks streaming

Dengan update streaming, Anda dapat mengupdate dan mengkueri indeks dalam beberapa detik. Saat ini, Anda tidak dapat menggunakan update streaming pada indeks kumpulan update yang ada. Anda harus membuat indeks baru. Lihat Membuat indeks untuk update streaming guna mempelajari lebih lanjut.

Anda akan dikenai biaya $0,45 per GB yang digunakan untuk update streaming. Untuk mempelajari harga lebih lanjut, lihat halaman harga Vertex AI. Update streaming diterapkan langsung ke indeks yang di-deploy dalam memori, yang kemudian ditampilkan dalam hasil kueri setelah penundaan singkat.

Melakukan upsert titik data

Gunakan contoh ini untuk melihat cara memperbarui dan menyisipkan titik data. Ingat, upsert-datapoints hanya menerima JSON dalam format array.

Python

Python

def vector_search_upsert_datapoints(
    project: str,
    location: str,
    index_name: str,
    datapoints: Sequence[aiplatform.compat.types.index_v1beta1.IndexDatapoint],
) -> None:
    """Upsert datapoints to the index.

    Args:
      project (str): Required. The Project ID
      location (str): Required. The region name, e.g. "us-central1"
      index_name (str): Required. The index to update. A fully-qualified index
        resource name or a index ID.  Example:
        "projects/123/locations/us-central1/indexes/my_index_id" or
        "my_index_id".
      datapoints: Sequence[IndexDatapoint]: Required. The datapoints to be
        updated. For example:
        [IndexDatapoint(datapoint_id="1", feature_vector=[1.0, 2.0, 3.0]),
        IndexDatapoint(datapoint_id="2", feature_vector=[4.0, 5.0, 6.0])]
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index instance from an existing index with stream_update
    # enabled
    my_index = aiplatform.MatchingEngineIndex(index_name=index_name)

    # Upsert the datapoints to the index
    my_index.upsert_datapoints(datapoints=datapoints)

Curl

Batas kuota throughput berkaitan dengan jumlah data yang disertakan dalam upsert. Jika ID titik data ada dalam indeks, penyematan akan diperbarui. Jika tidak, penyematan baru akan ditambahkan.

  
  DATAPOINT_ID_1=
  DATAPOINT_ID_2=
  curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints \
  -d '{datapoints: [{datapoint_id: "'${DATAPOINT_ID_1}'", feature_vector: [...]},
  {datapoint_id: "'${DATAPOINT_ID_2}'", feature_vector: [...]}]}'
  
  

Dengan penelusuran campuran, yang merupakan Pratinjau publik, representasi penyematan yang jarang dan padat untuk titik data didukung. Dalam operasi penyisipan dan pembaruan, menghapus penyematan rapat akan menghapus representasi rapat, dan menghapus penyematan jarang akan menghapus representasi jarang.

Contoh ini memperbarui penyematan padat dan penyematan jarang.

  
    curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`"  https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints -d '{datapoints: [{datapoint_id: "111", feature_vector: [0.111, 0.111], "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}}]}'
  
  

Contoh ini memperbarui penyematan padat dan menghapus penyematan jarang.

    
      curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`"  https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints -d '{datapoints: [{datapoint_id: "111", feature_vector: [0.111, 0.111]}]}'
    
  

Contoh ini memperbarui penyematan jarang dan menghapus penyematan rapat.

    
      curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`"  https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints -d '{datapoints: [{datapoint_id: "111",  "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}}]}'
    
  

Konsol

Konsol

Gunakan petunjuk ini untuk memperbarui konten ke indeks streaming.

  1. Di konsol Google Cloud, buka halaman Vector Search.

    Buka Cari Vektor

  2. Pilih indeks yang ingin diperbarui. Halaman Info indeks akan terbuka.
  3. Klik Edit Indeks. Panel edit indeks akan terbuka.
  4. Dari panel, pilih tab Tambahkan/perbarui titik data untuk menambahkan konten.
  5. Masukkan ID titik data.
  6. Masukkan minimal satu jenis penyematan:
    • Embedding rapat: Masukkan array nilai floating point yang dipisahkan koma. Jumlah nilai harus cocok dengan dimensi indeks.
    • Embedding jarang (Pratinjau publik):
      1. Masukkan dimensi penyematan jarang sebagai array bilangan bulat yang dipisahkan koma. Jumlah nilai tidak harus cocok dengan dimensi indeks.
      2. Masukkan nilai sebagai array nilai floating point yang dipisahkan koma. Jumlah nilai harus cocok dengan jumlah dimensi penyematan yang jarang.
  7. Opsional: Untuk mengaktifkan pemfilteran berdasarkan batasan token pada titik data ini, klik Tambahkan batasan token, lalu masukkan namespace dan string yang dipisahkan koma sebagai token.
  8. Opsional: Untuk mengaktifkan pemfilteran menurut batasan numerik pada titik data ini, klik Tambahkan batasan numerik, masukkan namespace, pilih jenis angka, lalu masukkan nilai.
  9. Opsional: Untuk membantu mencegah banyak hasil yang serupa, masukkan string crowding tag.
  10. Klik Upsert.
  11. Klik Selesai untuk menutup panel.

Batas kuota throughput berkaitan dengan jumlah data yang disertakan dalam upsert. Jika ID titik data ada dalam indeks, embedding akan diperbarui. Jika tidak, embedding baru akan ditambahkan.

Memperbarui metadata penyematan

Ada banyak alasan Anda mungkin perlu memperbarui batasan streaming atau batasan angka. Misalnya, saat menangani data bervolume tinggi dan bergerak cepat, Anda mungkin ingin memprioritaskan aliran data tertentu. Memperbarui langsung batasan atau batasan numerik memungkinkan Anda meningkatkan fokus secara real time, sehingga memastikan data yang paling penting segera diproses atau ditandai.

Anda dapat langsung memperbarui batasan titik data dan batasan numerik di dalam indeks streaming tanpa biaya pemadatan update penuh.

Untuk melakukan update khusus metadata ini, Anda perlu menambahkan kolom update_mask ke permintaan. Nilai update_mask harus ditetapkan ke all_restricts. Nilai batasan dan batasan numerik yang ditetapkan di titik data harus berupa nilai baru yang ingin Anda terapkan dalam pembaruan.

Contoh berikut menunjukkan cara menambahkan batasan ke dua titik data yang ada.

DATAPOINT_ID_1=
DATAPOINT_ID_2=

curl -H "Content-Type: application/json" -H "Authorization: Bearer gcloud auth print-access-token" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints \
-d '{datapoints:
[{datapoint_id: "'${DATAPOINT_ID_1}'", feature_vector: [...],  restricts:[{namespace: "color", allow_list: ["red"]}]},
{datapoint_id: "'${DATAPOINT_ID_2}'", feature_vector: [...],  restricts:[{namespace: "color", allow_list: ["red"]}]}
], update_mask: "all_restricts"}'

Menghapus titik data

Anda mungkin perlu menghapus titik data dari indeks streaming. Anda dapat melakukannya menggunakan curl atau dari konsol Google Cloud.

Kasus penggunaan utama untuk menghapus titik data dari indeks adalah mempertahankan paritas antara indeks dan sumbernya di dunia nyata. Pertimbangkan penjual buku yang menggunakan penyematan vektor untuk mewakili inventaris buku mereka untuk tujuan penelusuran dan rekomendasi. Jika buku terjual habis atau dihapus dari stok, menghapus titik data yang sesuai dari indeks akan memastikan bahwa hasil penelusuran dan rekomendasi tetap akurat dan terbaru.

Curl


curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{REGION}/indexes/{INDEX_ID}:removeDatapoints -d '{datapoint_ids: ["'{DATAPOINT_ID_1}'", "'{DATAPOINT_ID_2}'"]}'

Konsol

Konsol

Gunakan petunjuk ini untuk menghapus titik data dari indeks streaming.

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka bagian Deploy dan Gunakan. Pilih Cari Vektor

    Buka Cari Vektor

  2. Pilih indeks streaming yang ingin diperbarui. Halaman Info indeks akan terbuka.
  3. Pilih Edit Indeks. Panel edit indeks akan terbuka.
  4. Dari panel, pilih tab Hapus titik data.
  5. Tambahkan maksimal 20 titik data dengan memberikan daftar ID titik data yang dipisahkan koma
  6. Klik Hapus.
  7. Klik Selesai untuk menutup panel.

Python

Python

def vector_search_remove_datapoints(
    project: str,
    location: str,
    index_name: str,
    datapoint_ids: Sequence[str],
) -> None:
    """Remove datapoints from a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_name (str): Required. The index to update. A fully-qualified index
          resource name or a index ID.  Example:
          "projects/123/locations/us-central1/indexes/my_index_id" or
          "my_index_id".
        datapoint_ids (Sequence[str]): Required. The datapoint IDs to remove.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index instance from an existing index
    index = aiplatform.MatchingEngineIndex(index_name=index_name)

    index.remove_datapoints(datapoint_ids=datapoint_ids)

Memperbarui metadata indeks

IndexService.UpdateIndex juga dapat digunakan untuk memperbarui kolom metadata display_name, description, dan labels untuk indeks batch dan streaming. Perhatikan bahwa satu panggilan ke UpdateIndex dapat memperbarui penyematan indeks atau kolom metadata ini, tetapi tidak keduanya sekaligus.

gcloud

  1. Perbarui file metadata indeks Anda.
  2. Gunakan perintah gcloud ai indexes update.

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • LOCAL_PATH_TO_METADATA_FILE: Jalur lokal ke file metadata.
  • INDEX_ID: ID indeks.
  • LOCATION: Region tempat Anda menggunakan Vertex AI.
  • PROJECT_ID: project ID Google Cloud Anda.

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud ai indexes update INDEX_ID \
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai indexes update INDEX_ID `
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai indexes update INDEX_ID ^
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^
    --region=LOCATION ^
    --project=PROJECT_ID

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • INPUT_DIR: Jalur direktori Cloud Storage dari konten indeks.
  • INDEX_ID: ID indeks.
  • LOCATION: Region tempat Anda menggunakan Vertex AI.
  • PROJECT_ID: project ID Google Cloud Anda.
  • PROJECT_NUMBER: Nomor project yang dibuat secara otomatis untuk project Anda.

Metode HTTP dan URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID

Meminta isi JSON:

{
 "metadata": {
   "description": "Updated description",
   "display_name": "Updated display name"
 }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
 "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID",
 "metadata": {
   "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateIndexOperationMetadata",
   "genericMetadata": {
     "createTime": "2022-01-12T23:56:14.480948Z",
     "updateTime": "2022-01-12T23:56:14.480948Z"
   }
 }
}

Python

def vector_search_update_index_metadata(
    project: str,
    location: str,
    index_name: str,
    display_name: Optional[str] = None,
    description: Optional[str] = None,
    labels: Optional[Dict[str, str]] = None,
) -> None:
    """Update a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_name (str): Required. The index to update. A fully-qualified index
          resource name or a index ID.  Example:
          "projects/123/locations/us-central1/indexes/my_index_id" or
          "my_index_id".
        display_name (str): Optional. The display name of the Index. The name
          can be up to 128 characters long and can be consist of any UTF-8
          characters.
        description (str): Optional. The description of the Index.
        labels (Dict[str, str]): Optional. The labels with user-defined
          metadata to organize your Indexs. Label keys and values can be no
          longer than 64 characters (Unicode codepoints), can only contain
          lowercase letters, numeric characters, underscores and dashes.
          International characters are allowed. See https://goo.gl/xmQnxf for
          more information on and examples of labels. No more than 64 user
          labels can be associated with one Index (System labels are excluded).
          System reserved label keys are prefixed with
          "aiplatform.googleapis.com/" and are immutable.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index instance from an existing index
    index = aiplatform.MatchingEngineIndex(index_name=index_name)

    index.update_metadata(
        display_name=display_name,
        description=description,
        labels=labels,
    )

Konsol

Gunakan petunjuk ini untuk memperbarui metadata indeks (konsol terbatas untuk memperbarui display_name dan description).

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka bagian Deploy dan Gunakan. Pilih Cari Vektor

    Buka Cari Vektor

  2. Pilih indeks yang ingin diperbarui. Halaman Info indeks akan terbuka.
  3. Pilih Edit Indeks. Panel edit indeks akan terbuka.
  4. Perbarui kolom metadata yang diinginkan.
  5. Klik Perbarui
  6. Klik Selesai untuk menutup panel.

Pemadatan

Secara berkala, indeks Anda di-build ulang untuk memperhitungkan semua update baru sejak build ulang terakhir. Build ulang ini, atau "pemadatan", meningkatkan performa kueri dan keandalan. Pemadatan terjadi untuk update streaming dan update batch.

  • Update streaming: Vector Search menggunakan metrik berbasis heuristik untuk menentukan kapan harus memicu pemadatan. Jika data terlama yang tidak dikompresi sudah berusia lima hari, pemadatan selalu dipicu. Anda akan dikenai biaya pembuatan ulang indeks dengan tingkat update batch yang sama, selain biaya update streaming.

  • Pembaruan batch: Terjadi saat ukuran set data inkremental > 20% dari ukuran set data dasar.

Mem-build ulang dan membuat kueri untuk indeks Anda

Anda dapat mengirim permintaan pencocokan atau pencocokan batch seperti biasa dengan grpc cli, library klien, atau Vertex AI SDK untuk Python. Saat mem-build ulang kueri, Anda mungkin akan melihat update dalam beberapa detik. Untuk mempelajari cara membuat kueri indeks, lihat Indeks kueri untuk mendapatkan tetangga terdekat.

Kolom opsional

Saat membuat indeks, ada beberapa kolom opsional yang dapat Anda gunakan untuk menyesuaikan kueri.

Melakukan upsert dengan batasan

Melakukan upsert indeks dan menambahkan batasan adalah cara memberi tag pada titik data sehingga titik data tersebut sudah teridentifikasi untuk difilter pada waktu kueri. Anda mungkin ingin menambahkan tag pembatasan untuk membatasi hasil yang ditampilkan di data sebelum kueri dikirim. Misalnya, pelanggan ingin menjalankan kueri pada indeks, tetapi ingin memastikan hasilnya hanya menampilkan item yang cocok dengan "merah" dalam penelusuran untuk alas kaki. Pada contoh berikut, indeks di-upsert dan memfilter semua sepatu merah, tetapi menolak yang biru. Hal ini memastikan filter penelusuran dalam opsi spesifik terbaik dari indeks yang besar dan bervariasi sebelum dijalankan.

Selain batasan token, contoh ini menggunakan batasan numerik. Dalam hal ini, titik data dikaitkan dengan harga 20, panjang 0,3, dan lebar 0,5. Pada saat kueri, Anda dapat menggunakan batasan numerik ini untuk memfilter hasil guna membatasi hasil kueri pada nilai harga, panjang, dan lebar. Misalnya, titik data ini akan muncul dalam kueri yang memfilter harga > 25, panjang < 1, dan lebar < 1.

Untuk mempelajari pemfilteran lebih lanjut, lihat Penelusuran Vektor untuk Pengindeksan.

Python

# Upsert datapoints
_TEST_DATAPOINT_1 = aiplatform_v1.types.index.IndexDatapoint(
    datapoint_id="3",
    feature_vector=[0.00526886899, -0.0198396724],
    restricts=[
        aiplatform_v1.types.index.IndexDatapoint.Restriction(namespace="Color", allow_list=["red"])
    ],
    numeric_restricts=[
        aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
            namespace="cost",
            value_int=1,
        )
    ],
)
_TEST_DATAPOINT_2 =  aiplatform_v1.types.index.IndexDatapoint(
    datapoint_id="4",
    feature_vector=[0.00526886899, -0.0198396724],
    numeric_restricts=[
        aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
            namespace="cost",
            value_double=0.1,
        )
    ],
    crowding_tag=aiplatform_v1.types.index.IndexDatapoint.CrowdingTag(crowding_attribute="crowding"),
)
_TEST_DATAPOINT_3 = aiplatform_v1.types.index.IndexDatapoint(
    datapoint_id="5",
    feature_vector=[0.00526886899, -0.0198396724],
    numeric_restricts=[
        aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
            namespace="cost",
            value_float=1.1,
        )
    ],
)

_TEST_DATAPOINTS = [_TEST_DATAPOINT_1, _TEST_DATAPOINT_2, _TEST_DATAPOINT_3]

my_streaming_index = my_streaming_index.upsert_datapoints(datapoints=_TEST_DATAPOINTS)

# Dynamic metadata update
_TEST_DATAPOINT_4 = aiplatform_v1.types.index.IndexDatapoint(
    datapoint_id="-2",
    numeric_restricts=[
        aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
            namespace="cost",
            value_float=1.1,
        )
    ],
)
my_streaming_index = my_streaming_index.upsert_datapoints(datapoints=[_TEST_DATAPOINT4], update_mask=["all_restricts"])

curl

curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${ENDPOINT}/v1/projects/${PROJECT_ID}/locations/us-central1/indexes/${INDEX_ID}:upsertDatapoints \
-d '{
datapoints: [
  {
    datapoint_id: "'${DATAPOINT_ID_1}'",
    feature_vector: [...],
    restricts: { namespace: "color", allow_list: ["red"], deny_list: ["blue"]},
    numeric_restricts: [{namespace: "price", value_int: 20}, {namespace: "length", value_float: 0.3}, {namespace: "width", value_double: 0.5}]
  }
]}'

Melakukan upsert dengan crowding

Crowding tag membatasi hasil yang serupa dengan meningkatkan keragaman hasil. Crowding adalah batasan pada daftar tetangga yang dihasilkan oleh penelusuran tetangga terdekat yang mengharuskan tidak lebih dari beberapa nilai, dari grup hasil, yang menampilkan nilai crowding_attribute yang sama. Misalnya, katakanlah Anda kembali berbelanja sepatu secara online. Anda ingin melihat berbagai macam warna dalam hasil penelusuran, tetapi mungkin ingin menggunakannya dalam satu gaya, seperti sepatu bola. Anda dapat meminta agar tidak lebih dari 3 pasang sepatu dengan warna yang sama ditampilkan dengan menetapkan per_crowding_attribute_num_neighbors = 3 dalam kueri, dengan asumsi Anda menetapkan crowding_attribute ke warna sepatu saat memasukkan titik data tersebut.

Kolom ini menunjukkan jumlah maksimum kecocokan yang diizinkan dengan tag kerumunan yang sama.

curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${ENDPOINT}/v1/projects/${PROJECT_ID}/locations/us-central1/indexes/${INDEX_ID}:upsertDatapoints \
-d '{
datapoints: [
  {
    datapoint_id: "'${DATAPOINT_ID_1}'",
    feature_vector: [...],
    restricts: { namespace: "type", allow_list: ["cleats"]}
    crowding_tag: { crowding_attribute: "red-shoe"},
  }
]}'

Langkah selanjutnya