← Atrás

DiskANN Explorer: Búsqueda vectorial a escala de miles de millones desde SSD

DiskANN mantiene una pequeña copia comprimida conPQ de cada vector en RAM y los vectores completos + el grafo en SSD. La búsqueda recorre el grafo con comparaciones RAM de bajo coste y, a continuación, vuelve a clasificar a los principales candidatos con unas pocas lecturas de disco de alto coste.

Por qué existe « DiskANN »: la barrera de la memoria

RAMPQ códigos (32 B/vec)3.2 GB
DiscoVectores completos + gráfico (3072 B/vec)307.2 GB
100M vectores × dimensiones de « 768 »Disco / RAM ≈ 96×

Un único dispositivo de almacenamiento SSD ocupa muy poco espacio en el disco. El RAM cabe en cualquier portátil. Sin el truco de PQ, necesitarías un servidor con cientos de GB de RAM solo para cargar el conjunto de datos.

R5
Grado del grafo
L8
Conjunto de candidatos
Reordenar5
Lecturas de disco
Velocidad420ms
Por paso
Comparación PQ (RAM) en el conjunto de candidatos reclasificación en disco top-K resultado
Paso actual
30 / 30
Búsqueda completada. Top-3: [1, 28, 27].

Coste hasta el momento

RAM PQ compara20≈ 20 µs
SSD lecturas5≈ 500 µs
Latencia total0.52 ms
Modelado con PQ ≈ 1 µs, SSD ≈ 100 µs. Los números reales dependen del hardware.

Estadísticas de búsqueda

Visitado
20 / 36
Reordenado
5
Top-3
[1, 28, 27]

Cómo funciona « DiskANN »

  1. Construye el grafo « Vamana »: un grafo kNN de una sola capa (grado R) optimizado para una disposición secuencial en disco. Sin jerarquía: solo un gran grafo.
  2. Almacenamiento cuantificado y dividido: cada vector recibe un código « PQ » minúsculo (p. ej., 32 bytes). Los códigos « PQ » se encuentran en RAM. Los vectores completos y las aristas de los grafos se encuentran en SSD.
  3. Recorrido por haces (Beam-walk) con distancias « PQ »: desde un punto de entrada fijo (el medoide), mantén un conjunto de candidatos de tamaño L. Selecciona el mejor, expande sus vecinos y estima las distancias utilizando únicamente los códigos «in-RAM » y « PQ ». No se realizan operaciones de E/S de disco durante el recorrido.
  4. Reordena en el disco a los finalistas: las entradas principales del conjunto de candidatos tenían sus distancias aproximadas mediante PQ. Lee sus vectores completos desde el disco y vuelve a calcular las distancias exactas para fijar la clasificación.
  5. Devuelve top-K. E/S total del disco = un pequeño número de lecturas aleatorias, normalmente menos de 20.

El sector

  • Por qué es escalable: RAM solo contiene códigos comprimidos. Un conjunto de datos de 1.000 millones de vectores con un « PQ » de 32 bytes necesita unos 32 GB RAM — cabe en una sola estación de trabajo.
  • Por qué es más lento que HNSW: SSD las lecturas aleatorias son aproximadamente 100 veces más lentas que RAM. Incluso con solo unas 10 lecturas, la latencia de la consulta viene determinada por el disco.
  • Por qué sigue superando a « IVF_PQ » en cuanto a recuperación: el paso de reordenación recupera los errores de cuantificación que los métodos basados exclusivamente en « PQ » no pueden corregir.

El modelo mental: « PQ » es la prueba económica de «¿es prometedor este vecindario?». Las lecturas de disco son la comprobación costosa de «déjame verificarlo de verdad». « DiskANN » realiza la mayor parte de su trabajo con la prueba económica.

¿Qué es « DiskANN »?

