Контекст, память и RAG
Почему агент забывает, чем «слой памяти» отличается от поиска по документам и когда хватает обычного поиска. Три слова, которые в карточках значат разное.
Почти половина каталога так или иначе обещает «помнить». За этим стоят три разные вещи, и путать их дорого: от этого зависит, будет ли инструмент работать на вашей задаче.
Контекст — то, что модель видит сейчас
У модели есть окно контекста: сколько текста она может держать перед глазами в одном разговоре. Всё, что не влезло, для неё не существует.
Отсюда первая неприятность: длинный разговор не «помнится», а обрезается. Модель не помнит начало беседы — она видит только то, что ей передали в этот раз.
Второе: контекст стоит денег и времени. Чем больше текста вы приложили, тем дороже каждый следующий ответ.
Третье и самое коварное: лишний текст мешает. Если положить в контекст сто страниц «на всякий случай», модель хуже находит нужное — это называют потерей в середине: середина длинного текста читается хуже начала и конца.
Память — то, что сохраняется между разговорами
Память — это надстройка над контекстом. Где-то хранятся факты о вас и о работе, и перед новым запросом нужная часть подставляется обратно в контекст.
Хранилище бывает разным: файл в проекте, база, профиль пользователя. Важно не где, а что именно туда попадает и по какому правилу отбирается.
Отсюда главный вопрос к любому «слою памяти»: что он решит забыть. Инструмент, который сохраняет всё подряд, утонет в собственном архиве и будет подставлять мусор.
RAG — поиск, который подставляет найденное
RAG расшифровывается как генерация с опорой на найденное. Работает так:
- Ваши документы режут на куски — чанки.
- Каждый кусок превращают в набор чисел (вектор), по которому можно искать «похожее по смыслу».
- На вопрос ищут несколько ближайших кусков.
- Их подставляют в контекст вместе с вопросом.
Модель не «знает» ваши документы. Она видит те куски, которые нашлись, и отвечает по ним. Не нашлось — отвечает по общим знаниям, и это самая частая причина уверенной чуши в таких системах.
Поэтому в RAG важнее всего не модель, а поиск: как нарезали, как искали, сколько кусков взяли. Плохая нарезка губит даже хорошую модель.
Чем RAG не является
Не обучением. Дообучение меняет саму модель на ваших данных: долго, дорого, и знания в ней застревают на дате обучения. RAG ничего не меняет в модели — он подкладывает текст.
Не «модель знает ваш проект». Она знает только то, что попало в контекст в этот раз.
Не заменой нормального поиска. Если у вас тысяча записей и точные ключевые слова, обычный поиск по словам часто точнее и дешевле вектора. Вектор нужен, когда формулировки разные, а смысл один.
Как выбрать под задачу
| Что нужно | Чем обойтись |
|---|---|
| Найти конкретный документ по названию или коду | обычный поиск по словам |
| Найти «по смыслу», разными словами | поиск по векторам |
| Помнить ваши предпочтения между сессиями | профиль и правила отбора, а не свалка |
| Знать большой объём документации | RAG с хорошей нарезкой |
| Изменить стиль ответов модели | дообучение или хорошая инструкция |
Что проверить у инструмента
Где хранится индекс и кто его видит. Что именно попадает в запрос — целиком документы или найденные куски. Что происходит, когда ничего не нашлось: говорит «не знаю» или сочиняет. И сколько это стоит на вашем объёме: векторный поиск дешёвый, а вот загрузка тысячи документов в модель — нет.
Все материалы · Метки · Объяснялки · RSS · JSON для агента