Ninetails Memory Engine V4.5: Квантование Int8 + Кэш LRU сокращает локальную память MCP до 60 МБ

Движок памяти Ninetails V4.5 решает проблему узкого места в памяти для локальных инструментов MCP (Model Context Protocol), внедряя скалярную квантовую обработку Int8 в сочетании со стратегией вытеснения LRU. Решение позволяет всему процессу движка работать в настольном приложении Tauri, занимая всего 40–60 МБ оперативной памяти.
Проблема с памятью
Стандартное вложение с 1536 измерениями в формате float32 занимает около 6144 байт (~6 КБ). Хранение 10 000 воспоминаний означает ~60 МБ только для векторов, а для 100 000 воспоминаний — уже ~600 МБ. Для локального инструмента, работающего на SQLite, такое потребление ресурсов неприемлемо.
Техническая реализация
Уровень 1: Скалярная квантовая обработка Int8
Сжатие float32 (4 байта/измерение) до int8 (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 байт. С учётом накладных расходов на глобальный масштаб и нулевую точку реальный коэффициент сжатия составляет около 3,8–4,0.
Уровень 2: Стратегия вытеснения LRU
Квантованные векторы хранятся в базе данных SQLite (vector_cache.sqlite) с использованием стратегии наименее недавно использованных (LRU) и жёстким ограничением в 10 000 записей. Часто используемые векторы остаются в оперативной памяти, а устаревшие — вытесняются.
Соображения по точности
Квантование Int8 приводит к потере данных, но допустимо для извлечения памяти, потому что:
- Движок использует гибридный поиск: 70% векторного сходства + 30% BM25. Даже если квантование слегка искажает ранжирование векторов, точное совпадение ключевых слов через BM25 возвращает релевантные воспоминания наверх.
- Для извлечения памяти ИИ достаточно вывести контекст в топ-5 результатов, в отличие от рекомендательных алгоритмов, которым нужна абсолютная точность для первого места.
Пояснение по поводу «TurboQuant»
Движок использует стандартную скалярную квантовую обработку Int8 для хранения векторов в SQLite, а не TurboQuant от Google (ICLR 2026), который представляет собой алгоритм сжатия на 3 бита (PolarQuant + QJL), разработанный для кэша ключ-значение при выводе ИИ на GPU. Брендинг «TurboQuant Compression» в интерфейсе — это дань философии агрессивного сокращения битов.
Полный технологический стек
- Сжатие векторов: Скалярная квантовая обработка Int8 (~4x реальное сжатие)
- Управление кэшем: SQLite + стратегия вытеснения LRU (ограничение: 10 000 записей)
- Поисковая система: Гибридная: 70% векторного сходства + 30% BM25
- Менеджер профилей: Автоматическое извлечение фактов STATIC/DYNAMIC
- Извлечение фактов: Фоновые асинхронные вызовы ИИ через
asyncio.to_thread - Хранение данных: 3 базы данных SQLite (100% локально)
- Настольное приложение: Tauri + Vue 3 + PyInstaller sidecar
Движок имеет открытый исходный код под лицензией MIT на GitHub: sunhonghua1/ninetails-memory-engine.
📖 Read the full source: r/LocalLLaMA
👀 Смотрите также

Бесплатная модель: Tencent Hy3 доступна на OpenRouter в течение 2 недель — попробуйте сейчас
Tencent Hy3 бесплатен на OpenRouter в течение 2 недель. Используйте его в OpenClaw через openrouter/tencent/hy3:free. Подробности из r/openclaw.

Клод для дизайн-работы: как перестать повторять одни и те же споры о вкусе на каждом сеансе
Разработчик, выполняющий работу для клиентов через Claude, описывает основную проблему: у Claude нет памяти о отвергнутых дизайнерских решениях, что приводит к шаблонным результатам и несогласованному брендовому стилю.

Запуск Qwen3.6-35B-A3B-UD-Q5_K_XL локально с VS Code Copilot на AMD R9700
Пользователь делится своей рабочей конфигурацией llama.cpp для Qwen3.6-35B-A3B-UD-Q5_K_XL на одной AMD R9700 с Vulkan, которая позволяет генерировать полноценный сайт и набор тестов Playwright с нуля при минимальной коррекции.

Проблема с циклом проверки задач в OpenClaw Codex-GPT5.4
Разработчик сообщает, что Codex-GPT5.4 через OpenClaw застревает в цикле проверки задач во время автономной работы над проектом, постоянно идентифицируя и подтверждая задачи без их выполнения. Для решения проблемы были внедрены элементы управления рабочей областью, включая TASKS.md, правила heartbeat и файлы персонажей.