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

✍️ OpenClawRadar📅 Publicado: 1 de abril de 2026🔗 Source
Ninetails Memory Engine V4.5: Cuantización Int8 + Caché LRU Reduce la Memoria MCP Local a 60MB
Ad

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.

Ad

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

Ad

👀 Ver también

Integración de Claude con Canva: un flujo de trabajo práctico para la generación de diseño
Herramientas

Integración de Claude con Canva: un flujo de trabajo práctico para la generación de diseño

El conector de Canva de Claude exporta proyectos editables de Canva con diseños estructurados, no imágenes planas. La publicación detalla un flujo de trabajo desde el prompt hasta el carrusel terminado en 12-15 minutos, incluyendo configuración, modo de alta fidelidad y limitaciones honestas.

OpenClawRadar
🦀
Herramientas

Globo que explota cuando Claude termina: Interfaz de agente físico con whisper.cpp

Un globo de escritorio se infla mientras hablas una tarea, luego flota por la pantalla mientras Claude Code ejecuta el agente. La transcripción se procesa localmente con whisper.cpp, los agentes usan tu cuenta de Claude Code existente. Código abierto y gratuito.

OpenClawRadar
Script de PowerShell automatiza la configuración de Docker para OpenClaw en Windows
Herramientas

Script de PowerShell automatiza la configuración de Docker para OpenClaw en Windows

Un script de PowerShell maneja las peculiaridades específicas de Windows en la red y la configuración de Docker para OpenClaw, automatizando comprobaciones, obtención de imágenes, guía de configuración e implementación de contenedores.

OpenClawRadar
Benchmark Muestra que la Herramienta CLI Reduce los Costos de Tokens de Código de Claude en un 32% Mediante Navegación Estructural
Herramientas

Benchmark Muestra que la Herramienta CLI Reduce los Costos de Tokens de Código de Claude en un 32% Mediante Navegación Estructural

Un desarrollador creó una herramienta CLI en Rust que proporciona a los agentes Claude Code comandos de navegación estructural como 'muéstrame un resumen de 180 tokens de esta clase de 6,000 tokens'. La evaluación comparativa en Sonnet 4.6 a lo largo de 54 ejecuciones automatizadas mostró un 32% menos de costo por tarea y un 67% más de ediciones de código por sesión.

OpenClawRadar