본문으로 건너뛰기
피드

ColGREP: 터미널과 코딩 에이전트를 위한 의미 기반 코드 검색 도구

open-source 약 7분
vote
0
댓글
북마크

ColBERT 멀티벡터 임베딩과 Tree-sitter AST 파싱을 결합해 코드의 의미를 이해하는 로컬 검색 도구. 17M 파라미터 경량 모델로 CPU에서 동작하며, grep 호환 플래그와 Claude Code/Codex 통합을 제공함.

  • 1

    semantic/keyword/hybrid/regex 4가지 검색 모드 제공, 기본은 ColBERT + FTS5 trigram을 RRF로 합산하는 하이브리드

  • 2

    ColBERT 멀티벡터 임베딩(토큰당 128차원 벡터)으로 단일 벡터 대비 세밀한 코드 검색 가능

  • 3

    Tree-sitter로 AST 파싱 후 시그니처/콜그래프/제어흐름/데이터흐름/의존성 5단계 분석

  • 4

    PLAID 알고리즘으로 2-bit/4-bit 양자화 압축, 증분 인덱스 업데이트 지원

  • 5

    Claude Code, Codex, OpenCode에 원커맨드 통합, 20개 이상 언어 지원

핵심 아이디어

  • grep/ripgrep은 패턴 매칭만 하지만, ColGREP은 코드의 의미를 이해하는 검색을 터미널에서 바로 제공함
  • 코드가 외부 서버로 전송되지 않고, 100% 로컬에서 동작함. CPU만으로도 충분히 빠름
  • Apache-2.0 라이선스 오픈소스이며, brew install lightonai/tap/colgrep으로 바로 설치 가능

4가지 검색 모드

  • semantic: ColBERT 모델 기반 의미 검색. "HTTP 요청 보내는 함수" 같은 자연어 쿼리가 동작함
  • keyword: FTS5 trigram 키워드 검색. "parse"를 검색하면 parse_arguments, JSON.parse 등 서브스트링 매칭됨
  • hybrid (기본값): semantic + keyword를 RRF(Reciprocal Rank Fusion)로 합산. alpha=0.75로 시맨틱 쪽에 가중치를 둠
  • regex: ERE 문법의 정규식 검색. -e 플래그로 사용하며, regex로 후보를 좁힌 뒤 시맨틱으로 랭킹하는 조합도 가능함

ColBERT 멀티벡터 임베딩이 핵심

  • 일반적인 임베딩 모델은 코드 단위당 단일 벡터 하나를 생성하지만, ColBERT는 토큰 레벨의 다중 벡터(코드 유닛당 ~300개, 128차원)를 생성함
  • 쿼리 시 각 쿼리 토큰이 문서의 모든 토큰 중 가장 유사한 것을 찾는 MaxSim 스코어링 방식을 사용함
  • 단일 벡터에서 손실되는 세밀한 정보가 보존되므로, 코드 검색 정확도가 확연히 높아짐
  • 기본 모델은 LateOn-Code-edge (17M 파라미터)로, 코드 검색에 최적화된 경량 모델임. CPU에서 돌아감

Tree-sitter 기반 AST 파싱 — 5단계 분석

  • Tree-sitter로 소스 파일을 AST 파싱하여 함수, 메서드, 클래스, 상수, raw 코드 블록 단위로 추출함. 파일 커버리지 100%
  • 각 코드 유닛에 대해 5개 레이어의 분석을 수행함:
    1. AST: 시그니처, 파라미터, 리턴 타입, 독스트링, 부모 클래스
    2. Call Graph: 나가는 호출(outgoing calls) + 역방향 called_by
    3. Control Flow: 루프, 분기, 에러 핸들링, 순환 복잡도
    4. Data Flow: 변수 선언 및 할당
    5. Dependencies: 함수 내에서 사용되는 임포트
  • 이 구조화된 표현을 임베딩하므로 raw 코드만 넣는 것보다 훨씬 풍부한 시그널을 모델에 제공함
  • 파일 경로도 정규화됨: HttpClienthttp client, snake_case → 분리 처리

PLAID 알고리즘으로 인덱스 압축

  • 멀티벡터 임베딩은 용량이 크기 때문에, PLAID 알고리즘으로 product quantization(2-bit 또는 4-bit) 적용하여 압축함
  • 임베딩 풀링(기본 factor: 2)으로 인덱스 크기를 추가로 ~50% 줄임
  • 메모리 맵(memory-mapped) 인덱스로 저장되어 메모리 효율적임
  • 증분 업데이트(incremental updates) 지원: 변경된 파일만 다시 인코딩함. colgrep init으로 프리워밍도 가능

AI 코딩 에이전트 통합

  • Claude Code, Codex, OpenCode에 원커맨드로 설치됨: colgrep --install-claude-code
  • Claude Code 통합 시 세션/태스크 훅이 설치되어:
    • 에이전트 시스템 프롬프트에 colgrep 사용법이 주입됨
    • 인덱스 상태를 체크하고 (>3000 청크 미인덱스 시 스킵)
    • 서브 에이전트에도 태스크 훅을 통해 전파됨
  • 즉, Claude Code가 자동으로 colgrep을 기본 검색 도구로 사용하게 됨

