lancedb
무엇인가
벡터 데이터베이스 계층에 속하며, 애플리케이션 프로세스 안에 라이브러리로 들어가 동작하는 임베디드 검색 엔진이다. AI/ML 워크로드에서 임베딩, 메타데이터, 원본 멀티모달 데이터를 같은 테이블에 두고 조회하는 자리를 맡는다.
어떻게 동작하나
저장 계층은 Lance 컬럼 포맷을 쓴다. 데이터는 Lance 파일로 로컬 디스크나 객체 스토리지에 남고, 제로 카피 읽기와 자동 버전 관리가 포맷 수준에서 처리된다. 질의는 벡터 유사도 검색, 전문 검색, SQL 세 가지를 지원하며 한 테이블에 함께 걸 수 있다. 벡터 인덱스 구축에는 GPU를 쓸 수 있다. 클라이언트는 Python, Node.js/TypeScript, Rust SDK와 REST API로 제공된다.
무엇과 다른가
서버 프로세스를 따로 띄우는 벡터 DB와 달리 애플리케이션에 임베드되어 별도 인프라를 요구하지 않는다. 데이터를 외부 서비스에 적재하지 않고 파일로 보관하므로 벤더 종속이 생기지 않는다. 버전 관리는 추가 인프라 없이 포맷이 담당한다. 분석 도구와의 연결은 Apache Arrow, Pandas, Polars, DuckDB를 경유한다.
어떻게 쓰나
SDK를 설치한 뒤 로컬 경로나 객체 스토리지 URI를 지정해 DB를 열고, Arrow 테이블이나 Pandas 데이터프레임에서 테이블을 만든다. 벡터와 메타데이터를 추가하고 인덱스를 생성한 다음 검색을 실행한다. LangChain, LlamaIndex 연동으로 기존 파이프라인에 붙일 수 있다.
전제와 한계
핵심 구현은 Rust이고 공식 SDK는 Python, TypeScript, Rust 세 가지다. GPU 지원은 벡터 인덱스 구축 단계에 한정된다. 저장 위치는 로컬 디스크 또는 객체 스토리지이며 데이터는 Lance 포맷 파일로 남는다. README에는 최소 버전이나 플랫폼 제약이 명시되어 있지 않다.
유사 도구
- zvecC++로 작성된 인프로세스 벡터 데이터베이스다. 서버 없이 애플리케이션에 임베드되며 밀집·희소 벡터 검색과 전문 검색, 하이브리드 질의를 한 프로세스 안에서 처리한다.
- chroma임베딩과 메타데이터를 저장하고 벡터·전문·하이브리드 검색을 제공하는 오픈소스 AI 검색 인프라다. Rust 코어와 Python·JS 클라이언트로 동작한다.
- weaviate객체와 벡터를 함께 저장하는 Go 기반 오픈소스 벡터 데이터베이스다. 벡터 검색과 구조화 필터를 단일 쿼리로 결합한다.
- deep-searcher사내 문서를 벡터 DB에 적재하고 LLM이 검색·평가·추론을 반복해 근거 있는 답변과 보고서를 만드는 Python 딥리서치 도구다.
- milvusGo와 C++로 작성된 분산 벡터 데이터베이스다. 컴퓨트와 스토리지를 분리해 수십억 벡터에서 ANN 검색을 수평 확장한다.
- SimpleMemLLM 에이전트에 장기 기억을 붙이는 Python 패키지다. 대화를 원자적 기억으로 압축해 저장하고 의미 기반으로 검색하며, 텍스트와 이미지·오디오·비디오를 함께 다룬다.