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

✍️ OpenClawRadar📅 Опубликовано: 1 апреля 2026 г.🔗 Source
Ninetails Memory Engine V4.5: Квантование Int8 + Кэш LRU сокращает локальную память MCP до 60 МБ
Ad

Движок памяти 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 записей. Часто используемые векторы остаются в оперативной памяти, а устаревшие — вытесняются.

Ad

Соображения по точности

Квантование 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

Ad

👀 Смотрите также

Бесплатная модель: Tencent Hy3 доступна на OpenRouter в течение 2 недель — попробуйте сейчас
Инструменты

Бесплатная модель: Tencent Hy3 доступна на OpenRouter в течение 2 недель — попробуйте сейчас

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

OpenClawRadar
Клод для дизайн-работы: как перестать повторять одни и те же споры о вкусе на каждом сеансе
Инструменты

Клод для дизайн-работы: как перестать повторять одни и те же споры о вкусе на каждом сеансе

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

OpenClawRadar
Запуск Qwen3.6-35B-A3B-UD-Q5_K_XL локально с VS Code Copilot на AMD R9700
Инструменты

Запуск 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 с нуля при минимальной коррекции.

OpenClawRadar
Проблема с циклом проверки задач в OpenClaw Codex-GPT5.4
Инструменты

Проблема с циклом проверки задач в OpenClaw Codex-GPT5.4

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

OpenClawRadar