PemanasanCompatible with Milvus 2.6.4+

Pemanasan melengkapi Penyimpanan Berjenjang dengan melakukan pramuat bidang atau indeks yang dipilih ke dalam cache sebelum segmen dapat di-query. Anda dapat mengonfigurasi pemanasan di tingkat kluster, koleksi, atau masing-masing bidang/indeks, sehingga memungkinkan kontrol yang lebih baik atas latensi kueri pertama dan penggunaan sumber daya.

Mengapa melakukan pemanasan

Lazy Load di Penyimpanan Berjenjang meningkatkan efisiensi dengan hanya memuat metadata pada awalnya. Namun, hal ini dapat menyebabkan latensi pada kueri pertama untuk data yang dingin, karena potongan atau indeks yang diperlukan harus diambil dari penyimpanan jarak jauh.

Warm Up memecahkan masalah ini dengan menyimpan data penting secara proaktif di cache selama inisialisasi segmen.

Ini sangat bermanfaat ketika:

  • Indeks skalar tertentu sering digunakan dalam kondisi filter.

  • Indeks vektor sangat penting untuk kinerja pencarian dan harus segera disiapkan.

  • Latensi cold-start setelah QueryNode dimulai ulang atau pemuatan segmen baru tidak dapat diterima.

Sebaliknya, Pemanasan tidak disarankan untuk bidang atau indeks yang jarang ditanyakan. Menonaktifkan Pemanasan akan mempersingkat waktu pemuatan segmen dan menghemat ruang cache-ideal untuk bidang vektor besar atau bidang skalar yang tidak kritis.

Tingkat konfigurasi

Tingkat

Cakupan

Metode konfigurasi

Prioritas

Bidang/Indeks

Bidang atau indeks tunggal

Metode SDK:

  • add_field()

  • alter_collection_field()

  • add_index()

  • alter_index_properties()

Tertinggi

Koleksi

Semua bidang/indeks dalam koleksi

Metode SDK:

  • create_collection()

  • alter_collection_properties()

Sedang

Cluster

Semua koleksi dalam klaster

milvus.yaml file konfigurasi

Terendah (default)

Mengesampingkan perilaku:

  • Jika sebuah bidang memiliki pengaturan pemanasannya sendiri, pengaturan tersebut diutamakan daripada pengaturan tingkat koleksi dan tingkat klaster.

  • Jika tidak ada pengaturan tingkat bidang atau tingkat indeks, pengaturan tingkat koleksi yang berlaku.

  • Jika tidak ada pengaturan tingkat bidang atau tingkat indeks atau tingkat koleksi, maka tingkat klaster yang berlaku.

  • Saat menggunakan operasi perubahan, nilai perubahan terbaru yang berlaku.

Mengonfigurasi pemanasan di tingkat klaster

Pemanasan tingkat klaster dikonfigurasi di file konfigurasi Milvus milvus.yaml dan berlaku untuk semua koleksi di dalam klaster. Ini berfungsi sebagai default dasar.

Setiap jenis target mendukung dua pengaturan:

Pengaturan Pemanasan

Deskripsi

Skenario umum

sync

Memuat sebelum segmen dapat di-query. Waktu muat sedikit meningkat, tetapi kueri pertama tidak menimbulkan latensi.

Gunakan untuk data yang sangat penting bagi kinerja yang harus segera tersedia, seperti indeks skalar frekuensi tinggi atau indeks vektor kunci yang digunakan dalam pencarian.

disable

Lewati pemuatan awal. Segmen dapat di-query lebih cepat, tetapi query pertama dapat memicu pemuatan sesuai permintaan.

Gunakan untuk data yang jarang diakses atau data besar seperti bidang vektor mentah atau bidang skalar yang tidak penting.

Contoh YAML:

queryNode:
  segcore:
    tieredStorage:
      warmup:
        # options: sync, disable.
        # Specifies the timing for warming up the Tiered Storage cache.
        # - `sync`: data will be loaded into the cache before a segment is considered loaded.
        # - `disable`: data will not be proactively loaded into the cache, and loaded only if needed by search/query tasks.
        # Defaults to `sync`, except for vector field which defaults to `disable`.
        scalarField: sync
        scalarIndex: sync
        vectorField: disable # cache warmup for vector field raw data is by default disabled.
        vectorIndex: sync

