Vector Search yang dioptimalkan untuk penyimpanan

Tingkat performa yang dioptimalkan untuk penyimpanan Vector Search dirancang untuk mengindeks dan menelusuri set data yang sangat besar. Tingkat ini menerapkan arsitektur berbasis disk, bukan menggunakan RAM, sehingga mengurangi biaya operasional Anda secara signifikan. Jika prioritas Anda adalah efisiensi biaya dalam skala besar, bukan latensi kueri serendah mungkin, tingkat yang dioptimalkan untuk penyimpanan adalah pilihan terbaik Anda.

Kapan harus menggunakan indeks yang dioptimalkan untuk penyimpanan

Pertimbangkan indeks yang dioptimalkan untuk penyimpanan jika Anda memiliki salah satu hal berikut:

  • Set data yang sangat besar: Anda harus mengindeks vektor dalam jumlah yang sangat besar, dan biaya hosting shard dalam jumlah besar yang dioptimalkan untuk performa sangat mahal.

  • Workload QPS rendah: Dalam aplikasi dengan volume kueri rendah, penghematan biaya dari penggunaan lebih sedikit shard bisa signifikan.

  • Persyaratan latensi yang fleksibel: Aplikasi Anda dapat mentoleransi sedikit peningkatan latensi kueri, yaitu waktu yang diperlukan untuk mendapatkan hasil penelusuran.

Kompromi performa

Dibandingkan dengan indeks default yang dioptimalkan untuk performa, indeks yang dioptimalkan untuk penyimpanan memiliki karakteristik berikut:

  • Peningkatan latensi kueri: Kueri memiliki latensi yang sedikit lebih tinggi pada tingkat perolehan tertentu.

Cara mengonfigurasi indeks yang dioptimalkan untuk penyimpanan

Untuk membuat indeks yang dioptimalkan untuk penyimpanan, tetapkan parameter shardSize ke SHARD_SIZE_SO_DYNAMIC dalam konfigurasi indeks Anda.

Contoh: Membuat indeks yang dioptimalkan untuk penyimpanan

Contoh berikut menunjukkan JSON yang diperlukan untuk membuat indeks streaming yang dioptimalkan untuk penyimpanan baru.

{
  "displayName": "my-storage-optimized-index",
  "description": "An index configured to prioritize storage over performance.",
  "metadata": {
    "contentsDeltaUri": "gs://your-bucket/source-data/",
    "config": {
      "dimensions": 100,
      "approximateNeighborsCount": 150,
      "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
      "shardSize": "SHARD_SIZE_SO_DYNAMIC"
    }
  },
  "indexUpdateMethod": "STREAM_UPDATE"
}

Dalam contoh ini, shardSize ditetapkan ke SHARD_SIZE_SO_DYNAMIC, yang menginstruksikan Vector Search untuk membuat indeks yang lebih padat. Hal ini memungkinkan setiap shard menyimpan lebih banyak titik data secara signifikan, sehingga mengurangi jumlah total shard yang diperlukan untuk set data Anda. Kolom lainnya, seperti dimensions dan distanceMeasureType, dikonfigurasi sesuai kebutuhan Anda.

Endpoint

Deployment yang dioptimalkan untuk penyimpanan dapat digunakan dengan endpoint yang ada.

Men-deploy indeks

Contoh berikut menunjukkan JSON yang diperlukan untuk men-deploy indeks yang dioptimalkan untuk penyimpanan ke endpoint yang telah Anda buat.

{
  "deployedIndex": {
    "id": "PROJECT_UNIQUE_ID_NAME",
    "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID",
    "displayName": "INDEX_DISPLAY_NAME",
    "deploymentTier": "STORAGE"
  }
}

Menetapkan deploymentTier ke STORAGE akan men-deploy indeks yang dioptimalkan untuk penyimpanan dengan displayName yang ditentukan ke endpoint. Vector Search secara dinamis memilih jenis mesin yang sesuai untuk performa terbaik.

Apa langkah selanjutnya?