CalentamientoCompatible with Milvus 2.6.4+

Elcalentamiento complementa el almacenamiento por niveles precargando campos o índices seleccionados en la caché antes de que un segmento pueda consultarse. Puede configurar el calentamiento a nivel de clúster, colección o campo/índice individual, lo que permite un control detallado sobre la latencia de la primera consulta y el uso de recursos.

Por qué el calentamiento

La carga lenta en el almacenamiento por niveles mejora la eficiencia al cargar inicialmente sólo los metadatos. Sin embargo, esto puede causar latencia en la primera consulta a datos fríos, ya que los trozos o índices necesarios deben obtenerse del almacenamiento remoto.

Warm Up resuelve este problema almacenando proactivamente en caché los datos críticos durante la inicialización del segmento.

Es especialmente beneficioso cuando:

  • Determinados índices escalares se utilizan con frecuencia en condiciones de filtro.

  • Los índices vectoriales son esenciales para el rendimiento de la búsqueda y deben estar listos inmediatamente.

  • La latencia de arranque en frío tras el reinicio del QueryNode o la carga de un nuevo segmento es inaceptable.

Por el contrario, no se recomienda Warm Up para campos o índices que se consultan con poca frecuencia. Desactivar Warm Up acorta el tiempo de carga del segmento y conserva espacio en la caché, lo que resulta ideal para campos vectoriales grandes o campos escalares no críticos.

Niveles de configuración

Nivel

Alcance

Método de configuración

Prioridad

Campo/índice

Campo o índice único

Métodos SDK:

  • add_field()

  • alter_collection_field()

  • add_index()

  • alter_index_properties()

Más alto

Colección

Todos los campos/índices de una colección

Métodos SDK:

  • create_collection()

  • alter_collection_properties()

Media

Cluster

Todas las colecciones del clúster

milvus.yaml Archivo de configuración

Más bajo (por defecto)

Comportamiento de anulación:

  • Si un campo tiene su propia configuración de calentamiento, esa configuración tiene prioridad sobre las configuraciones a nivel de colección y a nivel de clúster.

  • Si no existe ninguna configuración a nivel de campo o índice, se aplica la configuración a nivel de colección.

  • Si no existen configuraciones a nivel de campo o índice ni a nivel de colección, se aplica la configuración a nivel de cluster.

  • Cuando se utilizan operaciones alter, se aplica el valor alter más reciente.

Configurar el calentamiento a nivel de cluster

El calentamiento a nivel de cluster se configura en el archivo de configuración de Milvus milvus.yaml y se aplica a todas las colecciones del cluster. Esto sirve como línea de base por defecto.

Cada tipo de destino admite dos ajustes:

Calentamiento Configuración

Descripción

Escenario típico

sync

Precarga antes de que el segmento pueda consultarse. El tiempo de carga aumenta ligeramente, pero la primera consulta no incurre en latencia.

Utilizar para datos de rendimiento crítico que deben estar disponibles inmediatamente, como índices escalares de alta frecuencia o índices vectoriales clave utilizados en la búsqueda.

disable

Omitir la carga previa. El segmento se puede consultar más rápidamente, pero la primera consulta puede activar la carga bajo demanda.

Utilícelo para datos de acceso poco frecuente o de gran tamaño, como campos vectoriales sin procesar o campos escalares no críticos.

Ejemplo 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

Parámetro

Warmup Ajuste

Descripción

Caso de uso recomendado

scalarField

sync | disable

Controla si se precargan los datos de los campos escalares.

Utilice sync sólo si los campos escalares son pequeños y se accede a ellos con frecuencia en los filtros. En caso contrario, disable para reducir el tiempo de carga.

scalarIndex

sync | disable

Controla si se precargan los índices escalares.

Utilice sync para índices escalares implicados en condiciones de filtro frecuentes o consultas de rango.

vectorField

sync | disable

Controla si se precargan los datos de campos vectoriales.

Generalmente disable para evitar un uso excesivo de la caché. Active sync sólo cuando los vectores sin procesar deban recuperarse inmediatamente después de la búsqueda (por ejemplo, resultados de similitud con recuperación de vectores).

vectorIndex

sync | disable

Controla si se precargan los índices de vectores.

Utilice sync para los índices vectoriales que son críticos para la latencia de la búsqueda. En cargas de trabajo por lotes o de baja frecuencia, disable para una preparación más rápida de los segmentos.

