본문 바로가기
카테고리 없음

HNSW는 무엇일까 (ANN의 대표 알고리즘)

by by_merry 2026. 4. 30.

ANN까지 이해하고 나면 또 하나 궁금해진다. “그래서 실제로는 어떤 방식으로 이렇게 빠르게 찾는 거지?” 나도 이 부분이 가장 헷갈렸다. 단순히 ‘근사적으로 찾는다’는 개념은 이해했는데, 그걸 실제로 어떻게 구현하는지는 감이 잘 안 왔다. 그러다가 HNSW라는 알고리즘을 보고 나서야, 아 이런 구조로 빠르게 찾는구나 싶었다.

 

HNSW는 벡터를 ‘그래프’ 형태로 연결해서 탐색한다

HNSW(Hierarchical Navigable Small World)는 이름은 복잡해 보이지만, 핵심 아이디어는 의외로 직관적이다. 데이터를 그냥 리스트로 두는 것이 아니라, 서로 비슷한 벡터들끼리 연결해서 하나의 네트워크처럼 만든다.

각 벡터는 노드가 되고, 비슷한 벡터끼리 연결된다. 그래서 어떤 노드에서 시작하더라도, 주변을 따라가다 보면 점점 더 가까운 노드로 이동할 수 있는 구조다.

이걸 처음 봤을 때 든 생각이 “지도에서 길 찾는 느낌이랑 비슷하다”는 거였다. 목적지를 정확히 모르는 상태에서도, 가까운 방향으로 계속 이동하면 결국 도착하게 되는 방식이다.

즉, 모든 데이터를 다 비교하는 것이 아니라, 현재 위치에서 가장 가까운 방향으로 계속 이동하면서 탐색한다. 이게 HNSW의 핵심이다.

계층 구조를 사용해서 더 빠르게 탐색한다

HNSW가 더 빠른 이유는 단순한 그래프 구조 때문만은 아니다. 이름에서도 알 수 있듯이, ‘계층(Hierarchical)’ 구조를 함께 사용한다.

이걸 쉽게 설명하면 이렇게 이해할 수 있다.

  • 위층 → 전체를 빠르게 훑는 단계
  • 아래층 → 정확하게 찾는 단계

처음에는 상위 레벨에서 대략적인 위치를 잡고, 점점 아래 레벨로 내려오면서 더 정확한 탐색을 한다. 그래서 처음부터 모든 데이터를 세세하게 보는 것이 아니라, 점점 좁혀가는 방식이다.

나도 이 구조를 이해하고 나서 “아 그래서 빠르구나”라는 느낌이 왔다. 처음부터 정확하게 찾으려고 하면 느릴 수밖에 없는데, 이렇게 단계적으로 접근하면 훨씬 효율적이다.

특히 데이터가 많을수록 이 방식의 효과가 더 크게 느껴진다.

실제로 HNSW가 쓰이는 이유를 체감한 순간

이론만 보면 그냥 “빠르다” 정도로 느껴지는데, 실제로 벡터 검색을 해보면 차이가 확 느껴진다. 데이터가 많아질수록 단순 비교 방식은 거의 사용이 불가능한 수준이 된다.

반면 HNSW 기반 검색은 속도가 크게 떨어지지 않는다. 그리고 결과도 생각보다 꽤 정확하다. 완벽하게 가장 가까운 값은 아닐 수 있지만, 실제로 사용하는 데는 전혀 문제가 없는 수준이다.

이걸 보면서 느낀 건 하나였다. AI 시스템에서 중요한 건 항상 ‘완벽함’이 아니라 ‘속도와 효율’이라는 점이다. 특히 RAG처럼 실시간으로 결과를 만들어야 하는 구조에서는, 빠른 검색이 거의 필수다.

그래서 대부분의 벡터 데이터베이스가 HNSW를 기본으로 사용하는 이유도 자연스럽게 이해가 됐다. 단순히 이론적으로 좋은 알고리즘이 아니라, 실제 서비스에서 검증된 방식이라는 느낌이 강했다.

한 줄로 정리하면 HNSW는 벡터들을 그래프로 연결하고 계층 구조를 활용해, 빠르게 가까운 데이터를 찾아가는 ANN의 대표 알고리즘이다.