객체 스토리지 기반, MIT 라이선스 벡터 검색 엔진 OpenData Vector 등장!

by DD
2주 전
조회수 0

오픈데이터 벡터(OpenData Vector)는 객체 스토리지를 활용하여 저렴한 비용(월 350달러)으로 1억 개 벡터를 처리하는 MIT 라이선스 벡터 검색 엔진임.

무상태 아키텍처(Stateless Architecture)를 통해 확장성, 내구성을 확보하고, S3와 같은 객체 스토리지를 활용하여 운영 비용을 절감함.

IVF 인덱싱(IVF Indexing), LIRE 압축(LIRE Compaction), 공유 상태(Share Everything)를 통해 객체 스토리지의 성능 한계를 극복함.

커뮤니티에서는 K-means 클러스터링 방식과 고차원 벡터 처리 방식에 대한 기술적 질문이 제기됨.

무상태 아키텍처(Stateless Architecture)의 장점

OpenData Vector는 무상태 아키텍처(Stateless Architecture)를 채택하여 객체 스토리지의 장점을 극대화한다. 데이터 격리 아키텍처(Data Isolation Architecture)를 통해 각 노드는 S3에 저장된 모든 데이터에 접근 가능하며, 노드 간 통신 없이 독립적으로 작동한다. 이러한 설계는 시스템의 단순성을 높여 운영 비용을 절감하고, 장애 발생 시 빠른 복구를 가능하게 한다. 또한, 수평적 확장이 용이하여 트래픽 증가에 유연하게 대응할 수 있다.

IVF 인덱싱(IVF Indexing)과 성능 최적화

OpenData Vector는 객체 스토리지의 높은 지연 시간을 고려하여 IVF 인덱싱(IVF Indexing) 방식을 사용한다. IVF 인덱스는 k-means 알고리즘을 사용하여 벡터를 클러스터로 묶고, 각 클러스터의 중심점을 활용하여 검색 속도를 향상시킨다. IVF 인덱싱(IVF Indexing)은 그래프 기반 인덱스에 비해 배치 로딩(Batch Loading)이 용이하여 객체 스토리지 환경에 적합하다. 하지만, 웜 쿼리(Warm Query)의 경우, 그래프 기반 인덱스보다 성능이 낮을 수 있다.

LIRE 압축(LIRE Compaction)을 통한 데이터 관리

OpenData Vector는 LIRE 압축(LIRE Compaction) 프로토콜을 활용하여 객체 스토리지 환경에서 효율적인 데이터 관리를 수행한다. 객체 스토리지는 Read-Modify-Write 연산을 지원하지 않으므로, LIRE는 append-only 모델을 사용하여 데이터 변경을 처리한다. 새로운 벡터는 가장 가까운 클러스터에 추가되고, 클러스터가 커지면 k-means를 다시 실행하여 클러스터를 분할한다. 이러한 방식은 쓰기 증폭(Write Amplification)을 최소화하고, 높은 쓰기 처리량을 유지하는 데 기여한다.

성능 벤치마크(Performance Benchmark) 분석

벤치마크 결과에 따르면, OpenData Vector는 다양한 데이터 세트에서 준수한 성능을 보여준다. 웜 쿼리(Warm Query)의 경우, 작은 데이터 세트에서는 수 밀리초, 큰 데이터 세트에서는 10밀리초 대의 지연 시간을 기록했다. 콜드 쿼리(Cold Query)의 경우, 최대 1초 이내의 지연 시간을 보였다. Sift100M 데이터 세트를 재색인하는 동안 초당 1,000~12,000개의 벡터를 처리하는 성능을 유지했다. 이러한 성능은 객체 스토리지 기반의 벡터 검색 엔진으로서 경쟁력을 보여주는 지표이다.

K-means 클러스터링(Clustering) 및 고차원 벡터 처리

커뮤니티에서는 OpenData Vector의 K-means 클러스터링 방식과 고차원 벡터 처리 방식에 대한 질문이 제기되었다. 특히, 수백만 개의 벡터와 수천 차원의 벡터를 처리하는 환경에서 K 값(클러스터 개수) 설정과, 쿼리에 가장 가까운 클러스터를 찾는 방법에 대한 질문이 있었다. OpenData Vector는 k-means 알고리즘을 통해 클러스터를 생성하고, 각 클러스터의 중심점을 활용하여 검색을 수행한다. 구체적인 구현 코드는 본문에 포함되지 않았다.

MIT-licensed Vector Search on Object Storage