DiskANN es un índice aproximado de vecino más cercano basado en grafos, diseñado para conjuntos de datos que no caben en RAM. Construye un grafo de una sola capa Vamana organizado para un acceso eficiente al disco, mantiene en memoria un pequeño código cuantificado por producto (PQ) para cada vector y almacena los vectores de precisión completa y las aristas del grafo en SSD. Las búsquedas navegan por el grafo utilizando comparaciones económicas in-RAM PQ y solo recurren al disco para reordenar un puñado de finalistas.

En Milvus, DiskANN potencia la opción de índice en disco: las colecciones a escala de miles de millones se pueden consultar en máquinas con decenas —no cientos— de gigabytes de RAM, mientras que el paso de reordenación en disco mantiene la recuperación cercana a la de los índices de grafos en memoria.

Qué controlan los mandos

  • R (grado del grafo, tiempo de compilación): el número máximo de aristas por nodo en el grafo « Vamana ». Un valor de R más alto proporciona mejor conectividad y recuperación, a costa de un grafo más grande en el disco y compilaciones más lentas.
  • L / search_list (tiempo de consulta): el conjunto de candidatos que se mantiene durante la búsqueda por haz —el principal control de recuperación/latencia, equivalente a ef de HNSW. Debe ser, como mínimo, tu top-K.
  • Presupuesto de reordenación: número de finalistas cuyos vectores completos se recuperan de SSD para obtener una puntuación exacta. Cada uno supone una lectura aleatoria del disco, por lo que aquí es donde reside la latencia de la consulta —y también donde se corrigen los errores de aproximación de PQ.

DiskANN vs HNSW vs IVF

Elige « DiskANN » cuando el conjunto de datos (o el consumo de memoria) supere la capacidad de « RAM »: atiende consultas de alta recuperación con una fracción de la memoria, a cambio de una latencia del orden de milisegundos dominada por lecturas de « SSD ». Si todo cabe cómodamente en la memoria, « HNSW » responde más rápido. Si necesitas creaciones rápidas de índices o un ahorro moderado de memoria sin recurrir al disco, las variantes de « IVF » se sitúan en un término medio.

Preguntas frecuentes

¿Cuándo debo utilizar « DiskANN » en lugar de « HNSW »?

Cuando tus vectores ya no caben en RAM —o el RAM para almacenarlos cuesta más de lo que estás dispuesto a pagar—. Mil millones de vectores flotantes de 768 dimensiones necesitan unos 3 TB de memoria para HNSW, pero solo unas decenas de GB de RAM más un SSD con DiskANN. Si el conjunto de datos cabe cómodamente en la memoria, HNSW sigue siendo la opción de menor latencia.

¿Qué hardware necesita « DiskANN »?

Un « NVMe » rápido SSD es el requisito clave, ya que la latencia de la consulta viene determinada por unas pocas lecturas aleatorias del disco (cada una de ~100 µs). Las necesidades de « RAM » son modestas: aproximadamente los códigos « PQ » (p. ej., 32–64 bytes por vector) más los búferes de trabajo.

¿Es « DiskANN » más lento que los índices en memoria como « HNSW »?

Por consulta, sí: normalmente unos pocos milisegundos, frente a menos de un milisegundo para el « HNSW » en memoria, ya que cada reordenación en disco es aproximadamente 100 veces más lenta que un acceso « RAM ». La contrapartida es el coste: « DiskANN » procesa el mismo conjunto de datos con un orden de magnitud menor de « RAM », al tiempo que mantiene la recuperación por encima del 90-95 %.

¿Cómo consigue DiskANN mantener un alto nivel de recuperación a pesar de la compresión « PQ »?

PQ Los códigos solo se utilizan para dirigir el recorrido por el grafo, no para generar puntuaciones finales. Antes de devolver los resultados, DiskANN lee los vectores de precisión completa de los principales candidatos desde SSD y los vuelve a clasificar con exactitud, corrigiendo el error de cuantificación que los índices basados exclusivamente en PQ, como IVF_PQ, no pueden solucionar.

Más información: lee la documentación de «DiskANN » para conocer los requisitos de configuración, o consulta «Index Explained» para obtener la guía de decisión completa.

Sigue explorando