grep 호환 플래그 & 실용적 기능

  • -e, -E, -F, -w, -l, -r 등 grep 호환 플래그를 그대로 제공함. 기존 워크플로우 전환 비용이 낮음
  • --include, --exclude, --exclude-dir로 glob 필터링 가능
  • --json 출력, --code-only(docs/config 제외), --files-only 등 에이전트 친화적 옵션 제공
  • 상대 경로 출력 모드로 LLM 사용 시 토큰 ~35% 절약 가능
  • 테스트 함수는 쿼리에 "test"가 포함되지 않으면 자동으로 순위가 낮아짐

지원 언어 & 설치

  • 20개 이상 프로그래밍 언어 지원: Python, TypeScript, JavaScript, Go, Rust, Java, C/C++, C#, Ruby, Kotlin, Swift, Scala, PHP, Lua, Elixir, Haskell, OCaml, Zig, Julia, SQL, Vue, Svelte 등
  • Markdown, YAML, TOML, JSON, Dockerfile, Makefile, Shell 등 설정/문서 파일도 인덱싱됨
  • macOS는 Apple Accelerate + CoreML 하드웨어 가속이 기본 활성화됨
  • Linux/Windows에서 GPU 가속 원하면 Cargo로 빌드: cargo install colgrep --features openblas (또는 cuda, tensorrt, directml)
  • ONNX Runtime은 첫 사용 시 자동 다운로드됨

💡

> colgrep init으로 인덱스를 미리 빌드해두면 첫 검색이 즉시 응답함. CI/CD 파이프라인이나 dev setup 스크립트에 넣어두면 편리함.

코딩 에이전트의 코드 검색 품질이 곧 에이전트의 성능 천장을 결정하는 시대. grep/ripgrep의 패턴 매칭 한계를 의미 검색으로 넘어서면서도 로컬 실행과 grep 호환성을 유지한 것이 실용적인 접근임.

댓글

댓글

댓글을 불러오는 중...

open-source

위키피디아에도 빅테크식 반노조 플레이북이 들어왔다

위키미디어 재단이 5월 열흘 사이 MediaWiki 장기 핵심 개발자를 해고하고, 자원봉사 편집자 요청을 처리하던 Community Tech 팀을 해산했다는 비판 글이다. 해고된 인력 상당수가 노조 조직 활동과 연결돼 있었고, 위키피디아 편집자들은 연대 파업까지 거론하고 있다. 재단은 2억9660만 달러의 준비금과 빠르게 성장하는 AI 대상 API 매출을 갖고 있어, 이 사안이 단순 비용 절감으로 보기 어렵다는 게 글의 핵심이다.

open-source

캘리포니아, 연령 확인법에서 리눅스 빼려는 수정안 추진

캘리포니아가 운영체제에 사용자 나이 확인을 요구하는 법안에서 대부분의 오픈소스 운영체제를 제외하는 수정안을 추진 중이다. 데비안, 페도라, 우분투, 아치, 리눅스 민트 같은 배포판은 빠질 가능성이 커졌지만, 스팀OS처럼 독점 앱 생태계와 연결된 플랫폼은 여전히 애매한 상태다.

open-source

마이크로소프트, 45년 전 86-DOS 소스코드를 오픈소스로 공개

마이크로소프트가 86-DOS 1.00 출시 45주년에 맞춰 지금까지 발견된 것 중 가장 오래된 DOS 소스코드를 공개했어. 팀 패터슨의 차고에 있던 도트 매트릭스 출력물을 스캔하고 옮겨 적어, 원본 바이너리와 바이트 단위로 동일하게 다시 컴파일되는 수준까지 복원한 게 포인트야.

open-source

밤부 랩, AGPLv3 위반 논란으로 오픈소스 커뮤니티와 충돌

3D 프린터 제조사 밤부 랩이 AGPLv3 라이선스 위반 논란에 휘말렸고, Software Freedom Conservancy가 두 건의 위반 사례를 확인했다는 내용이야. Louis Rossmann과 Gamers Nexus는 관련 개발자의 법적 방어를 위해 2만달러를 기부했고, 갈등의 핵심은 오픈소스 기반 생태계를 클라우드와 DRM으로 점점 닫아가려는 움직임이야.

open-source

플리퍼, 리눅스 기반 확장형 기기 '플리퍼 원' 공개

플리퍼가 기존 플리퍼 제로를 대체하는 후속작이 아니라, 리눅스 기반 네트워킹·확장형 기기인 플리퍼 원을 공개했어. RK3576 8코어 ARM 칩, 와이파이 6E, 듀얼 이더넷, NVMe, HDMI 4K 120Hz까지 넣으면서 장난감 같은 해킹 도구에서 훨씬 범용적인 리눅스 장비 쪽으로 방향을 넓히는 그림이야.