unum-cloud/USearch

Fast Open-Source Search & Clustering engine × for Vectors & Arbitrary Objects × in C++, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolfram 🔍

해결하는 문제

USearch는 FAISS와 같은 기존 벡터 검색 라이브러리보다 더 작고 빠르며 이식성이 뛰어나도록 설계된 고성능 유사도 검색 및 클러스터링 엔진입니다. 무거운 의존성 없이 다양한 프로그래밍 언어와 하드웨어 플랫폼에서 벡터(임베딩)의 최근접 이웃을 효율적으로 찾을 수 있는 방법을 제공합니다.

작동 원리

USearch는 근사 최근접 이웃 검색을 위한 HNSW (Hierarchical Navigable Small World) 알고리즘을 구현합니다. SIMD (Single Instruction, Multiple Data)와 사용자 정의 메트릭을 위한 JIT 컴파일을 사용하여 성능을 최적화합니다. 메모리 사용량을 줄이기 위해 반정밀도(bf16, f16) 및 쿼터 정밀도 형식을 포함한 광범위한 숫자 유형(다운캐스팅 및 양자화)을 지원합니다. 또한 메모리 매핑을 통해 디스크에서 직접 인덱스를 제공할 수 있어 전체 인덱스를 RAM에 로드할 필요가 없습니다.

대상 사용자

의미론적 검색이 필요한 AI 애플리케이션, 유전체학 또는 화학 애플리케이션(이진 Tanimoto/Sorensen 계수 사용)을 구축하는 개발자, 그리고 기존 데이터베이스나 크로스 플랫폼 애플리케이션(iOS, Android, WebAssembly)에 벡터 검색을 통합해야 하는 개발자를 위한 도구입니다.

주요 특징

  • 극강의 성능: FAISS 대비 최대 10배 빠른 인덱싱 속도와 훨씬 빠른 브루트 포스 검색 성능을 제공합니다.
  • 폭넓은 호환성: Python, Rust, C++, Go, Java를 포함한 10개 이상의 언어에 대한 네이티브 바인딩을 지원합니다.
  • 메모리 효율성: 최대 1조 개의 항목을 인덱싱할 수 있는 uint40_t를 지원하며, 다양한 저정밀도 데이터 유형을 통해 RAM 사용량을 절약합니다.
  • 유연한 메트릭: Numba, Cppyy 또는 PeachPy를 통해 임의의 사용자 정의 메트릭을 지원합니다.
  • 디스크 기반 서비스: 인덱스를 RAM에 로드하지 않고 디스크에서 직접 조회할 수 있어 클라우드 인프라 비용을 절감할 수 있습니다.
  • 통합 클러스터링: K-Nearest Neighbors 클러스터링 및 하위 클러스터링 기능을 내장하고 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트