Ninetails Memory Engine V4.5 : Quantification Int8 + Cache LRU réduit la mémoire MCP locale à 60 Mo

✍️ OpenClawRadar📅 Publié: April 1, 2026🔗 Source
Ninetails Memory Engine V4.5 : Quantification Int8 + Cache LRU réduit la mémoire MCP locale à 60 Mo
Ad

Le moteur de mémoire Ninetails V4.5 résout le goulot d'étranglement de la mémoire dans les outils MCP (Model Context Protocol) locaux en mettant en œuvre la quantification scalaire Int8 combinée à l'éviction de cache LRU. La solution maintient l'ensemble du processus du moteur fonctionnant dans une application de bureau Tauri avec 40 à 60 Mo de RAM.

Le problème de mémoire

Un plongement standard en float32 de 1536 dimensions occupe environ 6144 octets (~6 Ko). Stocker 10 000 souvenirs signifie ~60 Mo juste pour les vecteurs, passant à ~600 Mo pour 100 000 souvenirs. Pour un outil local fonctionnant sur SQLite, cette consommation de ressources est inacceptable.

Implémentation technique

Couche 1 : Quantification scalaire Int8

En compressant le float32 (4 octets/dim) en int8 (1 octet/dim), le volume de stockage est réduit au quart de sa taille d'origine. L'implémentation calcule la plage numérique de chaque dimension, mappe les flottants à une plage entière de -128 à 127, et déquantifie en float32 lors de la récupération pour la similarité cosinus.

# Quantifier : 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)

# Déquantifier : int8 → float32 (Approximation)
def dequantize_vector(vector_int8, scale, zero_point):
    return (vector_int8.astype(np.float32) - zero_point) * scale

Résultat réel : Un vecteur de 1536 dimensions passe de 6144 octets à 1536 octets. En tenant compte de la surcharge globale de scale et zero_point, le taux de compression réel est d'environ 3,8x - 4,0x.

Couche 2 : Éviction de cache LRU

Les vecteurs quantifiés sont stockés dans une base de données SQLite (vector_cache.sqlite) en utilisant une stratégie Least Recently Used avec une limite stricte de 10 000 entrées. Les vecteurs à haute fréquence restent en RAM tandis que les anciens sont évincés.

Ad

Considérations de précision

La quantification Int8 est avec perte mais acceptable pour la récupération de mémoire car :

  • Le moteur utilise une recherche hybride : 70 % de similarité vectorielle + 30 % BM25. Même si la quantification modifie légèrement le classement des vecteurs, la correspondance exacte des mots-clés via BM25 ramène les souvenirs pertinents vers le haut.
  • La récupération de mémoire IA n'a besoin que de faire remonter le contexte dans les 5 premiers résultats, contrairement aux algorithmes de recommandation qui nécessitent une précision absolue pour la première place.

Clarification sur "TurboQuant"

Le moteur utilise la quantification scalaire Int8 standard pour le stockage vectoriel SQLite, et non le TurboQuant de Google (ICLR 2026), qui est un algorithme de compression 3 bits (PolarQuant + QJL) conçu pour le KV Cache lors de l'inférence GPU des LLM. La mention "TurboQuant Compression" dans l'interface utilisateur est un clin d'œil à la philosophie de réduction agressive des bits.

Stack technique complète

  • Compression vectorielle : Quantification scalaire Int8 (~4x compression réelle)
  • Gestion du cache : SQLite + Éviction LRU (Limite : 10 000 entrées)
  • Moteur de recherche : Hybride : 70 % Similarité vectorielle + 30 % BM25
  • Gestionnaire de profil : Extraction automatique de faits STATIC/DYNAMIC
  • Extraction de faits : Appels LLM asynchrones en arrière-plan via asyncio.to_thread
  • Stockage des données : 3 bases de données SQLite (100 % Local)
  • Application de bureau : Tauri + Vue 3 + PyInstaller sidecar

Le moteur est open-source sous licence MIT sur GitHub : sunhonghua1/ninetails-memory-engine.

📖 Lire la source complète : r/LocalLLaMA

Ad

👀 See Also

Serveur MCP OpenGalatea Connecte Claude aux Imprimantes 3D Prusa
Tools

Serveur MCP OpenGalatea Connecte Claude aux Imprimantes 3D Prusa

OpenGalatea est un serveur MCP open-source qui permet à Claude de contrôler des imprimantes 3D Prusa via PrusaLink, autorisant des commandes en langage naturel pour rechercher sur Printables.com, découper des modèles et gérer les impressions.

OpenClawRadar
yburn : Outil pour auditer et remplacer les tâches cron inutiles des agents IA
Tools

yburn : Outil pour auditer et remplacer les tâches cron inutiles des agents IA

yburn est un outil Python qui audite les tâches cron des agents d'IA et remplace celles qui n'ont pas besoin de LLM par des scripts Python autonomes. Le créateur a constaté que 58 % des 98 tâches cron étaient des tâches purement mécaniques comme des vérifications de santé système et des sauvegardes git.

OpenClawRadar
rawq : Outil CLI Local pour la Recherche Sémantique de Code par Agent IA
Tools

rawq : Outil CLI Local pour la Recherche Sémantique de Code par Agent IA

rawq est un outil CLI open-source qui aide les agents d'IA à trouver du code pertinent en utilisant la recherche sémantique avec un modèle local de 33MB via ONNX runtime et la recherche lexicale BM25 via tantivy. Lors des tests, les agents d'IA utilisant rawq ont consommé 4 fois moins de tokens et ont terminé les tâches 2 fois plus vite comparé aux outils de lecture/recherche aveugles.

OpenClawRadar
CONTACT : Jeu de Combat Naval en 3D Intégralement Construit avec du Code Claude
Tools

CONTACT : Jeu de Combat Naval en 3D Intégralement Construit avec du Code Claude

CONTACT est un jeu de combat naval en 3D entièrement construit avec Claude Code + Opus, mettant en scène un cube volumétrique 7×7×7, une économie de crédits avec avantages tactiques, et trois modes de jeu incluant Humain contre Claude et Sonnet contre Sonnet avec mémoire stratégique persistante.

OpenClawRadar