1yefuwang1/vectorlite
Fast, SQL powered, in-process vector search for any language with an SQLite driver
해결하는 문제
Vectorlite는 SQLite용 런타임 로드 가능한 확장 기능으로, 빠른 벡터 검색 기능을 추가합니다. 개발자는 별도의 독립형 벡터 데이터베이스 없이도 SQL 인터페이스 내에서 근사 최근접 이웃(ANN) 검색을 직접 수행할 수 있으며, Windows, MacOS, Linux에서 높은 성능을 유지할 수 있습니다.
작동 방식
이 프로젝트는 hnswlib 라이브러리를 백엔드로 사용하여 효율적인 인덱싱과 검색을 구현한 SQLite 가상 테이블 모듈을 구현합니다. Google의 highway 라이브러리를 사용해 SIMD 가속 벡터 거리 계산을 수행하여 고차원 벡터에 대한 계산을 크게 가속화합니다. 사용자는 벡터용 가상 테이블을 생성하고, 표준 SQL을 사용해 데이터를 삽입하며, knn_search 및 knn_param와 같은 특정 함수를 사용해 L2, 코사인, 또는 내적 거리 기반으로 가장 가까운 벡터를 검색할 수 있습니다.
대상 사용자
별도의 벡터 데이터베이스 서버를 관리하는 오버헤드 없이 로컬 데이터베이스에 벡터 검색 기능을 추가하고자 하는 SQLite 사용자에게 적합합니다.
주요 특징
- 고성능: ANN 검색에 HNSW를 사용하고 Google Highway를 통해 SIMD 가속을 제공하여 유사한 SQLite 확장 기능보다 훨씬 빠른 쿼리 속도를 제공합니다.
- 크로스플랫폼: Windows, Linux, MacOS(x64 및 ARM)용으로 사전 컴파일되어 있습니다.
- 사용자 정의 가능:
ef_construction및M과 같은 HNSW 파라미터를 완전히 제어하여 속도와 정확도의 균형을 조절할 수 있습니다. - 메타데이터 필터링:
rowid필터에 대한 프레디케이트 푸시다운을 지원하여, 한 번의 쿼리로 벡터 검색과 메타데이터 필터링을 결합할 수 있습니다. - 지속성: SQL 명령어를 통해 벡터 인덱스를 디스크에 저장하고 불러올 수 있습니다.
- 유연한 API: 벡터의 JSON 직렬화/역직렬화를 위한 헬퍼 함수를 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트