로컬 시맨틱 검색을 위한 AI 대화용 fastembed와 LanceDB

한 개발자가 클라우드 의존성이나 API 키 없이 368K개의 메시지를 처리하는 AI 대화 기록용 로컬 시맨틱 검색 시스템을 구현했습니다. 이 프로젝트는 CPU 기반 임베딩을 위해 BAAI/bge-small-en-v1.5 모델과 fastembed를 사용하며, 서버 프로세스 없이 단일 디렉토리로 운영되는 벡터 저장소로 LanceDB를 활용합니다.
기술 스택
- 임베딩: BAAI/bge-small-en-v1.5 모델(384차원)과 fastembed
- 벡터 저장소: LanceDB - 단일 디렉토리, 서버 프로세스 없음, 추가 작업에 용이
- 수집: JSONL 세션 기록(Claude Code, 모든 채팅 내보내기)에서 가져옴
- 임베딩 성능: M4 CPU에서 약 500 docs/sec
주요 구현 세부사항
개발자는 4개월 간의 반복 과정에서 몇 가지 실용적인 교훈을 얻었습니다:
- 선택적 임베딩: 초기 버전은 모든 메시지를 임베딩하여 신호 대 잡음비를 감소시켰습니다. 현재 구현에서는 사용자 메시지와 실질적인 내용이 있는 어시스턴트 메시지만 임베딩하며("물론, 여기 코드입니다"와 같은 응답은 건너뜀), 벡터 수를 60% 줄이면서 검색 품질을 향상시켰습니다.
- 청킹 전략: 고정 크기 청크에서 대화 턴 기반 청크로 전환함으로써 검색 관련성이 크게 개선되었습니다. 모델 선택(nomic-embed-text, bge-large, all-MiniLM 시도)은 청킹 방식에 비해 미미한 차이만 보였습니다.
- LanceDB 장점: 개발자는 LanceDB가 "개인 규모에서는 어리석을 정도로 저평가되었다"고 평가했습니다 - 서버 없음, Docker 없음, 단순히 새 벡터를 즉시 추가할 수 있는 디렉토리만으로 과도하게 설계된 pgvector 설정을 대체했습니다.
- 재임베딩 워크플로: 384차원의 bge-small-en-v1.5 모델은 cron 작업으로 시간 단위 재임베딩을 수행할 만큼 충분히 빠릅니다. M2 하드웨어에서 117K 벡터의 전체 재인덱싱은 약 4분이 소요됩니다.
성능 지표
- 수집된 총 메시지: 407K
- 인덱싱된 벡터: 87K
- 검색 지연 시간(p50): 117K 벡터 기준 12ms
- 전체 재인덱싱 시간: 약 4분(M2)
- 저장 공간: 디스크 상 약 180MB
- 필요한 API 키: 0
이 프로젝트는 MIT 라이선스 하에 오픈 소스로 제공되며 github.com/mordechaipotash/brain-mcp에서 확인할 수 있습니다. 설치 방법은 pipx install brain-mcp && brain-mcp setup입니다.
📖 Read the full source: r/LocalLLaMA
👀 See Also

Utilyze: 실제 컴퓨터 처리량을 측정하는 오픈소스 GPU 모니터, 커널 활동만 측정하지 않음
Utilyze는 하드웨어 성능 카운터를 샘플링하여 이론적 한계 대비 연산 및 메모리 처리량을 보고하며, 100% 사용률을 보여주는 대시보드가 실제로는 1-10%의 실제 처리량만 가지고 있을 수 있음을 밝혀냅니다.

오픈소스 Gmail MCP 서버, 다중 계정 지원 및 쓰기 권한 추가
오픈소스 MCP 서버가 Claude AI가 여러 Gmail 계정에 연결할 수 있도록 하며, 아카이빙, 라벨링, 자동 구독 취소 기능을 포함한 완전한 읽기/쓰기 기능을 제공합니다. Gmail 검색 구문을 지원하며, 5분 내에 Railway에 배포하거나 자체 호스팅할 수 있습니다.

Nit: AI 에이전트 토큰 효율성을 위해 최적화된 Zig 언어 기반 Git 대체 도구
Nit는 Zig로 작성된 네이티브 Git 대체 도구로, status, diff, log, show와 같은 일반적인 명령어에서 토큰 사용량을 35-87% 감소시킵니다. 이는 간결한 출력 기본값과 직접적인 libgit2 통합을 통해 하위 프로세스 오버헤드를 제거함으로써 달성됩니다.

docvault: AI 환각 현상을 줄이기 위한 로컬 API 문서 생성
docvault는 Claude 및 기타 LLM이 함수 시그니처를 망상하는 것을 방지하기 위해 소스 코드에서 마크다운 API 참조를 생성하는 도구입니다. Rust 크레이트와 Python 패키지에 대해 작동하며, 두 계층의 마크다운 파일을 출력하고, 자동 작동을 위한 Claude Code 플러그인을 포함합니다.