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

Sandbox0: Infraestructura de Sandbox de Código Abierto Nativa de Kubernetes para Agentes de IA
Herramientas

Sandbox0: Infraestructura de Sandbox de Código Abierto Nativa de Kubernetes para Agentes de IA

Sandbox0 es una infraestructura de sandbox de código abierto para agentes de IA construida sobre Kubernetes con almacenamiento persistente a través de JuiceFS y escalado automático. Aborda limitaciones como límites de concurrencia y ejecución efímera que se encuentran en soluciones existentes.

OpenClawRadar
Servidor Coordinador para Desarrollo Multi-Agente Previene Sobrescrituras
Herramientas

Servidor Coordinador para Desarrollo Multi-Agente Previene Sobrescrituras

Un desarrollador creó un servidor coordinador en Node.js que gestiona el bloqueo por rangos de líneas, el seguimiento de desplazamientos de líneas y la mensajería en tiempo real entre agentes de IA que trabajan en la misma base de código. El sistema evita que los agentes sobrescriban el trabajo de otros mediante bloqueos basados en HTTP con detección de conflictos.

OpenClawRadar
OpenClaw Alexa Voice Proxy Permite la Interacción de Voz Bidireccional
Herramientas

OpenClaw Alexa Voice Proxy Permite la Interacción de Voz Bidireccional

openclaw-alexa-voice es un proxy de Node.js que conecta una Skill Personalizada de Alexa con la puerta de enlace OpenClaw mediante un sistema de respuesta de tres niveles para consultas de voz. Maneja respuestas rápidas en menos de 1 segundo, respuestas del agente en menos de 12 segundos y consultas complejas diferidas que se procesan de forma asincrónica en un plazo de 2 minutos.

OpenClawRadar
nex-life-logger: Rastreador de Actividad Local para Agentes OpenClaw
Herramientas

nex-life-logger: Rastreador de Actividad Local para Agentes OpenClaw

nex-life-logger es un rastreador de actividades en segundo plano que se ejecuta localmente en tu máquina, dando a los agentes de OpenClaw memoria de tus actividades informáticas. Rastrea el historial del navegador, las ventanas activas y las transcripciones de YouTube, almacenando todo en una base de datos SQLite local sin transmisión de datos a la nube.

OpenClawRadar