Knowhere 2.0의 경이로움 탐험하기
따끈따끈한 소식입니다. Milvus 2.3이 판도를 바꿀 다양한 업데이트와 함께 출시되었습니다. 이러한 개선 사항의 최전선에는 Milvus를 새로운 차원으로 끌어올릴 것을 약속하는 혁신적인 업그레이드인 Knowhere 2.0이 있습니다.
이 블로그 게시물에서 Knowhere 2.0을 깊이 있게 살펴보며, 벡터 데이터베이스에서 두드러진 힘으로 만들어 주는 획기적인 기능, 성능 최적화, 설계 원칙을 함께 탐구해 보세요.
Knowhere란 무엇인가요?
Knowhere는 Milvus의 핵심 벡터 검색 엔진입니다. 벡터 데이터베이스를 광활한 마블 유니버스라고 상상해 보세요. Knowhere는 그 궁극의 본부입니다. Knowhere의 주요 임무는 낮은 지연 시간으로 인덱스를 구축하여 근사 최근접 이웃 검색(ANNS)을 수행하는 것입니다.
Knowhere 2.0과 새로운 기능
저희는 2022년 7월부터 Knowhere의 구조 개편과 업그레이드를 진행해 왔습니다. 끊임없는 논의, 설계, 개발, 테스트 끝에 Knowhere 2.0은 2023년 8월 말 Milvus 2.3과 함께 처음 공개되었습니다. 이 새로운 버전은 GPU 인덱스, Cosine similarity, ScaNN 인덱스, Arm 아키텍처 지원을 포함한 다양한 개선 사항을 제공합니다. 업그레이드된 Knowhere는 사용자와 개발자에게 이점을 제공하며, Milvus의 강력한 핵심 요소가 됩니다. 다음으로 주요 기능을 살펴보겠습니다.
GPU 인덱스 지원
Nvidia는 자사의 벡터 검색 라이브러리인 RAFT의 GPU_FLAT 및 GPU_IVFPQ 인덱스를 Knowhere 2.0에 기여했습니다. 이 추가로 인덱스 검색이 크게 가속화되었으며, Milvus는 Nvidia A100에서 SIFT1M 기준 거의 70배에 달하는 놀라운 처리량 향상을 달성했습니다.
Milvus QPS GPU vs. CPU
GPU 인덱스에 대한 자세한 내용은 Milvus 문서를 참조하세요.
Cosine similarity 지원
이전 버전의 Knowhere에서는 사용자가 Cosine similarity를 사용하기 위해 벡터 삽입 전에 Inner Product를 활용하고 벡터를 정규화해야 했습니다. 이 과정은 비용이 매우 많이 들고 접근하기 어려웠으며, 사용자에게 더 높은 이론적 지식을 요구했습니다.
Knowhere 2.0은 Cosine distance를 기본적으로 지원하고, 라이브러리 내에서 들어오는 벡터를 자동으로 정규화하며, 해당 인덱스 유형과 매칭하여 사용자 경험을 크게 향상시킵니다.
ScaNN 인덱스 지원
ScaNN 또는 FastScan은 FAISS에서 구현한 오픈 소스 근사 최근접 이웃(ANN) 인덱스입니다. 더 작은 PQ 인코딩과 해당 명령어 세트를 사용해 CPU 레지스터에 접근함으로써 뛰어난 인덱싱 성능을 제공합니다.
Knowhere 2.0은 이제 ScaNN 인덱스를 기본적으로 지원합니다. Knowhere 2.0을 통해 Milvus 2.3은 Cohere 데이터셋에서 약 95%의 recall rate로 IVF_FLAT의 7배, HNSW의 1.2배에 달하는 QPS를 달성합니다.
ARM 아키텍처 지원
ARM 아키텍처는 x86 아키텍처에 비해 비용 효율성이 뛰어난 것으로 알려져 있습니다. ARM은 성능은 다소 낮지만 더 단순한 설계와 명령어 세트를 갖추고 있어 점점 더 인기를 얻고 있습니다. 예를 들어 동일한 CPU 사양(예: 1 vCPU 및 16GB RAM)의 ARM 인스턴스는 AWS 플랫폼에서 x86 인스턴스보다 약 15% 저렴합니다.
Knowhere 2.0에서 ARM 아키텍처를 지원함에 따라, 사용자는 이제 이 아키텍처에서 상위 계층 서비스를 실행하고 구축할 수 있습니다.
범위 검색 지원
최근접 이웃을 찾는 방법에는 K Nearest Neighbor (KNN)와 Range Search 두 가지가 있습니다. KNN은 벡터 컬렉션 "X" 내에서 쿼리 벡터 "q"와 가장 가까운 "k"개의 벡터를 찾습니다. 반면 Range Search에는 지정된 "k"가 없으며, 대신 벡터 컬렉션 "X" 내에서 쿼리 벡터 "q"로부터 특정 거리(반경) 이내에 있는 모든 벡터를 반환합니다.
Knowhere 2.0은 HNSW, DiskANN, IVF 인덱스와 같은 라이브러리의 여러 인덱스에 대해 range search를 지원합니다. 이 기능을 통해 사용자는 쿼리 중 입력 벡터와 Milvus에 저장된 벡터 간의 거리를 지정할 수 있습니다.
최적화된 필터 쿼리
스칼라와 벡터가 혼합된 쿼리에서는 일부 벡터를 필터링할 수 있습니다. Knowhere 2.0은 HNSW에 대한 필터 벡터 쿼리를 크게 개선하여 이전 버전과 비교해 최대 6배에서 80배의 성능 향상을 달성했습니다.
코드 구조 및 컴파일 개선
Knowhere 2.0은 C++ 클래스 상속을 단순화하고, 새로운 인덱스 통합을 위해 proxy 패턴을 사용하며, Config 모듈을 리팩터링하고, 간소화된 컴파일을 위해 Conan을 패키지 관리자로 채택하며, 정밀한 스레드 제어를 위해 Folly의 thread pool을 활용합니다. 이러한 모든 개선 사항은 Milvus 사용을 더 간단하게 만듭니다.
MMap 지원
과거에는 일부 사용자가 대규모 데이터셋으로 인해 메모리 공간 제약을 겪었고, 이는 저장할 수 있는 인덱스에 영향을 미쳤습니다. 그러나 Knowhere 2.0의 도입으로 Milvus는 이제 Memory Mapping (MMap)을 지원하여 대용량 파일을 메모리에 자동으로 매핑할 수 있습니다. 이 새로운 기능을 통해 사용자는 메모리가 충분하지 않더라도 대규모 인덱스 데이터에 액세스할 수 있습니다.
원본 벡터 검색 지원
검색을 완료한 후, 사용자는 추가적인 맞춤형 계산이나 필터링을 위해 반환된 ID를 기반으로 원본 벡터에 액세스해야 할 수 있습니다. Knowhere 2.0을 사용하면 사용자가 인덱스에서 원본 벡터를 직접 검색할 수 있어, S3와 같은 원격 스토리지에서 가져오는 것에 비해 지연 시간이 줄어듭니다.
Knowhere 2.0 기능 및 개선 사항에 대한 자세한 내용은 Knowhere 2.0 Release Notes를 참조하세요.
Knowhere에 기여해 주세요!
Knowhere는 지속적으로 발전하고 있으며, 여러분의 피드백은 중요합니다. 귀중한 제안이나 아이디어가 있다면 주저하지 말고 Knowhere에 기여 repository해 주세요.
계속 읽기

From Vector Database to Vector Lakebase
Zilliz offers a fully managed Vector Lakebase powered by Milvus, unifying real-time vector search, lake-scale discovery, and Al data operations.

Notion's Vector Search Is Excellent. Their Next Problem Is Harder.
Notion solved vector search scaling in two years. The next bottleneck — offline context engineering, unified data, and the real-time/offline gap — is harder.

AI Agents Are Quietly Transforming E-Commerce — Here’s How
Discover how AI agents transform e-commerce with autonomous decision-making, enhanced product discovery, and vector search capabilities for today's retailers.



