philippgille/chromem-go

Embeddable vector database for Go with Chroma-like interface and zero third-party dependencies. In-memory with optional persistence.

해결하는 문제

chromem-go는 Go 애플리케이션용 임베디드 벡터 데이터베이스입니다. 개발자들이 별도의 독립형 데이터베이스 서버를 실행할 필요 없이, 리트리ieval 증강 생성(RAG), 세미틱 검색, 추천 시스템을 앱 내에 직접 통합할 수 있게 해줍니다 (SQLite가 전체 SQL 서버 대신 사용되는 방식과 유사합니다).

작동 방식

데이터베이스는 메모리 내에서 작동하며, 선택적으로 디스크에 영구 저장이 가능합니다. 코사인 유사도를 사용하여 완전한 근접 이웃 검색(FLAT 인덱스)을 수행하여 관련 콘텐츠를 찾습니다. 컬렉션 관리 및 문서 쿼리에 Chroma와 유사한 인터페이스를 제공합니다.

임베딩 처리를 위해 OpenAI, Azure OpenAI, GCP Vertex AI, Cohere, Mistral, Jina, mixedbread.ai 등의 호스팅 제공자와 Ollama, llmman, LocalAI 등의 로컬 제공자를 지원하며, 사용자가 자체 임베딩 함수나 사전 계산된 임베딩을 제공할 수도 있습니다.

대상 사용자

RAG나 텍스트 검색과 같은 AI 기능을 위한 가벼운, 의존성 없는 벡터 저장소가 필요하고, 클라이언트-서버 아키텍처보다 임베디드 방식을 선호하는 Go 개발자들.

주요 특징

  • 의존성 없음: 제3자 라이브러리가 필요 없습니다.
  • 임베디드 가능: 클라이언트-서버 모델이 필요 없으며, 데이터베이스가 Go 바이너리에 직접 통합됩니다.
  • 다중 스레딩: Go의 내장 동시성 기능을 활용해 문서 추가 및 쿼리 처리를 효율적으로 수행합니다.
  • 유연한 스토리지: 메모리 내 동작을 지원하며, 선택적으로 영구 저장 및 암호화 백업(AES-GCM)도 가능합니다.
  • 넓은 임베딩 지원: 다양한 로컬 및 클라우드 임베딩 모델과 즉시 통합됩니다.

관련

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