Comments 9
При рестарте рестарте контейнера вся память теряется, это ИМХО главная проблема.
Именно по теме RAG для телеграм бота я читал статью:
https://habr.com/ru/articles/988358/
Вот вкратце разница:
Критерий // NGT Memory //«Гриша»
Тип памяти // Векторная + графовая + профиль // Ключевые слова + паттерны + профиль
Хранение // In-memory (RAM одного процесса) // JSON-файлы на диске
Поиск // Косинусное сходство эмбеддингов + Хеббовский граф // Инвертированный индекс по ключевым словам
Что запоминает // Факты о пользователе (извлечение через regex + эвристики) // Успешные Q&A-паттерны + имя пользователя
Обучение // Консолидация частых фактов // Сохранение удачных ответов + счётчик использования
Зависимости // OpenAI API для эмбеддингов // Локальная модель (Qwen), без внешних API
Масштабируемость // Низкая (in-memory, single worker) // Средняя (файлы, но нет индексов для больших объёмов)
Задержка // ~2-3 мс память + ~700 мс на эмбеддинги // ~50-200 мс поиск по ключевым словам (локально)
Согласен, рестарт = потеря — больно. Это MVP, проверял гипотезу про retrieval, а не инфраструктуру.
Разница с «Гриша» простая: я за качество поиска (эмбеддинги понимают смысл, а не только точное слово), «Гриша» за скорость и автономность (локальная модель, файлы на диске).
Redis под капотом уже в планах — там абстракция SessionStore есть, осталось реализовать.
Мне кажется вот этот вариант сохранения ИИ личности лучше, так как не требует для своей работы LLM, да и данные после перезапуска контейнера или даже смены агента не теряются.
Прочитал описание, звучит очень круто, продумано до мелочей. и всего 7 звёзд.
Согласен, hippograph — крутой проект. Но это немного разные задачи:
hippograph — сохраняет личность ИИ (характер, стиль, предпочтения самого агента).
NGT — помнит факты о пользователе (вегетарианец, аллергия, город).
Представь: hippograph делает так, чтобы бот всегда был вежливым и любил анекдоты.
NGT делает так, чтобы бот не предлагал стейк вегетарианцу.
Можно использовать вместе — hippograph задаёт характер, NGT подкидывает контекст про конкретного собеседника.
Спасибо большое за статью! Очень круто, что поделились реальными тестами
Один момент, который было бы здорово уточнить: в тестах без памяти какой именно был сетап? (что-то конкретное по промптам/окну/инструкциям?)
И ещё — какую модель вы в итоге использовали? Было бы супер узнать детали, очень интересно, как это повлияло на результаты.
Жду продолжения, пишите ещё такие материалы!
То же активно интересуюсь темой. Из последнего что нашел это темпоральные графы. Про ту же временную инвалидацию.
И трёх уровневую систему памяти к примеру cortex-mem. В гитхаб есть.
Систему многоуровневого доступа (L0/L1/L2), которая включает краткие абстракты, структурированные обзоры и полные версии данных для оптимизации контекста.
“мне 30 лет”
А через 5 лет мне все еще будет 30? Есть механизм определения таких плавающих данных? Если я в чате сказал - другу исполнилось вчера 30 лет, то я смогу в другой момент/месяц/год узнать когда у него ДР?
Open-source персистентная память для LLM