Ninetails 메모리 엔진 V4.5: Int8 양자화 + LRU 캐시로 로컬 MCP 메모리를 60MB로 절감

Ninetails Memory Engine V4.5는 Int8 스칼라 양자화와 LRU 캐시 제거를 결합하여 로컬 MCP(Model Context Protocol) 도구의 메모리 병목 현상을 해결합니다. 이 솔루션은 전체 엔진 프로세스를 Tauri 데스크톱 앱 내에서 40-60MB RAM으로 실행되도록 유지합니다.
메모리 문제
표준 1536차원 float32 임베딩은 약 6144바이트(~6KB)를 차지합니다. 10,000개의 메모리를 저장하면 벡터만으로 ~60MB가 필요하며, 100,000개의 메모리로 확장되면 ~600MB에 이릅니다. SQLite에서 실행되는 로컬 도구의 경우, 이러한 리소스 소비는 허용되지 않습니다.
기술 구현
1단계: Int8 스칼라 양자화
float32(차원당 4바이트)를 int8(차원당 1바이트)로 압축함으로써 저장 용량을 원래 크기의 4분의 1로 줄입니다. 구현에서는 각 차원의 수치 범위를 계산하고, 부동 소수점을 -128에서 127 사이의 정수 범위로 매핑한 후, 검색 시 코사인 유사도를 위해 다시 float32로 역양자화합니다.
# 양자화: float32 → int8
def quantize_vector(vector_fp32, scale, zero_point):
quantized = np.round(vector_fp32 / scale) + zero_point
return np.clip(quantized, -128, 127).astype(np.int8)
# 역양자화: int8 → float32 (근사치)
def dequantize_vector(vector_int8, scale, zero_point):
return (vector_int8.astype(np.float32) - zero_point) * scale
실제 결과: 1536차원 벡터가 6144바이트에서 1536바이트로 감소합니다. 전역 스케일과 zero_point 오버헤드를 고려하면 실제 압축률은 약 3.8배에서 4.0배입니다.
2단계: LRU 캐시 제거
양자화된 벡터는 LRU(Least Recently Used) 전략과 10,000개 항목의 하드 제한을 사용하여 SQLite 데이터베이스(vector_cache.sqlite)에 저장됩니다. 고빈도 벡터는 RAM에 유지되는 반면, 오래된 벡터는 제거됩니다.
정밀도 고려사항
Int8 양자화는 손실이 있지만 메모리 검색에는 허용 가능한데, 그 이유는 다음과 같습니다:
- 엔진은 하이브리드 검색을 사용합니다: 70% 벡터 유사도 + 30% BM25. 양자화가 벡터 순위를 약간 왜곡하더라도, BM25를 통한 정확한 키워드 매칭이 관련 메모리를 다시 상위로 끌어올립니다.
- AI 메모리 검색은 추천 알고리즘과 달리 #1 순위에 대한 절대적 정밀도가 필요하지 않고, 상위 5개 결과에 컨텍스트를 표면화하기만 하면 됩니다.
"TurboQuant"에 대한 설명
이 엔진은 SQLite 벡터 저장을 위해 표준 Int8 스칼라 양자화를 사용하며, LLM GPU 추론 중 KV 캐시를 위해 설계된 3비트 압축 알고리즘(PolarQuant + QJL)인 Google의 TurboQuant(ICLR 2026)을 사용하지 않습니다. UI의 "TurboQuant Compression" 브랜딩은 공격적인 비트 감소 철학에 대한 경의입니다.
전체 기술 스택
- 벡터 압축: Int8 스칼라 양자화(~4배 실제 압축)
- 캐시 관리: SQLite + LRU 제거(제한: 10,000개 항목)
- 검색 엔진: 하이브리드: 70% 벡터 유사도 + 30% BM25
- 프로필 관리자: 자동 STATIC/DYNAMIC 사실 추출
- 사실 추출:
asyncio.to_thread백그라운드 비동기 LLM 호출 - 데이터 저장: 3개의 SQLite 데이터베이스(100% 로컬)
- 데스크톱 앱: Tauri + Vue 3 + PyInstaller 사이드카
이 엔진은 GitHub: sunhonghua1/ninetails-memory-engine에서 MIT 라이선스 하에 오픈 소스입니다.
📖 전체 Source 읽기: r/LocalLLaMA
👀 See Also

도슨트: 클로드 코드로 구축된 논문 분석 AI 어시스턴트
한 개발자가 Claude Code를 사용하여 업로드된 논문을 읽고, 발표하며, 질문에 답하고, 이해도를 평가하는 AI 어시스턴트 Docent를 만들었습니다. 이 프로젝트는 MIT 라이선스 하에 GitHub에서 이용 가능하며, Vercel에 데모가 있습니다.

MegaClaw: Playwright와 Homebrew를 활용한 컨테이너화된 OpenClaw 설정
MegaClaw는 OpenClaw의 일반적인 설치 문제인 권한 오류와 누락된 종속성을 해결하기 위한 두 개의 이미지 Podman 설정입니다. 사전 설치된 Playwright와 Homebrew를 사용하는 멀티 스테이지 빌드를 활용하며, 사용자 구성을 런타임 이미지에 포함시킵니다.

Browser39: AI 에이전트를 위한 헤드리스 웹 브라우저
Browser39는 AI 에이전트를 위해 특별히 설계된 헤드리스 웹 브라우저로, 웹 페이지를 토큰 최적화된 마크다운으로 로컬에서 변환하고, 자바스크립트를 실행하며, 쿠키와 세션을 관리하고, DOM을 쿼리하며, 폼을 채웁니다. 외부 브라우저가 필요 없고, 비용이 없으며, 외부 서비스가 없는 단일 바이너리입니다.

미드레인지 하드웨어를 위한 터보퀀트 캐싱이 적용된 OpenClaw 로컬 에이전트 구현
OpenClaw용 원클릭 앱이 이제 TurboQuant 캐싱과 컨텍스트 워밍을 사용하여 16GB RAM MacBook Air와 같은 중급 기기에서 로컬 모델을 실행합니다. 이 구현은 llama.cpp를 패치하여 안정적인 도구 호출을 가능하게 하며, Gemma 4와 QWEN 3.5에서 초당 10-15 토큰을 달성합니다.