Configurar el calentamiento a nivel de colecciónCompatible with Milvus 2.6.11+

El calentamiento a nivel de colección le permite anular los valores predeterminados del clúster para una colección específica. Esto es útil cuando una colección tiene diferentes patrones de acceso que la línea de base de todo el clúster.

Configurar el calentamiento al crear una colección

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"
    }
)

Modificar los ajustes de calentamiento en una colección existente

Debe modificar las propiedades de la colección antes de llamar a load(). Alterar una colección cargada devuelve un error. Los cambios en la configuración del calentamiento surtirán efecto la próxima vez que cargue la colección.

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

Referencia de la propiedad:

Propiedad

Ajuste de calentamiento

Descripción

warmup.scalarField

sync | disable

Ajuste de calentamiento para todos los campos escalares de la colección.

warmup.scalarIndex

sync | disable

Ajuste de calentamiento para todos los índices escalares de la colección.

warmup.vectorField

sync | disable

Calentamiento de todos los campos vectoriales de la colección.

warmup.vectorIndex

sync | disable

Calentamiento de todos los índices vectoriales de la colección.

Configurar el calentamiento a nivel de campoCompatible with Milvus 2.6.11+

El calentamiento a nivel de campo proporciona la granularidad más fina, permitiéndole controlar el comportamiento del calentamiento para campos individuales. Esto es útil cuando campos específicos tienen patrones de acceso únicos.

El calentamiento a nivel de campo se aplica sólo a los datos brutos del campo, no a los índices de ese campo. Para configurar el calentamiento de un índice, utilice la configuración a nivel de índice.

Configurar el calentamiento al crear un campo

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
)

Modificar el calentamiento de un campo existente

Debe modificar la configuración del campo antes de llamar a load(). Alterar un campo en una colección cargada devuelve un error. Los cambios en la configuración del calentamiento surtirán efecto la próxima vez que cargue la colección.

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

Configurar el calentamiento a nivel de índiceCompatible with Milvus 2.6.11+

El calentamiento a nivel de índice permite controlar la precarga de índices individuales, independientemente de la configuración de calentamiento del campo subyacente.

Configurar el calentamiento al crear un índice

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
)

Modificar la configuración del calentamiento en un índice existente

Debe modificar la configuración del índice antes de llamar a load(). Alterar un índice en una colección cargada devuelve un error. Los cambios en la configuración de calentamiento surtirán efecto la próxima vez que cargue la colección.

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

Referencia del comportamiento de calentamiento

La siguiente tabla resume el comportamiento del calentamiento en las diferentes etapas del ciclo de vida del segmento.

Configuración de calentamiento

Fase de carga

Fase de búsqueda/consulta

Fase de liberación

sync

Los datos se cargan en el almacenamiento local. El destino (disco o memoria) depende de la configuración mmap.

La consulta llega directamente a la caché local.

Se borran los datos de la caché local.

disable

Los datos no se cargan en el almacenamiento local.

Los datos se obtienen bajo demanda del almacenamiento de objetos y, a continuación, se almacenan localmente en caché en función de la configuración de mmap.

Se borran los datos de la caché local.

Interacción con mmap:

Configuración de calentamiento

Mmap Activado

Ubicación de los datos

sync

true

Disco local (localStorage.path/cache/...)

sync

false

Memoria local

disable

true

Obtenido en el disco local en el primer acceso

disable

false

Obtenido en la memoria local en el primer acceso

Estructura de directorio de caché local (cuando mmap está activado):

Tipo de datos

Ruta de directorio

Datos de campo escalares/vectoriales

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

Archivos de índice escalar/vectorial

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

Buenas prácticas

El calentamiento sólo afecta a la carga inicial. Si los datos almacenados en caché son desalojados posteriormente, la siguiente consulta los recargará bajo demanda.

  • Evite el uso excesivo de sync. Precargar demasiados campos aumenta el tiempo de carga y la presión sobre la caché.

  • Empiece de forma conservadora: active Warm Up sólo para los campos e índices a los que se accede con frecuencia.

  • Supervise la latencia de la consulta y las métricas de la caché y, a continuación, amplíe la precarga según sea necesario.

  • Para cargas de trabajo mixtas, aplique sync a las colecciones sensibles al rendimiento y disable a las orientadas a la capacidad.