Penelusuran Vektor yang dioptimalkan untuk penyimpanan

Lapisan performa yang dioptimalkan untuk penyimpanan untuk Vector Search dirancang untuk mengindeks dan menelusuri set data besar. Lapisan 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 terendah, lapisan yang dioptimalkan untuk penyimpanan adalah pilihan terbaik.

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 yang dioptimalkan untuk performa dalam jumlah besar sangat mahal.

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

  • Persyaratan latensi yang fleksibel: Aplikasi Anda dapat mentoleransi peningkatan kecil dalam 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:

  • Latensi kueri yang meningkat: Kueri memiliki latensi yang sedikit lebih tinggi pada tingkat recall 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 baru yang dioptimalkan untuk penyimpanan.

{
  "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 titik data yang jauh lebih banyak, sehingga mengurangi jumlah total shard yang diperlukan untuk set data Anda. Kolom lain, seperti dimensions dan distanceMeasureType, dikonfigurasi sesuai dengan 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.

Anda juga dapat menentukan jumlah replika minimum (minReplicaCount) dan jumlah replika maksimum (minReplicaCount) untuk mengontrol jumlah replika mesin yang akan di-deploy. Menetapkan jenis mesin (machineType) tidak didukung.

Apa langkah selanjutnya?