Parameter

Pengaturan Pemanasan

Deskripsi

Kasus penggunaan yang disarankan

scalarField

sync | disable

Mengontrol apakah data bidang skalar dimuat sebelumnya.

Gunakan sync hanya jika bidang skalar berukuran kecil dan sering diakses dalam filter. Jika tidak, gunakan disable untuk mengurangi waktu pemuatan.

scalarIndex

sync | disable

Mengontrol apakah indeks skalar dimuat sebelumnya.

Gunakan sync untuk indeks skalar yang terlibat dalam kondisi filter yang sering atau kueri rentang.

vectorField

sync | disable

Mengontrol apakah data bidang vektor dimuat sebelumnya.

Umumnya disable untuk menghindari penggunaan cache yang berat. Aktifkan sync hanya jika vektor mentah harus diambil segera setelah pencarian (misalnya, hasil kemiripan dengan pemanggilan vektor).

vectorIndex

sync | disable

Mengontrol apakah indeks vektor dimuat sebelumnya.

Gunakan sync untuk indeks vektor yang sangat penting untuk latensi pencarian. Dalam beban kerja batch atau frekuensi rendah, disable untuk kesiapan segmen yang lebih cepat.

Mengonfigurasi pemanasan pada tingkat koleksiCompatible with Milvus 2.6.11+

Pemanasan tingkat koleksi memungkinkan Anda untuk mengganti default kluster untuk koleksi tertentu. Hal ini berguna ketika sebuah koleksi memiliki pola akses yang berbeda dari baseline seluruh cluster.

Mengatur pemanasan saat membuat koleksi

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

client.create_collection(
    collection_name="my_collection",
    schema=schema,
    properties={
        "warmup.scalarField": "sync",
        "warmup.scalarIndex": "sync",
        "warmup.vectorField": "disable",
        "warmup.vectorIndex": "sync"
    }
)

Mengubah pengaturan pemanasan pada koleksi yang sudah ada

Anda harus mengubah properti koleksi sebelum memanggil load(). Mengubah koleksi yang sudah dimuat akan menghasilkan kesalahan. Perubahan pada pengaturan pemanasan akan berlaku pada saat Anda memuat koleksi berikutnya.

client.alter_collection_properties(
    collection_name="my_collection",
    properties={
        "warmup.vectorIndex": "disable",
        "warmup.scalarField": "sync"
    }
)

Referensi properti:

Properti

Pengaturan Pemanasan

Deskripsi

warmup.scalarField

sync | disable

Pengaturan pemanasan untuk semua bidang skalar dalam koleksi.

warmup.scalarIndex

sync | disable

Pengaturan pemanasan untuk semua indeks skalar dalam koleksi.

warmup.vectorField

sync | disable

Pengaturan pemanasan untuk semua bidang vektor dalam koleksi.

warmup.vectorIndex

sync | disable

Pengaturan pemanasan untuk semua indeks vektor dalam koleksi.

Mengonfigurasi pemanasan pada tingkat bidangCompatible with Milvus 2.6.11+

Pemanasan tingkat bidang memberikan perincian terbaik, memungkinkan Anda untuk mengontrol perilaku pemanasan untuk masing-masing bidang. Hal ini berguna ketika bidang tertentu memiliki pola akses yang unik.

Pemanasan tingkat bidang hanya berlaku untuk data mentah bidang, bukan untuk indeks pada bidang tersebut. Untuk mengonfigurasi pemanasan untuk indeks, gunakan konfigurasi tingkat indeks.

Mengatur pemanasan saat membuat bidang

from pymilvus import MilvusClient, DataType

schema = MilvusClient.create_schema()

schema.add_field(
    field_name="id",
    datatype=DataType.INT64,
    is_primary=True
)

schema.add_field(
    field_name="category",
    datatype=DataType.VARCHAR,
    max_length=128,
    warmup="sync"  # Preload this field at load time
)

