Ninetails Memory Engine V4.5: Cuantización Int8 + Caché LRU Reduce la Memoria MCP Local a 60MB

El Motor de Memoria Ninetails V4.5 aborda el cuello de botella de memoria en las herramientas locales MCP (Protocolo de Contexto del Modelo) implementando cuantización escalar Int8 combinada con expulsión de caché LRU. La solución mantiene todo el proceso del motor funcionando dentro de una aplicación de escritorio Tauri con 40-60MB de RAM.
El Problema de Memoria
Una incrustación estándar de 1536 dimensiones en float32 ocupa aproximadamente 6144 bytes (~6KB). Almacenar 10,000 recuerdos significa ~60MB solo para vectores, escalando a ~600MB para 100,000 recuerdos. Para una herramienta local que funciona con SQLite, este consumo de recursos es inaceptable.
Implementación Técnica
Capa 1: Cuantización Escalar Int8
Al comprimir float32 (4 bytes/dim) a int8 (1 byte/dim), el volumen de almacenamiento se reduce a un cuarto de su tamaño original. La implementación calcula el rango numérico de cada dimensión, mapea los valores float a un rango entero de -128 a 127, y desquantiza de vuelta a float32 durante la recuperación para la similitud coseno.
# Cuantizar: 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)
# Desquantizar: int8 → float32 (Aproximación)
def dequantize_vector(vector_int8, scale, zero_point):
return (vector_int8.astype(np.float32) - zero_point) * scale
Resultado en el mundo real: Un vector de 1536 dimensiones baja de 6144 bytes a 1536 bytes. Considerando la sobrecarga de escala global y punto cero, la relación de compresión real es de aproximadamente 3.8x - 4.0x.
Capa 2: Expulsión de Caché LRU
Los vectores cuantizados se almacenan en una base de datos SQLite (vector_cache.sqlite) usando una estrategia de Menos Recientemente Usado con un límite máximo de 10,000 entradas. Los vectores de alta frecuencia permanecen en RAM mientras que los obsoletos son expulsados.
Consideraciones de Precisión
La cuantización Int8 tiene pérdida pero es aceptable para la recuperación de memoria porque:
- El motor usa búsqueda híbrida: 70% similitud vectorial + 30% BM25. Incluso si la cuantización altera ligeramente el ranking de vectores, la coincidencia exacta de palabras clave mediante BM25 recupera los recuerdos relevantes.
- La recuperación de memoria de IA solo necesita mostrar contexto en los 5 mejores resultados, a diferencia de los algoritmos de recomendación que necesitan precisión absoluta para el primer lugar.
Aclaración sobre "TurboQuant"
El motor usa cuantización escalar Int8 estándar para el almacenamiento de vectores en SQLite, no el TurboQuant de Google (ICLR 2026), que es un algoritmo de compresión de 3 bits (PolarQuant + QJL) diseñado para la Caché KV durante la inferencia GPU de LLM. La marca "Compresión TurboQuant" en la interfaz es un guiño a la filosofía de reducción agresiva de bits.
Pila Tecnológica Completa
- Compresión Vectorial: Cuantización Escalar Int8 (~4x compresión real)
- Gestión de Caché: SQLite + Expulsión LRU (Límite: 10,000 entradas)
- Motor de Búsqueda: Híbrido: 70% Similitud Vectorial + 30% BM25
- Administrador de Perfiles: Extracción automática de hechos ESTÁTICOS/DINÁMICOS
- Extracción de Hechos: Llamadas asíncronas LLM en segundo plano con
asyncio.to_thread - Almacenamiento de Datos: 3 Bases de Datos SQLite (100% Local)
- Aplicación de Escritorio: Tauri + Vue 3 + PyInstaller sidecar
El motor es de código abierto bajo la Licencia MIT en GitHub: sunhonghua1/ninetails-memory-engine.
📖 Read the full source: r/LocalLLaMA
👀 Ver también

El Marco de Agentes Jork Desarrollado con Claude se Clasifica entre los 10 Mejores en un Hackatón de $4 Millones
Un desarrollador construyó un framework agéntico llamado Jork usando modelos Claude y GLM que se ubicó entre los 10 primeros entre más de 2000 aplicaciones en un hackathon de 4 millones de dólares. El framework desarrolló de forma autónoma herramientas incluyendo un radar de lanzamientos en Solana y un juego funcional de búsqueda de palabras.

Medidor de Acelerador: Medidor de Uso de Código Claude de Código Abierto para macOS
Aplicación de código abierto para la barra de menú de macOS que lee registros locales de Claude Code para mostrar el uso en tiempo real de 5 horas y semanal, con notificaciones de umbral y ganchos de ahorro de tokens. También tiene un hermano comercial de €19 con modo Exacto (lee la API interna de claude.ai a través de Safari).

La función UltraThink de Claude AI regresa con orientación práctica de uso.
Claude AI ha reinstaurado la función UltraThink tras recibir comentarios de los usuarios. El esfuerzo medio es ahora la configuración predeterminada para Opus 4.6 (Max/Team), con el esfuerzo alto disponible permanentemente mediante /model, y UltraThink como una anulación de un solo turno al esfuerzo alto.

AutoBe: Cómo los LLM Locales Débiles Arreglaron la Arquitectura de un Generador de Backend de IA
AutoBe es un agente de IA de código abierto que genera aplicaciones backend completas utilizando TypeScript, NestJS y Prisma. El equipo descubrió que su éxito inicial de compilación del 100% producía código imposible de mantener, luego reconstruyeron con generación modular—haciendo caer el éxito al 40%—y usaron LLMs locales débiles como qwen3-30b-a3b-thinking para depurar ambigüedades en los esquemas.