Repolode
kelindar

kelindar/search

정확한 코사인 유사도 벡터 검색을 지원하는 Go 라이브러리로, llama.cpp를 통한 로컬 GGUF 임베딩과 OpenAI 호환 API를 통한 클라우드 임베딩을 선택적으로 사용할 수 있습니다.

스타
561
포크
24
열린 이슈
5
마지막 커밋
2개월 전

어떤 프로젝트인가요?

kelindar/search는 메모리 내 인덱스에 벡터를 저장하고 코사인 유사도로 가장 유사한 항목을 찾는 Go 라이브러리입니다. 핵심 패키지에는 네이티브 종속성이 없으며, 인덱싱과 검색, 영속성을 자체적으로 처리하므로 정확한 전체 스캔으로 충분한 소규모 및 중간 규모 데이터셋에 적합합니다.

임베딩 제공자는 별도 모듈로 제공됩니다. llama 패키지는 purego를 사용해 llama.cpp로 MiniLM 같은 로컬 GGUF 모델을 실행하며, 기본적으로 CPU를 사용하고 GPU 레이어를 선택적으로 지원합니다. openai 패키지는 표준 라이브러리만 사용해 OpenRouter를 비롯한 OpenAI 호환 임베딩 엔드포인트를 호출합니다. []float32를 반환하는 함수라면 작은 인터페이스를 통해 인덱스에 연결할 수도 있습니다.

프로젝트는 독립적인 Go 모듈로 나뉘어 있어 애플리케이션은 사용하는 제공자만 가져오면 됩니다. 로컬 임베딩을 사용하려면 먼저 Linux, macOS 또는 Windows용 llama.cpp 래퍼 라이브러리를 빌드해야 합니다.

핵심 기능

  • 01메모리 내 벡터를 대상으로 정확한 코사인 유사도 검색을 수행하고 관련도순으로 결과를 반환합니다.
  • 02파일 및 io.Writer/Reader 함수를 통해 인덱스를 영속화합니다.
  • 03llama.cpp를 통한 로컬 GGUF 임베딩을 지원하며 GPU 레이어를 선택적으로 사용할 수 있습니다.
  • 04배치 요청을 지원하며 OpenRouter를 포함한 OpenAI 호환 API를 통해 클라우드 임베딩을 제공합니다.
  • 05벡터를 반환하는 함수라면 무엇이든 인덱스에 연결할 수 있는 제공자에 구애받지 않는 설계입니다.

활용 사례

  • 수천 개에서 수만 개의 문서를 다루는 Go 서비스에 시맨틱 검색을 추가합니다.
  • MiniLM 같은 GGUF 모델로 임베딩을 완전히 로컬에서 실행합니다.
  • 인덱스 코드를 바꾸지 않고 OpenAI 임베딩 모델과 OpenRouter 임베딩 모델을 전환합니다.
  • 정확한 전체 스캔으로 충분히 빠른 검색 기능을 프로토타이핑합니다.

빠른 시작

  1. 1

    서브모듈과 LFS 파일을 포함해 저장소를 클론합니다

    git submodule update --init --recursive
  2. 2

    Git LFS를 통해 모델과 벡터 픽스처를 가져옵니다

    git lfs pull
  3. 3

    핵심 검색 라이브러리를 설치합니다

    go get github.com/kelindar/search

사용 전 알아둘 점

  • 검색은 정확히 일치하는 항목을 찾고 모든 벡터를 스캔하므로 소규모 및 중규모 데이터셋에만 적합합니다.
  • 로컬 임베딩을 사용하려면 CMake와 C/C++ 컴파일러로 네이티브 llama.cpp 라이브러리를 빌드해야 합니다.
  • Go 1.27 이상이 필요합니다.

포함된 컬렉션

토픽

자주 묻는 질문

search은(는) 무엇인가요?
정확한 코사인 유사도 벡터 검색을 지원하는 Go 라이브러리로, llama.cpp를 통한 로컬 GGUF 임베딩과 OpenAI 호환 API를 통한 클라우드 임베딩을 선택적으로 사용할 수 있습니다. kelindar/search는 메모리 내 인덱스에 벡터를 저장하고 코사인 유사도로 가장 유사한 항목을 찾는 Go 라이브러리입니다. 핵심 패키지에는 네이티브 종속성이 없으며, 인덱싱과 검색, 영속성을 자체적으로 처리하므로 정확한 전체 스캔으로 충분한 소규모 및 중간 규모 데이터셋에 적합합니다.
search은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
search은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
search은(는) 아직 유지보수되고 있나요?
6개월 이내 업데이트. search의 마지막 커밋은 2026년 9월 19일입니다.
search은(는) 어디에 사용할 수 있나요?
수천 개에서 수만 개의 문서를 다루는 Go 서비스에 시맨틱 검색을 추가합니다. MiniLM 같은 GGUF 모델로 임베딩을 완전히 로컬에서 실행합니다. 인덱스 코드를 바꾸지 않고 OpenAI 임베딩 모델과 OpenRouter 임베딩 모델을 전환합니다. 정확한 전체 스캔으로 충분히 빠른 검색 기능을 프로토타이핑합니다.
search는 어떻게 설치하나요?
서브모듈과 LFS 파일을 포함해 저장소를 클론합니다: git submodule update --init --recursive Git LFS를 통해 모델과 벡터 픽스처를 가져옵니다: git lfs pull 핵심 검색 라이브러리를 설치합니다: go get github.com/kelindar/search
search은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/kelindar/search

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트