Обучение · Агенты и вайб-кодинг

Глава 17. Память: файлы, векторы, нити

Память это то, что должно сохраниться, когда разговор кончится. Подходов три, и решают они разные задачи. Путаница между ними обходится в круглую сумму, поэтому разберём каждый по отдельности.

Первый подход: файлы Самый простой и самый ходовой. Агент пишет заметки в текстовые файлы, они лежат на диске, при надобности он их читает.

Достоинства очевидны: всё видно глазами, всё правится руками, всё версионируется обычными средствами, ломаться там нечему.

Красивый приём поверх файловой памяти: ночная свёртка. Дневные заметки раз в сутки сворачиваются в недельные, недельные в месячные, месячные в годовые. Верхние уровни короткие, нижние подробные, и глубина уходит по мере старения. Работает пиздато.

Недостаток тоже очевиден, и сформулировали его точно: как организация постоянного хранилища это охуенная классика, а вот как эффективно доставать нужное из кучи файлов, хуй проссышь.

Пока файлов десяток, агент их читает. Когда их триста, он читает не те, и хуй ты угадаешь какие.

Второй подход: векторный поиск Здесь заметки не просто лежат, а превращаются в числовые представления, по которым можно искать похожее по смыслу.

ЧТО ТАКОЕ ПОИСК ПО СМЫСЛУ Обычный поиск ищет совпадение букв. Запрос про машину не найдёт заметку про автомобиль. Поиск по смыслу устроен иначе. Каждый кусок текста превращают в набор чисел так, что близкие по смыслу тексты получают близкие наборы. Дальше поиск это сравнение чисел, а не букв. Работает это хорошо ровно до тех пор, пока близость чисел совпадает с близостью смысла. А совпадает она не всегда, и в этом вся сложность.

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

В первом случае бэкенд получает вопрос, ищет по нему совпадения и кладёт их в контекст ещё до того, как модель начнёт формулировать ответ. Модели решать нечего, факт уже под рукой. Цена этому одна-две секунды на работу поисковой модели.

Во втором случае модель должна догадаться вызвать поиск, сформулировать запрос и дождаться результата. Догадывается она через раз, а то и реже.

Память: файлы, векторы, нити

Болезни векторной памяти Противоречащие факты. Классический пример: человек работал в одной компании, перешёл в другую. Оба факта в памяти, оба похожи на запрос, и выдаются они как бог на душу положит.

Частичное лечение: хранить дату и давать знаниям вес по времени. Полное: фоновая уборка, о которой ниже.

Порог близости. Проблема, у которой красивого решения нет. Поставишь порог низко, и в контекст летит лишнее, близкое по числам и далёкое по смыслу. Поставишь высоко, и нужное перестаёт долетать.

Практик, который с этим бодался, перебрал всё что можно и остановился на честном признании: любой фиксированный порог одновременно слишком строгий и слишком мягкий, и хоть ты тресни. Остаётся либо пропускать всё и переранжировать вторым проходом, либо тратить дополнительный вызов модели на отсев.

Свалка. Без уборки память за месяцы превращается в помойку из несвязных утверждений, и поиск по ней перестаёт значить хоть что-нибудь.

ГЛАВНОЕ ПРО УБОРКУ ПАМЯТИ Память требует регулярной свёртки, и делать её лучше в фоне, а не посреди разговора. Схема, которая работает: ночью отдельный процесс перечитывает накопленное, объединяет повторы, помечает устаревшее, связывает разрозненное. Днём агент пользуется прибранным. Без этого шага деградирует любая память, файлы это или векторы, без разницы.

Третий подход: нити Самая свежая идея из корпуса и, пожалуй, самая полезная.

Нить это что-то между памятью и скиллом. Разговор касается долгого процесса, и модель заводит нить и тянет её во всех последующих обсуждениях этой темы, не теряя нить в буквальном смысле.

Внутри нити не отдельные факты, а набор событий и обоснований, привязанный к теме и времени.

Примеры, на которых разница видна сразу.

Обычный факт Нить

У пользователя болит колено История: когда началось, что пробовали, от чего отказались и почему, что сейчас работает

Инвестиционный профиль консервативный Хронология решений: что покупали, из каких соображений, что оказалось ошибкой

Проект использует такую-то базу Почему её выбрали, какие были альтернативы, при каких условиях решение пересмотрят

Память: файлы, векторы, нити

Ценность в правой колонке одна: агент может опереться на то, почему решение было принято раньше. Без этого он раз за разом тащит то, что ты уже отверг, и объясняй ему каждый раз заново, как первокласснику.

КАК НИТЬ ПОЯВЛЯЕТСЯ

Признак долгого Обращение к Разговор о теме Создание нити Пополнение процесса истории

второй-третий раз решения с одна на тему при каждом касании при новом решении обоснованием

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

Ограничения, о которых надо знать Объём. Память больше пятнадцати-двадцати тысяч символов начинает сыпаться. Агент помнит хуже, а обновление одного факта требует переписывания здорового куска. Память это не архив.

Приватность. Групповая память переживает уход человека из группы. Бот остался, значит он продолжит собирать сведения, когда человека упоминают. Это не злой умысел, а естественное следствие устройства, и решается оно архитектурой, а не обещаниями.

Стоимость. Честный проёб, который стоит знать. В одной реализации маршрутизацией каждого сообщения занимался отдельный фоновый агент: решал, куда его положить. Инженерно красиво, экономически бессмысленно, потому что расход удваивается. Автор сам признал и переделал, без соплей.

КАК ВЫБРАТЬ ПОДХОД 1. Нужно, чтобы человек видел и правил руками? Файлы. 2. Записей больше сотни и надо доставать по смыслу? Векторы поверх файлов. 3. Есть темы, где важна история решений, а не факты? Нити. 4. В любом случае: фоновая свёртка и ограничение объёма. 5. И реши заранее, что происходит с памятью о человеке, когда он уходит.

Контекст и память это разные вещи Напоминание, потому что путают постоянно.

Контекст это то, что модель видит прямо сейчас. Он платный, ограниченный и живёт один разговор.

Память это то, откуда в контекст попадает нужное. Она бесплатна в момент хранения и платна только тогда, когда что-то из неё подставили.

Память: файлы, векторы, нити

Ошибка, которая дорого обходится: складывать в правила проекта то, чему место в памяти. Правила висят в контексте всегда и жрут постоянно, а память подставляется по надобности.

Что запомнить Файлы хороши как хранилище и хуёвы как поиск. Векторы решают вторую задачу и не решают первую.

Подмешивай найденное до вызова модели, а не давай инструмент поиска.

Память без времени пиздит: противоречащие факты будут выдаваться как попало.

Любой фиксированный порог близости неверен. Либо переранжирование, либо дополнительный отсев.

Нити хранят не факты, а историю решений с обоснованиями. Это то, чего не восстановить.

Уборка в фоне обязательна. Без неё деградирует любая память.

И реши заранее, что происходит с памятью о человеке, когда он ушёл.

← Сжатие и что должно его пережить · оглавление · Поиск по коду и по документам →

Спросить книгу может любой, кто вошёл в Neuraldeep Hub: агент ищет ответ по тексту и приводит цитату со ссылкой на главу.