milvus-logo
LFAI
Home
  • Conceptos

Índice en disco

Este artículo presenta un algoritmo de indexación en disco llamado DiskANN. Basado en gráficos Vamana, DiskANN permite realizar búsquedas eficaces en grandes conjuntos de datos.

Para mejorar el rendimiento de las consultas, puede especificar un tipo de índice para cada campo vectorial.

Actualmente, un campo vectorial sólo admite un tipo de índice. Milvus elimina automáticamente el índice antiguo al cambiar el tipo de índice.

Requisitos previos

Para utilizar DiskANN, tenga en cuenta que

  • DiskANN está desactivado por defecto. Si prefiere el índice en memoria al índice en disco, se recomienda desactivar esta función para obtener un mejor rendimiento.
    • Para desactivarla, puede cambiar queryNode.enableDisk a false en su archivo de configuración de milvus.
    • Para habilitarla de nuevo, puede cambiar queryNode.enableDisk por true.
  • La instancia de Milvus funciona en Ubuntu 18.04.6 o una versión posterior.
  • La ruta de datos de Milvus debería montarse en un SSD NVMe para un rendimiento completo:
    • Para una instancia Milvus Standalone, la ruta de datos debe ser /var/lib/milvus/data en el contenedor donde se ejecuta la instancia.
    • Para una instancia Milvus Cluster, la ruta de datos debe ser /var/lib/milvus/data en los contenedores donde se ejecutan los QueryNodes y los IndexNodes.

Límites

Para utilizar DiskANN, asegúrese de que

  • Utilice sólo vectores flotantes con al menos 1 dimensión en sus datos.
  • Utilice únicamente la distancia euclidiana (L2), el producto interior (IP) o COSINE para medir la distancia entre vectores.

Parámetros de índice y búsqueda

  • Parámetros de creación de índices

    Al crear un índice DiskANN, utilice DISKANN como tipo de índice. No son necesarios parámetros de índice.

  • Parámetros de búsqueda

    ParámetroDescripciónRangoValor por defecto
    search_listTamaño de la lista de candidatos, un tamaño mayor ofrece una mayor tasa de recuperación con un rendimiento degradado.[topk, int32_max]16

DiskANN es ajustable. Puede modificar los parámetros relacionados con DiskANN en ${MILVUS_ROOT_PATH}/configs/milvus.yaml para mejorar su rendimiento.

...
DiskIndex:
  MaxDegree: 56
  SearchListSize: 100
  PQCodeBugetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
ParámetroDescripciónRango de valoresValor por defecto
MaxDegreeGrado máximo del gráfico Vamana.
Un valor mayor ofrece una mayor tasa de recuperación, pero aumenta el tamaño y el tiempo de creación del índice.
[1, 512]56
SearchListSizeTamaño de la lista de candidatos.
Un valor mayor incrementa el tiempo empleado en construir el índice pero ofrece una mayor tasa de recuperación.
Ajústalo a un valor menor que MaxDegree a menos que necesites reducir el tiempo de construcción del índice.
[1, int32_max]100
PQCodeBugetGBRatioLímite de tamaño del código PQ.
Un valor mayor ofrece una mayor tasa de recuperación, pero aumenta el uso de memoria.
(0.0, 0.25]0.125
SearchCacheBudgetGBRatioRelación entre los números de los nodos almacenados en caché y los datos sin procesar.
Un valor mayor mejora el rendimiento de la creación de índices, pero aumenta el uso de memoria.
[0.0, 0.3)0.10
BeamWidthRatioRelación entre el número máximo de peticiones IO por iteración de búsqueda y el número de CPU.[1, max(128 / número de CPU, 16)]4.0

Solución de problemas

  • ¿Cómo solucionar el error io_setup() failed; returned -11, errno=11:Resource temporarily unavailable?

    El kernel de Linux proporciona la característica de E/S asíncrona no bloqueante (AIO) que permite a un proceso iniciar múltiples operaciones de E/S simultáneamente sin tener que esperar a que ninguna de ellas se complete. Esto ayuda a aumentar el rendimiento de las aplicaciones que pueden solapar el procesamiento y la E/S.

    El rendimiento puede ajustarse utilizando el archivo virtual /proc/sys/fs/aio-max-nr en el sistema de archivos proc. El parámetro aio-max-nr determina el número máximo de peticiones concurrentes permitidas.

    El valor por defecto de aio-max-nr es 65535, puede configurarse hasta 10485760.

Traducido porDeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

¿Fue útil esta página?