schema.add_field(
    field_name="embedding",
    datatype=DataType.FLOAT_VECTOR,
    dim=768,
    warmup="disable"  # Do not preload vector raw data
)

Mengubah pengaturan pemanasan pada bidang yang sudah ada

Anda harus mengubah pengaturan bidang sebelum memanggil load(). Mengubah bidang pada koleksi yang dimuat akan menghasilkan kesalahan. Perubahan pada pengaturan pemanasan akan berlaku pada saat Anda memuat koleksi berikutnya.

client.alter_collection_field(
    collection_name="my_collection",
    field_name="category",
    field_params={"warmup": "sync"}
)

Mengonfigurasi pemanasan pada tingkat indeksCompatible with Milvus 2.6.11+

Pemanasan tingkat indeks memungkinkan Anda mengontrol pemuatan awal untuk indeks individual, tidak tergantung pada pengaturan pemanasan bidang yang mendasarinya.

Mengatur pemanasan saat membuat indeks

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

index_params = client.prepare_index_params()

index_params.add_index(
    field_name="embedding",
    index_type="HNSW",
    metric_type="COSINE",
    params={
        "M": 16,
        "efConstruction": 256,
        "warmup": "sync"  # Preload this index at load time
    }
)

index_params.add_index(
    field_name="category",
    index_type="AUTOINDEX",
    params={"warmup": "disable"}  # Do not preload this index
)

client.create_index(
    collection_name="my_collection",
    index_params=index_params
)

Mengubah pengaturan pemanasan pada indeks yang sudah ada

Anda harus mengubah pengaturan indeks sebelum memanggil load(). Mengubah indeks pada koleksi yang sudah dimuat akan menghasilkan kesalahan. Perubahan pada pengaturan pemanasan akan berlaku pada saat Anda memuat koleksi berikutnya.

client.alter_index_properties(
    collection_name="my_collection",
    index_name="embedding",
    properties={"warmup": "sync"}
)

Referensi perilaku pemanasan

Tabel berikut ini meringkas perilaku pemanasan pada berbagai tahap siklus hidup segmen.

Pengaturan Pemanasan

Fase Pemuatan

Fase Pencarian/Permintaan

Fase Pelepasan

sync

Data dimuat ke penyimpanan lokal. Tujuan (disk atau memori) tergantung pada pengaturan mmap.

Query langsung masuk ke cache lokal.

Data cache lokal dihapus.

disable

Data tidak dimuat ke penyimpanan lokal.

Data diambil sesuai permintaan dari penyimpanan objek, lalu ditembolok secara lokal berdasarkan pengaturan mmap.

Data yang ditembolok lokal dihapus.

Interaksi dengan mmap:

Pengaturan Pemanasan

Mmap Diaktifkan

Lokasi Data

sync

true

Disk lokal (localStorage.path/cache/...)

sync

false

Memori lokal

disable

true

Diambil ke disk lokal pada akses pertama

disable

false

Diambil ke memori lokal pada akses pertama

Struktur direktori cache lokal (bila mmap diaktifkan):

Tipe Data

Jalur Direktori

Data bidang skalar/Vektor

localStorage.path/cache/<collection_id>/local_chunk/...

Berkas indeks skalar/Vektor

localStorage.path/cache/<collection_id>/local_chunk/index_files/...

Praktik terbaik

Pemanasan hanya memengaruhi beban awal. Jika data yang di-cache kemudian digusur, kueri berikutnya akan memuat ulang sesuai permintaan.

  • Hindari penggunaan sync secara berlebihan. Memuat terlalu banyak field akan meningkatkan waktu muat dan tekanan cache.

  • Mulailah secara konservatif - aktifkan Pemanasan hanya untuk bidang dan indeks yang sering diakses.

  • Pantau latensi kueri dan metrik cache, lalu perluas pramuat sesuai kebutuhan.

  • Untuk beban kerja campuran, terapkan sync untuk koleksi yang sensitif terhadap kinerja dan disable untuk koleksi yang berorientasi pada kapasitas.