Skip to content

Latest commit

 

History

History
159 lines (114 loc) · 4.77 KB

File metadata and controls

159 lines (114 loc) · 4.77 KB

CommitMind

TurboQuant 벡터 압축 기반 Git 커밋 히스토리 의미 검색 도구 (ICLR 2026)

키워드 검색은 그만. 의미로 검색하세요.

PyPI version Python 3.9+ License: MIT

문제

# 현재: 글자 매칭만 가능
git log --grep="메모리 누수"     # "메모리 누수"라는 글자가 있는 커밋만 찾음
                                  # "fix kfree_skb double free" --> 못 찾음
                                  # "plug UAF in reset path" --> 못 찾음

해결

# CommitMind: 의미 기반 검색
commitmind search "메모리 누수"
# >> #1 [0.94] a3f2c1d  Fix kfree_skb double free in netfilter
# >> #2 [0.91] b7e4a2f  Plug use-after-free in device reset path
# >> #3 [0.87] c9d1b3e  Resolve dangling pointer in slab allocator

CommitMind는 쿼리의 의미를 이해하여 관련 커밋을 찾습니다. 정확한 단어가 없어도 됩니다.

작동 원리

Git 커밋 --> 문장 임베딩 --> TurboQuant 압축 --> 의미 검색
             (all-MiniLM-L6-v2)  (7.6배 압축)     (비대칭 스코어링)
  1. 추출: git 히스토리에서 커밋 메시지 + 파일 변경 메타데이터 추출
  2. 임베딩: 각 커밋을 384차원 벡터로 변환 (로컬 모델, API 불필요)
  3. 압축: TurboQuant(Google ICLR 2026)으로 벡터 압축 - 메모리 87% 절감
  4. 검색: 비대칭 내적 추정으로 검색 (압축 해제 불필요)

설치

pip install commitmind

또는 소스에서 설치:

git clone https://github.com/wjddusrb03/commitmind.git
cd commitmind
pip install -e ".[dev]"

빠른 시작

# 1. 저장소 인덱싱
cd your-project
commitmind index

# 출력:
# Indexing complete!
#   > 3,842 commits indexed
#   > Compressed: 18.2 MB -> 2.4 MB (7.6x)
#   > Saved to .commitmind/index.pkl

# 2. 의미로 검색
commitmind search "인증 버그 수정"

# 3. 통계 보기
commitmind stats

CLI 명령어

명령어 설명
commitmind index 커밋을 TurboQuant 압축으로 인덱싱
commitmind search "쿼리" 커밋 의미 검색
commitmind stats 인덱스 통계 표시
commitmind update 새 커밋만 추가 인덱싱

옵션

# 인덱싱 옵션
commitmind index --max-commits 1000    # 최근 1000개만 인덱싱
commitmind index --branch main         # 특정 브랜치 인덱싱
commitmind index --bits 2              # 2비트 양자화 (더 높은 압축)

# 검색 옵션
commitmind search "쿼리" -k 10         # 상위 10개 결과 반환

사용 시나리오

  • 새로 합류한 개발자: "이 프로젝트에서 인증 관련 변경은 언제 있었지?"
  • 버그 추적: "네트워크 타임아웃 관련 수정 이력 보여줘"
  • 보안 감사: "SQL injection 관련 수정 전부 찾아줘"
  • 코드 고고학: Linux 커널 124만 커밋에서 의미 기반 탐색
  • 다국어 검색: 한국어로 영어 커밋 검색 가능

메모리 효율

TurboQuant 압축 덕분에:

커밋 수 비압축 CommitMind 절감률
1,000 1.5 MB 0.2 MB 87%
10,000 15 MB 2.0 MB 87%
100,000 150 MB 20 MB 87%
1,000,000 1.5 GB 200 MB 87%

TurboQuant 원리

CommitMind는 TurboQuant (Google Research, ICLR 2026)을 사용합니다:

  1. PolarQuant: 랜덤 직교 회전 + Lloyd-Max 스칼라 양자화 (3비트)
  2. QJL: 양자화된 Johnson-Lindenstrauss 잔차 보정 (1비트)
  3. 비대칭 스코어링: 벡터를 압축 해제하지 않고 유사도 계산

약 7.6배 압축률로 정확도 손실을 최소화합니다.

요구사항

  • Python 3.9+
  • Git 저장소
  • CPU만으로 동작 (GPU 불필요)
  • 임베딩 모델용 디스크 약 500 MB (최초 1회 다운로드)

기여하기

이슈와 풀 리퀘스트를 환영합니다! 버그를 발견하거나 제안이 있으시면 이슈를 열어주세요.

라이선스

MIT License

인용 (Citation)

CommitMind를 연구에 사용하시면:

@software{commitmind2026,
  title={CommitMind: Semantic Git Commit Search with TurboQuant Compression},
  author={wjddusrb03},
  year={2026},
  url={https://github.com/wjddusrb03/commitmind}
}

관련 프로젝트