← Atrás

HNSW Explorer: «Small World» jerárquico y navegable, visualizado

Observa cómo avanza una búsqueda a través del gráfico en capas, desde la capa superior dispersa (autopistas) hasta la capa inferior densa (carreteras locales). Arrastra el punto de consulta en la Capa 0 y ajusta M / ef para ver cómo cambia el gráfico.

M4
Número máximo de vecinos por nodo
ef8
Conjunto de candidatos de la capa 0
Velocidad450ms
Por paso
Paso actual
14 / 14
Búsqueda completada. Top-3: [3, 10, 4].

Estadísticas de búsqueda

Visitado
17 / 30
Capas
4
Entrada
Nodo 0
Top-3
[3, 10, 4]

Distribución de capas

L3
2
L2
2
L1
7
L0
30

Cómo funciona « HNSW »

  1. Grafo en capas: a cada nodo se le asigna aleatoriamente una capa máxima mediante una distribución exponencial. La mayoría de los nodos solo se encuentran en la capa 0; muy pocos llegan a la cima.
  2. Dentro de cada capa: cada nodo se conecta con sus vecinos más cercanos M. Las capas superiores son dispersas (pocos nodos, aristas largas = «autopistas»). La capa 0 es densa (todos los nodos, aristas cortas = «carreteras locales»).
  3. La búsqueda comienza en la parte superior: desde un punto de entrada fijo, avanza de forma codiciosa hacia el vecino más cercano a la consulta y repite el proceso hasta que no haya mejora.
  4. Despliega una capa y repite: la posición de la capa anterior se convierte en el inicio del recorrido de la siguiente capa. Cada despliegue refina el resultado con aristas de mayor detalle.
  5. Capa 0 con « ef »: en la capa inferior, en lugar de detenerse en el primer mínimo local, « HNSW » mantiene un conjunto de ef mejores candidatos y amplía sus vecindades. Es ef → mayor precisión, pero más lento.

Por qué es rápido: las capas superiores actúan como un índice sobre el índice; se recorren enormes distancias en solo unos pocos saltos y, a continuación, se amplía la imagen. Para N puntos, la búsqueda recorre aproximadamente O(log N) nodos en lugar de N.

¿Qué es « HNSW »?

HNSW (Hierarchical Navigable Small World) es un algoritmo aproximado de vecino más cercano basado en grafos. Organiza los vectores en una pila de grafos de «mundo pequeño» navegables: capas superiores dispersas con aristas de largo alcance para el enrutamiento aproximado, y una capa inferior densa con aristas cortas para el recorrido final de alta precisión. La búsqueda avanza de forma codiciosa hacia la consulta en cada capa y, a continuación, desciende, visitando aproximadamente O(log N) nodos en lugar de escanear todos los N.

HNSW es el índice vectorial en memoria más utilizado y el índice de grafos predeterminado en Milvus. Milvus también ofrece HNSW_SQ y HNSW_PQ variantes que cuantifican los vectores almacenados para reducir el consumo de memoria a costa de una ligera pérdida de recuperación.

HNSW parámetros en Milvus

  • M (tiempo de construcción): el número máximo de aristas por nodo, el mismo control que el deslizador anterior. Los valores típicos oscilan entre 8 y 64. Un valor M más alto mejora la recuperación y la conectividad del grafo, pero aumenta el consumo de memoria de forma lineal y ralentiza la construcción.
  • efConstruction (tiempo de construcción): el tamaño del conjunto de candidatos utilizado al insertar nodos. Los valores más altos generan un grafo de mejor calidad (mayor recuperación alcanzable) a costa de una construcción más lenta del índice. Los valores típicos oscilan entre 100 y 500.
  • ef / ef_search (tiempo de consulta): el conjunto de candidatos que se mantiene durante el recorrido de la Capa 0 —el principal control de recuperación/latencia en el momento de la búsqueda—. Debe ser, como mínimo, tu top-K. Auméntalo hasta que la recuperación se estabilice; la latencia crece de forma aproximadamente lineal con él.

HNSW vs IVF vs DiskANN

HNSW Normalmente ofrece la mejor latencia de consulta con una alta recuperación para la búsqueda en memoria; por eso es la opción predeterminada cuando el conjunto de datos (más la sobrecarga del grafo) cabe en RAM. Sus costes son la memoria y el tiempo de construcción: el grafo añade una sobrecarga apreciable por vector, y las inserciones son más lentas que la asignación k-means de IVF. Elige IVF cuando necesites creaciones de índices rápidas o una cuantificación agresiva, y DiskANN cuando el conjunto de datos sea demasiado grande para RAM pero sigas necesitando una alta recuperación.

Preguntas frecuentes

¿Qué controla el parámetro M en HNSW?

M limita el número de aristas que cada nodo conserva por capa. Un valor mayor de M mejora la conectividad del grafo —mayor recuperación y enrutamiento más robusto—, pero la memoria crece linealmente con M y la creación de índices se ralentiza. Los valores entre 8 y 64 cubren la mayoría de las cargas de trabajo; entre 16 y 32 suele ser el punto óptimo.

¿Cuál es la diferencia entre ef y efConstruction?

Ambos son tamaños del conjunto de candidatos, que se aplican en momentos diferentes. La « efConstruction » se utiliza durante la construcción del índice: determina con qué exhaustividad cada nodo insertado busca vecinos, por lo que controla la calidad del grafo. La « ef » (ef_search) se utiliza en el momento de la consulta: controla la amplitud de la búsqueda en la Capa 0, sacrificando latencia a cambio de recuperación en cada consulta.

¿Cuánta memoria necesita un índice « HNSW »?

Aproximadamente los vectores sin procesar más el grafo: unos d × 4 bytes por vector para datos float32, más del orden de M × 2 × 8 bytes de aristas por nodo. Para implementaciones con limitaciones de memoria, Milvus ofrece HNSW_SQ y HNSW_PQ, que cuantifican los vectores almacenados, o DiskANN, que traslada los vectores completos a SSD.

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

Utiliza « HNSW » cuando la prioridad sea la latencia de la consulta con una alta recuperación y el índice quepa en la memoria; suele ser la mejor opción en ese caso. Prefiere « IVF » cuando reconstruyas índices con frecuencia (la creación es mucho más rápida) o cuando se combine con la cuantización « SQ8 » / «PQ » para ajustarse a un presupuesto de memoria limitado.

Más información: lee la documentación de «HNSW » para conocer los parámetros exactos del índice, o consulta «Index Explained» para obtener la guía de decisión completa.

Sigue explorando