Semble - grep보다 토큰을 98% 적게 쓰는 에이전트용 코드 검색

1 week ago 8
  • Semble은 에이전트가 자연어·코드 쿼리로 필요한 코드 조각만 즉시 찾도록 만든 코드 검색 라이브러리임
  • grep+read 대비 약 98% 적은 토큰을 사용하며, 전체 파일을 읽는 대신 관련 청크만 반환함
  • 평균 저장소를 약 250ms에 인덱싱하고 쿼리는 약 1.5ms에 응답하며, CPU에서 API 키·GPU·외부 서비스 없이 동작함
  • 벤치마크는 19개 언어의 63개 저장소에서 약 1,250개 쿼리로 수행됐고, Semble은 CodeRankEmbed Hybrid 품질의 99%를 달성하면서 인덱싱은 218배 빠른 것으로 제시됨
  • 토큰 효율 벤치마크에서 Semble은 평균 98% 적은 토큰을 사용하고 2k 토큰만으로 94% 재현율에 도달했으며, grep+read는 100k 컨텍스트 창으로 85% 재현율에 도달함
  • MCP 서버로 Claude Code, Cursor, Codex, OpenCode 및 MCP 호환 에이전트에서 사용할 수 있고, 저장소는 필요 시 클론·인덱싱되며 세션 동안 인덱스가 캐시됨
  • Bash 기반 사용도 지원해 AGENTS.md나 CLAUDE.md에 semble search와 semble find-related 워크플로를 넣을 수 있으며, Claude Code와 Codex CLI의 서브에이전트에는 이 방식이 필요함
  • CLI는 로컬 경로와 https:// Git URL을 모두 받을 수 있고, path를 생략하면 현재 디렉터리를 기본값으로 사용함
  • Python 라이브러리로도 사용할 수 있어 SembleIndex.from_path, SembleIndex.from_git, search, find_related로 커스텀 도구에 검색을 통합 가능함
  • 내부적으로 tree-sitter로 파일을 코드 인식 청크로 나누고, Model2Vec의 potion-code-16M 임베딩과 BM25를 결합한 뒤 Reciprocal Rank Fusion으로 점수를 합침
  • 랭킹은 심볼형 쿼리의 어휘 가중치, 정의 청크 부스트, 식별자 어간 매칭, 같은 파일 내 관련성, 테스트·legacy·예제·.d.ts에 대한 하향 조정을 사용함
  • 정적 임베딩 모델을 사용해 쿼리 시 transformer forward pass가 없기 때문에 CPU에서 밀리초 단위 검색이 가능함
  • semble savings는 검색마다 반환 청크가 속한 고유 파일의 전체 문자 수와 반환 스니펫 문자 수를 비교해 절약 토큰을 추정하고, 통계는 ~/.semble/savings.jsonl에 저장함
  • 패키지는 PyPI의 semble로 설치할 수 있고, MCP 사용 시 uvx --from "semble[mcp]" semble 형태를 사용함
  • 라이선스는 MIT
Read Entire Article