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

✍️ OpenClawRadar📅 게시일: April 1, 2026🔗 Source
Ninetails 메모리 엔진 V4.5: Int8 양자화 + LRU 캐시로 로컬 MCP 메모리를 60MB로 절감
Ad

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에 유지되는 반면, 오래된 벡터는 제거됩니다.

Ad

정밀도 고려사항

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

Ad

👀 See Also

코딩-플래시카드: Rust, SQLite, Godot, Wolfram 언어를 위한 800개 이상의 Anki 카드
Tools

코딩-플래시카드: Rust, SQLite, Godot, Wolfram 언어를 위한 800개 이상의 Anki 카드

Rust, SQLite, Godot, Wolfram Language를 처음부터 학습할 수 있는 800개 이상의 마크다운 플래시카드, Anki 덱 또는 PDF로 변환하는 스크립트 포함

OpenClawRadar
Jork 에이전트 프레임워크, Claude로 구축, 400만 달러 해커톤에서 톱 10에 랭크
Tools

Jork 에이전트 프레임워크, Claude로 구축, 400만 달러 해커톤에서 톱 10에 랭크

한 개발자가 Claude와 GLM 모델을 사용해 Jork라는 에이전트 프레임워크를 구축한 경험을 공유했는데, 이 프로젝트는 최근 400만 달러 규모 해커톤에서 2000개 이상의 응모작 중 상위 10위 안에 들었습니다. 이 프로젝트는 완전 자율 에이전트를 만들려는 초기 실패한 시도에서 발전한 것입니다.

OpenClawRadar
audio-analyzer-rs: Claude를 위한 오디오 분석 MCP 서버
Tools

audio-analyzer-rs: Claude를 위한 오디오 분석 MCP 서버

한 개발자가 Rust로 구현된 MCP 서버인 audio-analyzer-rs를 구축했습니다. 이 도구는 Claude에게 스펙트럼, 하모닉, 리듬, LUFS 음량(EBU R128), 다이내믹 레인지 측정을 포함한 오디오 파일 분석에 직접 접근할 수 있도록 합니다. 이 도구는 토큰 효율적이며, Claude는 낮은 해상도로 시작하여 필요에 따라 작은 청크로 확대합니다.

OpenClawRadar
클로드 코드용 디자인 스튜디오 플러그인, 9가지 역할과 16개 명령어로 구성된 가상 디자인 팀 추가
Tools

클로드 코드용 디자인 스튜디오 플러그인, 9가지 역할과 16개 명령어로 구성된 가상 디자인 팀 추가

Design Studio라는 새로운 Claude Code 플러그인은 9개의 전문가 역할, 16개의 슬래시 명령어, 5개의 에이전트로 구성된 완전한 디자인 팀을 시뮬레이션합니다. 기술 스택을 자동으로 감지하며 참조 파일에 걸쳐 8,000줄 이상의 디자인 지식을 포함합니다.

OpenClawRadar