horosvec, 2,600만 문서 검색을 가볍게 돌리는 Go 벡터 인덱스

horosvec는 문서 검색용 인덱스를 별도 서버 없이 앱 안에 넣어 쓰는 오픈소스 도구다. 2,600만 개 항목 규모의 을 CPU에서 밀리초 단위로 처리하는 것을 목표로 한다. 모든 데이터는 하나의 파일에 저장되고, 구현은 순수 Go로 되어 있어 CGO 없이 정적 실행 파일로 배포할 수 있다.

보통 은 별도 검색 서버, 네이티브 라이브러리, 운영 설정이 필요하지만, horosvec는 그 부담을 줄이는 쪽을 택했다. 검색 방식은 모든 문서를 하나씩 비교하지 않고, Vamana라는 그래프 구조를 따라 가까운 후보를 빠르게 찾아간다. 또 불필요한 연결을 줄이면서도 먼 곳으로 건너뛰는 길을 남겨, 검색이 엉뚱한 근처에 갇히지 않게 한다.

라이선스는 MIT라서 상업용 프로젝트에도 비교적 쓰기 쉽다.

핵심 포인트

  • horosvec는 순수 Go로 만든 내장형 인덱스다.
  • 인덱스 상태를 하나의 파일에 저장한다.
  • CGO가 필요 없어 정적 실행 파일 배포에 유리하다.
  • 2,600만 개 항목 규모의 을 CPU에서 밀리초 단위로 처리하는 방향을 내세운다.
  • Vamana 그래프 방식을 써서 모든 문서를 훑지 않고 가까운 후보를 찾아간다.
원문 보기