kelindar/search
Go library for embedded vector search and semantic embeddings using llama.cpp
해결하는 문제
이 프로젝트는 중소 규모의 벡터 데이터셋을 관리하고 검색하기 위한 경량의 정확한 코사인 유사도 인덱스를 제공합니다. 무거운 외부 데이터베이스 없이도 인덱싱과 검색을 위한 네이티브 Go 구현을 제공하며, 로컬 및 클라우드 기반 공급자로부터 임베딩을 생성하는 통합 기능을 지원합니다.
작동 방식
이 라이브러리는 모든 벡터에 대해 선형 스캔을 수행하여 코사인 유사도를 기준으로 가장 관련성 높은 결과를 찾는 핵심 검색 인덱스로 구성됩니다. 인덱스에 데이터를 넣기 위해 두 가지 선택적 임베딩 모듈을 제공합니다.
- 로컬 임베딩 (Local Embeddings):
purego를 통해llama.cpp를 사용하여 CPU 또는 GPU에서 로컬로 GGUF 모델의 임베딩을 생성합니다. - 클라우드 임베딩 (Cloud Embeddings): OpenAI 호환 API(OpenRouter 포함)에 연결하여 텍스트 임베딩을 생성합니다.
핵심 인덱싱 로직은 임베딩 공급자와 분리되어 있으므로, 사용자는 원하는 소스에서 직접 벡터를 제공할 수도 있습니다.
대상 사용자
전체 규모의 벡터 데이터베이스를 운영하는 오버헤드 없이 벡터 검색 기능을 구현해야 하는 Go 개발자, 특히 선형 스캔으로 처리 가능한 규모의 데이터셋을 다루는 경우에 적합합니다.
주요 특징
- 제로 의존성 코어: 메인 검색 패키지는 네이티브 라이브러리 요구 사항이나 임베딩 모듈에 대한 의존성이 없습니다.
- 유연한 임베딩 옵션: 로컬 GGUF 모델과 클라우드 API를 모두 지원합니다.
- 영속성: 인덱스를 파일로 읽고 쓰는 내장 메서드를 포함합니다.
- 로컬 GPU 지원: 로컬 임베딩은 GPU 가속(예: Vulkan)을 사용하여 컴파일할 수 있습니다.
- 공급자 독립성: 간단한 인터페이스를 통해 임베딩 공급자를 쉽게 교체할 수 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트