HNSW

HNSW

Hierarchical Navigable Small World (HNSW) is a graph-based data structure for Approximate Nearest Neighbor (ANN) search. It builds a multi-layered hierarchy of proximity graphs. The top layer has long-range links for fast global routing, while the bottom layer has short-range links for local accuracy.

Complexity Profile

CaseComplexity
Best CaseO(log N)
Average CaseO(log N)
Worst CaseO(N)
Space ComplexityO(N * D + M * N)

Code Implementation

# Conceptual traversal of HNSW layers
def search_hnsw(query, index, k):
    enter_point = index.enter_node
    # Traverse from top layer down to bottom layer
    for layer in reversed(range(index.num_layers)):
        enter_point = search_layer(query, enter_point, ef=1, layer=layer)
        
    # Get top-k nearest neighbors on bottom layer
    nearest_neighbors = search_layer(query, enter_point, ef=index.ef_search, layer=0)
    return nearest_neighbors[:k]

Real-World Applications

  • High-performance vector databases (Milvus, Pinecone, Qdrant).
  • Million-scale semantic search systems requiring sub-50ms latencies.
  • Large-scale recommendation system index engines.