В момент, когда локальный LLM-агент исчерпывает контекст, разговор перестает быть логичным. На восьмом ходу модель пытается ссылаться на файл, который она уже удалила из своего окна, вывод вызова инструмента съедает 6000 токенов на рутинном шаге, и следующий ответ — это извинение вместо плана. Заставить работающую дома модель 7B или 13B решить задачу на пятидесяти этапах — это не столько о размере модели, сколько о том, что входит и выходит из окна.
Мы протестировали семь приложений и библиотек, которые управляют контекстом вокруг локальных LLM. Некоторые из них — это хранилища памяти, которые сохраняются между сессиями, некоторые — это движки подсказок, которые суммируют перед переполнением, а одно — сам сервер Ollama с правильными настройками. Ниже описано, что действительно помогло нашему тестовому агенту остаться в фокусе на протяжении 90-минутной сессии кодирования с моделью 13B.
На что обратить внимание в менеджере контекста
- Автоматическое резюмирование. Инструмент должен заметить, когда окно приближается к емкости, и свернуть более старые ходы, не теряя намерения.
- Поиск по растущей истории. Файл, документ или прошлый чат, на который ссылаются по встраиванию, дешевле, чем тот же контент, вставленный обратно в подсказку.
- Постоянная память между сессиями. Агент должен помнить, что вы ему рассказали два дня назад о вашем проекте, без необходимости повторяться.
- Дисциплина токенов при вызове инструментов. Большие выходы инструментов (результаты grep, HTTP-ответы) должны быть обрезаны или на них ссылаться по обработчику, а не вставляться сырыми в следующий ход.
- Ollama-native или совместимость с OpenAI. Инструмент должен использовать тот же протокол, что и ваша локальная среда выполнения.
- Только локальный режим. Ничто в управлении контекстом не должно требовать звонка облачному сервису.
Быстрое сравнение
| Приложение | Лучше всего для | Лицензия | Бесплатный план | Начальная цена | Рейтинг |
|---|---|---|---|---|---|
| LangChain | Полная структура для оркестрации контекста | MIT | Бесплатно | Бесплатно | 4.5 |
| LlamaIndex | Агенты с приоритетом поиска | MIT | Бесплатно | Бесплатно | 4.6 |
| Mem0 | Долгосрочное хранилище памяти | Apache 2.0 | Самостоятельный хостинг бесплатно | Около 19 $/месяц размещенных | 4.5 |
| Chroma | Встроенная векторная база данных | Apache 2.0 | Бесплатно | Бесплатно | 4.5 |
| Continue | VS Code агент с правилами контекста | Apache 2.0 | Бесплатно | Бесплатно | 4.6 |
| Open WebUI | Чат UI с каналами документов и памяти | BSD-3 | Бесплатно | Бесплатно | 4.7 |
| Ollama | Среда выполнения с параметрами контекста для каждой модели | MIT | Бесплатно | Бесплатно | 4.7 |
Приложения
1. LangChain — Лучшая полная структура для оркестрации контекста
LangChain — это структура, на которую обращаются большинство проектов локальных LLM в момент, когда управление контекстом становится реальной проблемой. Буферы разговоров с ограничениями по токенам, цепи автоматического резюмирования, хранилища истории сообщений и API памяти, который подключается к любому протоколу LLM, являются примитивами первого класса.
Для агента, который выполняет много ходов с инструментами, ConversationTokenBufferMemory в сочетании с цепью MapReduceSummarize предотвращает взрывное увеличение окна. Он хорошо интегрируется с серверами Ollama и llama.cpp.
Где это не работает: Поверхность API огромна, и самый быстрый путь не всегда очевиден. Еженедельные выпуски иногда ломают малые импорты. Отладка длинной цепи требует пользовательского интерфейса LangSmith или внимательного логирования.
Цены:
- Бесплатно: Полная библиотека, лицензия MIT
- Платно: Уровень облачной трассировки LangSmith с 39 $/пользователь/месяц
Платформы: Python, JavaScript на Windows, macOS, Linux
Загрузить: LangChain
Итоговая строка: Выберите это, когда агенту нужно много примитивов (память, поиск, маршрутизация инструментов) в одном месте.
2. LlamaIndex — Лучше всего для агентов с приоритетом поиска
LlamaIndex рассматривает контекст как проблему запроса. Вместо того, чтобы вставлять весь документ в подсказку, он индексирует документ с встраиваниями и вытягивает только абзацы, которые модели нужны на этом ходу. Результат — гораздо меньшее рабочее окно и гораздо более длинная эффективная память.
Библиотека поставляется с соединителями для PDF, Markdown, репозиториев кода, Notion и баз данных. Его примитив ChatEngine сохраняет состояние разговора при извлечении релевантных фрагментов за ход.
Где это не работает: Конструкция с приоритетом поиска предполагает, что у вас есть документы для индексирования. Для чистого агента чата без внешних корпусов это больше настройки, чем простые буферы памяти.
Цены:
- Бесплатно: Лицензия MIT
- Платно: Размещение управляемых LlamaCloud с 50 $/месяц
Платформы: Python, TypeScript на Windows, macOS, Linux
Загрузить: LlamaIndex
Итоговая строка: Правильный выбор, когда работа агента включает рассуждения о документах, а не прокатку чата.
3. Mem0 — Лучше всего для долгосрочного хранилища памяти
Mem0 (ранее Embedchain) — это сервис памяти, предназначенный для того, чтобы дать агенту напоминание между сессиями. Он поглощает разговоры, извлекает прочные факты, индексирует их и автоматически вводит релевантные в следующую подсказку. Результат — агент, который «помнит» структуру вашего проекта, стиль кодирования или текущую задачу без воспроизведения пользователем.
Самостоятельный режим работает против локального Postgres или SQLite и читает и записывает через Python клиент. Размещенный уровень существует для команд, которые не хотят запускать инфраструктуру.
Где это не работает: Качество извлечения памяти зависит от модели. Модель 7B производит более шумные воспоминания, чем модель 13B или размещенная модель переднего края. Часто требуется некоторая настройка подсказки средства извлечения.
Цены:
- Бесплатно: Самостоятельный Apache 2.0
- Платно: Размещенные с 19 $/месяц для людей, выше для команд
Платформы: Python клиент на Windows, macOS, Linux; размещенный API
Загрузить: Mem0
Итоговая строка: Очевидный выбор, когда вы хотите, чтобы агент помнил ваш проект между перезагрузками.
4. Chroma — Лучше всего встроенная векторная база данных
Chroma — это небольшая встроенная векторная база данных, которая работает в процессе с приложением Python или JavaScript. Встроить фрагмент с моделью по вашему выбору, вставить его в коллекцию Chroma и запросить путем сходства косинусов, чтобы вытянуть его позже. Без сервера, без кластера, без операций.
Для управления контекстом локального LLM Chroma является слоем хранения под большинством моделей поиска в LangChain и LlamaIndex. Он также работает как легкий сервер для случаев, когда несколько процессов совместно используют одно хранилище.
Где это не работает: Не полная структура памяти. Вы разводите логику поиска самостоятельно. Задержка запроса на очень больших коллекциях (миллионы фрагментов) отстает от Qdrant и Milvus.
Цены:
- Бесплатно: Apache 2.0
- Платно: Бета-версия Chroma Cloud доступна для команд
Платформы: Python, JavaScript, в процессе на Windows, macOS, Linux
Загрузить: Chroma
Итоговая строка: Чистый выбор, когда вам просто нужно место для хранения встраиваний без запуска сервера.
5. Continue — Лучше всего VS Code агент с правилами контекста
Continue — это расширение VS Code (и JetBrains) с открытым исходным кодом, которое превращает локальный экземпляр Ollama или llama.cpp в агента кодирования внутри редактора. Его config.yaml устанавливает правила контекста для каждого проекта: какие файлы включать автоматически, какие резюмировать и какие игнорировать.
Палитра команд @ подтягивает определенный контекст по названию: @file для текущего файла, @codebase для семантического поиска по репо, @docs для внешней документации. Каждая ссылка @ — это контролируемая инъекция контекста, а не вставка.
Где это не работает: Конфигурация YAML-тяжелая и требует сессию для настройки. Некоторые конфигурации поиска слишком сильно предубеждены в сторону маленьких файлов.
Цены:
- Бесплатно: Apache 2.0
- Платно: Функции Hub (общие помощники, частные хабы) с 10 $/пользователь/месяц
Платформы: VS Code, JetBrains, Windows, macOS, Linux
Загрузить: Continue
Итоговая строка: Правильный выбор, когда агент живет в вашем редакторе и нужен правильный срез репо, а не все дерево.
6. Open WebUI — Лучше всего чат UI с каналами документов и памяти
Open WebUI — это фронтэнд в стиле ChatGPT для локальных моделей с двумя функциями, которые решают проблемы контекста напрямую: каналы документов RAG и память для каждого пользователя. Загрузите PDF или вставьте URL-адрес, и Open WebUI фрагментирует, встраивает и извлекает во время чата. Панель памяти позволяет пользователю сохранять прочные заметки, которые модель консультирует на каждом ходу.
Функция Pipelines позволяет вам подключать пользовательские фильтры (резюмирование, редакция, маршрутизация инструментов), которые работают до или после вызова модели. Продвинутые пользователи пишут свой собственный конвейер на Python и бросают его в папку плагина.
Где это не работает: Не безголовой. Каждый путь агента заканчивается в окне чата. Рабочие процессы, ориентированные на автоматизацию, используют вместо этого Continue или LangChain.
Цены:
- Бесплатно: BSD-3
- Платно: Нет; доступна поддержка корпоративного уровня
Платформы: Docker, Kubernetes, Python на Windows, macOS, Linux
Загрузить: Open WebUI
Итоговая строка: Выберите это, когда человек ведет чат, а проблема «исчерпать контекст» на самом деле — это проблема «приложения и памяти».
7. Ollama — Лучше всего среда выполнения с параметрами контекста для каждой модели
Ollama — это локальная среда выполнения модели, с которой говорит почти каждый другой инструмент на этой странице. История управления контекстом здесь — это не структура, а два флага: num_ctx в файле модели, чтобы поднять размер окна, и параметр keep_alive, чтобы держать кэш KV в RAM между вызовами.
Повышение num_ctx с дефолта 4096 до 32768 на модели 13B тихо решает большинство отчетов об «агент забыл» до того, как кто-либо коснется LangChain. Компромисс — занимаемая память и пропускная способность за токен.
Где это не работает: Нет памяти, нет поиска, нет резюмирования. Он только держит то, что вы отправляете ему в подсказку.
Цены:
- Бесплатно: MIT
- Платно: Нет
Платформы: Windows, macOS, Linux, ARM64
Загрузить: Ollama
Итоговая строка: Установите num_ctx в первую очередь. Затем дойдите до фреймворков выше. В этом порядке.
Как выбрать правильное
- Если вы отбиваетесь о жесткую стену в 4096 токенов: Ollama. Измените
num_ctxперед переписыванием вашего приложения. - Если вы хотите структуру, которая охватывает память, поиск и маршрутизацию инструментов: LangChain.
- Если агент отвечает на вопросы по документам: LlamaIndex.
- Если агент должен помнить, что произошло на прошлой неделе: Mem0.
- Если вы уже запускаете LangChain и просто нужно откуда-то положить встраивания: Chroma.
- Если агент живет в VS Code: Continue.
- Если человек ведет чат и нуждается в загрузках плюс память: Open WebUI.
Часто задаваемые вопросы
Почему мой локальный LLM-агент забывает вещи во время задачи?
Каждая модель имеет жесткий предел токенов для окна подсказки. Когда разговор, вывод инструмента и инструкции превышают этот предел, среда выполнения молча отбрасывает более ранние токены. Агент по-прежнему генерирует, но с усеченным представлением задачи. Поднимите num_ctx на модели и добавьте резюмировщик, который складывает более старые ходы в сжатую историю.
В чем разница между управлением контекстом и памятью?
Управление контекстом — это то, что вписывается в окно текущей подсказки (обычно краткосрочное). Память — это то, что сохраняется между подсказками, сессиями и перезагрузками (долгосрочное). Mem0 и Open WebUI охватывают память; LangChain, LlamaIndex и Continue сосредоточены на контексте.
Сколько контекста может обработать локальный LLM?
Зависит от модели и вашего бюджета RAM. Llama 3.1 8B поддерживает 128K токенов, если среда выполнения это соблюдает. На практике 32K до 64K имеет разумную задержку на потребительском оборудовании. Очень длинные контексты также увеличивают недоумение, поэтому обрезка часто лучше, чем начинка.
Эти инструменты работают с LM Studio и llama.cpp?
LangChain, LlamaIndex, Continue и Open WebUI все говорят на совместимом с OpenAI API, который раскрывают сервер LM Studio и llama.cpp. Mem0 и Chroma — это слои хранения и работают с любым поставщиком, на которого вы указываете.
Это Mem0 открытый исходный код?
Да. Основная библиотека Mem0 — это Apache 2.0 и самостоятельный хостинг. Платный размещенный уровень — это слой удобства, а не слой подпирающий OSS.
Могу ли я использовать эти на Apple Silicon?
Все семь подборок работают на Apple Silicon в родном виде. Ollama, Continue и Open WebUI имеют первоклассные сборки ARM64. LangChain, LlamaIndex, Mem0 и Chroma — это библиотеки Python или Node и работают везде, где работают Python или Node.