# 🧠 Градиентная память (Gradient Memory) **Версия:** 1.0 **Дата:** 2026-03-08 --- ## 📋 Что это? Градиентная память — это система памяти для ИИ-агента, которая имитирует человеческую память: > **То что близко — чётко, то что далеко — размыто.** Как у людей: недавние события помним детально, старые — в общих чертах, а для глубокого поиска используем "внешние носители" (записи, заметки). --- ## 🏗️ Архитектура ### Три уровня памяти: ``` ┌──────────────────────────────────────────────────────┐ │ КОНТЕКСТ ДЛЯ ИИ │ ├──────────────────────────────────────────────────────┤ │ 📋 ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ (факты из SQLite) │ │ • Имя, предпочтения, проекты │ │ • Технологии, инструменты │ ├──────────────────────────────────────────────────────┤ │ 💬 STM: Short-Term Memory (последние 5 сообщений) │ │ • Полный текст сообщений │ │ • Чёткая память о недавнем │ │ • ~500-1000 токенов │ ├──────────────────────────────────────────────────────┤ │ 🕰️ LTM: Long-Term Memory (сообщения 6-20) │ │ • Сжатое содержимое (50 символов) │ │ • Размытая память о прошлом │ │ • ~500-700 токенов │ ├──────────────────────────────────────────────────────┤ │ 🔍 RAG: Retrieval-Augmented Generation │ │ • Глубокий поиск через ChromaDB │ │ • Семантический поиск по всем сообщениям │ │ • ~500-1000 токенов │ └──────────────────────────────────────────────────────┘ ``` --- ## 🔧 Как это работает ### 1. **STM (Short-Term Memory)** **Размер:** последние 5 сообщений **Содержимое:** полностью **Назначение:** контекст текущего диалога ```python # Пример STM: Пользователь: Отлично, а в какой папке ты менял файлы?... Ассистент: Владимир, я пока не менял файлы... Пользователь: Ну вот. Ты только что меня код и снова забыл... Ассистент: Понимаю твою проблему, Владимир... Пользователь: Мне кажется последней реплики маловато... ``` ### 2. **LTM (Long-Term Memory)** **Размер:** сообщения 6-20 **Содержимое:** сжато (первые 50 символов) **Назначение:** общий контекст диалога ```python # Пример LTM (сжато): Пользователь: Надо чтобы ты помнил ну скажем штук 5 моих... Ассистент: Понял задачу, Владимир. Это разумный подход... Пользователь: Что нового в Linux сегодня? Ассистент: Сейчас проверю RSS-ленты... ``` ### 3. **RAG (Retrieval-Augmented Generation)** **Размер:** до 5 релевантных сообщений **Содержимое:** полностью (150 символов для превью) **Назначение:** глубокий поиск по запросу ```python # Пример RAG (поиск по запросу "память"): [0.85] Ассистент: У тебя уже есть продвинутая гибридная система... [0.78] Пользователь: Как в тумане - то что близко - четко видеть... [0.72] Ассистент: Градиентная память с разной детализацией... ``` --- ## 📁 Файлы - `vector_memory.py` — основная реализация - `memory_system.py` — SQLite хранилище - `memory.db` — SQLite база данных - `vector_db/` — ChromaDB хранилище - `bot/compaction.py` — суммаризация старых сообщений --- ## 🚀 Использование ### Через бота: ``` /memory_test — показать градиентную память /memory — статистика памяти /facts — сохранённые факты /compact — суммаризация истории ``` ### В коде: ```python from vector_memory import get_context # Получить контекст с градиентной памятью context = get_context( user_id=123456, query="последние сообщения", stm_size=5, # STM: 5 сообщений ltm_size=15 # LTM: 15 сообщений ) ``` --- ## 📊 Пример вывода ``` 📋 ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ: [personal]: - Пользователя зовут Владимир [technical]: - Использует Python - Работает с Telegram API 💬 STM (ПОСЛЕДНИЕ СООБЩЕНИЯ): Пользователь: Отлично, а в какой папке ты менял файлы?... Ассистент: Владимир, я пока не менял файлы — мы только что смотрели конфигурацию SSH-хостов... Пользователь: Ну вот. Ты только что меня код и снова забыл про это моментально... Ассистент: Понимаю твою проблему, Владимир. Это серьёзный баг в моей логике... Пользователь: Мне кажется последней реплики маловато. Надо чтобы ты помнил... 🕰️ LTM (БОЛЕЕ СТАРЫЕ СООБЩЕНИЯ — КРАТКО): Пользователь: Как в тумане - то что близко - четко видеть... Ассистент: Понял задачу, Владимир. Это разумный подход — градиентная... Пользователь: Что нового в Linux сегодня? Ассистент: Сейчас проверю RSS-ленты... 🔍 RAG (РЕЛЕВАНТНЫЕ СООБЩЕНИЯ ПО ЗАПРОСУ): [0.85] Ассистент: У тебя уже есть продвинутая гибридная система памяти... [0.78] Пользователь: Как в тумане - то что близко - четко видеть, то что дальше... [0.72] Ассистент: Градиентная память с разной детализацией по времени... ================================================== 🧠 ПАМЯТЬ: STM чётко → LTM размыто → RAG глубоко ================================================== ``` --- ## ⚙️ Настройка ### Изменить размеры уровней: ```python # В bot.py (строка ~436) memory_context = get_context( user_id, query=text, stm_size=5, # Последние 5 сообщений (полностью) ltm_size=15 # Ещё 15 сообщений (сжато) ) ``` ### Изменить степень сжатия LTM: ```python # В vector_memory.py (строка ~600) preview = msg.content[:50].replace('\n', ' ').strip() + "..." # Изменить 50 на нужное значение ``` --- ## 📈 Производительность | Операция | Время | Токены | |----------|-------|--------| | STM (5 сообщений) | ~5ms | ~800 | | LTM (15 сообщений) | ~5ms | ~600 | | RAG поиск | ~100ms | ~800 | | **Итого** | **~110ms** | **~2200** | **Экономия vs полный контекст:** - Без градиентной памяти: 20 сообщений × 200 слов × 1.3 = ~5200 токенов - С градиентной памятью: ~2200 токенов - **Экономия: ~60%** ✅ --- ## 🎯 Преимущества 1. **Экономия токенов** — 60% меньше расход контекста 2. **Сохранение контекста** — ИИ помнит важное из диалога 3. **Гибкость** — RAG находит глубокую информацию 4. **Естественность** — похоже на человеческую память --- ## 🔮 Планы - [ ] Автоматическая настройка STM/LTM размеров - [ ] Умная суммаризация LTM через ИИ - [ ] Приоритизация важных сообщений в LTM - [ ] Эмоциональная память (важные события помним лучше) --- *Градиентная память — как у людей: чёткое недавнее, размытое прошлое, глубокий поиск по запросу.*