the-semq-group/semq는 임베딩 벡터를 CPU와 언어에 관계없이 같은 바이트열로 바꾸는 결정론적 기호 코드의 저장소다. 2026-10-22 커밋 f4ac419(#30)는 rebuild 벤치마크에 SimHash를 새 비교 대상으로 추가해, 기준선인 floor와 어느 정도 같은 판정을 내는지 재고, 같은 FP32 투영을 다른 라이브러리와 다른 정밀도로 계산했을 때 해시 비트가 얼마나 달라지는지 측정했다. 근거는 커밋 페이지에 그대로 남아 있다: https://github.com/The-SEMQ-Group/semq/commit/f4ac41952ef980c2b126ca1f3428a2e5636cccbf
SimHash는 벡터를 무작위 초평면에 투영해 부호 비트열로 접는 방법이다. 이 커밋은 SimHash에 floor의 비트 예산인 차원당 3비트를 배정했다. quant4 양자화가 2×4 심볼, 즉 3비트를 쓰기 때문이다. 판정은 변경 없는 rebuild에서 본 분포를 기준(null)으로 삼고, 바뀐 행 수와 행 단위 해밍 거리(비트가 몇 자리 다른지) 두 통계를 함께 쓴다.
측정은 NVIDIA A10G 한 대에서 이뤄졌다. NumPy로 계산한 FP32 투영을 기준으로 PyTorch CPU, GPU 배치 64와 4,096, TF32를 같은 입력에 적용해 비트가 달라진 행을 셌고, 총 1,150,307개 벡터(시드로 뽑은 단위 벡터 1,000,000개 포함) 중 PyTorch 쪽은 100만 행당 3개에서 49개, TF32는 68,794개 행이 달랐다. 배치 크기는 A10G에서 바뀐 행 수에 영향을 주지 않았다. 비트 차이가 곧 오탐은 아니어서, NumPy로 해시한 floor와 비교하면 변경 없는 rebuild가 FP32 해시에서는 0.05%의 draw에서만 거부됐고 TF32 해시에서는 100% 거부됐다. FP16과 BF16는 정밀도를 일부러 낮춘 경우라 연구 대상에서 빠졌다.
다만 이 수치는 A10G 한 대의 결과다. 정밀도 연구는 CUDA가 없으면 결과가 없다고 명시해 페이지가 그 자리에서 실패하고, 사양은 양자화 단계만 고정한다. 그래서 TF32의 100% 거절은 GPU 결함이 아니라 정밀도 차이에서 나온 값으로 읽는 편이 맞다. 95% 구간이 겹치는 차이는 겹친다고 밝히는 방식도 들어갔지만, 다른 GPU나 다른 라이브러리 버전에서 같은 수치가 반복될지는 아직 판단하기 이르다. 변경은 benchmarks/와 docs/의 벤치마크와 문서에 머물렀고 코어 라이브러리 코드는 건드리지 않았다.