ContextForge: SDK для бесконечного контекста LLM | Обзор и установка | AiManual
AiManual Logo Ai / Manual.
27 Июн 2026 Инструмент

ContextForge: SDK для бесконечного контекста LLM с долгосрочной памятью — обзор и установка

Обзор open-source SDK ContextForge, который решает проблему ограниченного контекста LLM. Установка, примеры кода, сравнение с LCME и NGT Memory.

Реклама
cliv1

Вы когда-нибудь пытались заставить GPT-4o или Llama 3 помнить, о чём вы говорили пять минут назад? У меня — да. И каждый раз это похоже на попытку объяснить коту, что диван — не его личная царапалка. Модели просто сбрасывают контекст, как только он превышает их «окно». Но это 2026 год, и проблема контекста уже не должна быть головной болью. Знакомьтесь: ContextForge — open-source SDK, который обещает бесконечный контекст и настоящую долгосрочную память для любой LLM.

Что это? ContextForge — это Python-библиотека, которая автоматически сжимает, индексирует и извлекает релевантные фрагменты предыдущих диалогов. Работает с любыми LLM — от локальных (llama.cpp, Ollama) до облачных (OpenAI, Anthropic). Никаких ограничений по длине истории, кроме объёма вашего хранилища.

Чем ContextForge отличается от «ещё одной памяти»?

На рынке уже есть решения вроде LCME — супербыстрая память на коленке, но документация там… скажем так, «для посвящённых». Или NGT Memory — персистентная, но заточена под строго локальные модели. А ещё есть те, кто до сих пор делает ручное управление контекстом — и это работает, но адски больно, когда диалогов тысяча.

ContextForge идёт по другому пути: он не просто хранит историю, а создаёт семантический индекс и при каждом запросе динамически собирает «пакет» релевантных кусков. Встроенная компрессия сжимает каждое сообщение до эмбеддинга, что экономит место и ускоряет поиск. И главное — он ничего не знает о модели. Вы просто подключаете его как прокси-слой:

import contextforge

# Инициализируем память (по умолчанию SQLite + FAISS)
memory = contextforge.Memory()

# Добавляем сообщение с метаданными
memory.add(
    text="Меня зовут Иван, я разработчик из Москвы",
    tags={"user": "user_123", "session": "abc"}
)

# Извлекаем релевантный контекст для нового вопроса
context = memory.query("Как зовут пользователя?", top_k=3)
# Вернёт текст: "Меня зовут Иван, я разработчик из Москвы"
print(context)
💡
ContextForge использует FAISS для поиска по эмбеддингам и SQLite для метаданных. Можно переключить на PostgreSQL или Milvus. Всё конфигурируется одной строкой.

Быстрый старт: установка и первый запуск

Ставится за секунду (нужна Python 3.10+):

pip install contextforge[faiss]

Если у вас слабый ноутбук — не проблема. ContextForge отлично работает даже на 4 ГБ ОЗУ, а для продакшена рекомендую запускать на облачных GPU с нормальным объёмом RAM. Теперь давайте сделаем чат-бота, который помнит всё:

from contextforge import Memory
from openai import OpenAI

# Память
mem = Memory()
# Клиент (может быть локальный через Ollama)
llm = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

session_id = "session_1"

while True:
    user_input = input("Вы: ")
    # Сохраняем сообщение пользователя
    mem.add(text=user_input, tags={"session": session_id, "role": "user"})
    
    # Получаем историю (последние 10 сообщений + релевантные старые)
    history = mem.get_recent(tags={"session": session_id}, n=10)
    relevant = mem.query(user_input, top_k=5)
    
    # Собираем контекст
    full_context = "\n".join([msg["text"] for msg in history + relevant])
    
    # Отправляем в LLM
    response = llm.chat.completions.create(
        model="qwen3.5:35b",  # хотя бы Qwen 3.5, да?
        messages=[{"role": "user", "content": full_context + "\nОтветь: " + user_input}]
    ).choices[0].message.content
    
    # Сохраняем ответ
    mem.add(text=response, tags={"session": session_id, "role": "assistant"})
    print(f"Бот: {response}")

Важно: Не отправляйте всю историю целиком, если модель имеет лимит контекста. ContextForge сам сжимает и ранжирует — но настройки top_k и max_tokens лучше подбирать под свою модель. Иначе получите знакомую ошибку Available context size.

Сравнение: ContextForge vs альтернативы

Критерий ContextForge LCME NGT Memory Ручное управление
Установка pip install Сборка из C++ pip + настройка библиотеки Скрипты любой сложности
Семантический поиск Встроенный (FAISS) Нет (только сжатие) Есть (пользовательский) Реализуется вручную
Совместимость с любыми LLM Да Только через llama.cpp Только локальные Любая модель
Документация Отличная (Read the Docs) Скудная Средняя Нет (ваш код)
Поддержка тегов и сессий Из коробки Нет Частичная Полная (пишете сами)

Как видите, ContextForge берёт балансом: не требует плясок с бубном, как LCME, и не загоняет в угол только локальных моделей, как NGT Memory. А по сравнению с ручным управлением — просто подарок судьбы, особенно если вы не хотите каждый раз изобретать велосипед.

Продвинутые фичи: таймстемпы и компрессия

ContextForge умеет не только хранить, но и забывать. Настроив политику TTL (time-to-live), можно автоматически удалять сообщения старше недели или месяца. А встроенная компрессия эмбеддингов снижает размер памяти до 80% без потери точности — примерно как Binary KV cache, только для текста.

Вот пример с временными метками:

mem.add(
    text="Сегодня 26 июня 2026, я решил написать книгу",
    timestamp="2026-06-26T12:00:00",
    tags={"project": "book"}
)

# Ищем записи за последние 7 дней
recent = mem.query("планы на книгу", time_range={"gte": "2026-06-20", "lte": "2026-06-27"})
print(recent)

Кому это реально нужно?

  • Разработчики чат-ботов — если ваш бот забывает имя пользователя через два сообщения, ContextForge решит проблему.
  • Создатели AI-агентов — агентам жизненно необходима история действий, особенно если они выполняют длительные сценарии.
  • Локальные энтузиасты — на слабых машинах (даже с 4 ГБ VRAM) библиотека работает без тормозов — поиск занимает миллисекунды.
  • Фанаты «вайб-кодинга» — если ваш проект на коленке перестал помещаться в контекст, почитайте как победить деградацию контекста — ContextForge тут главный герой.

Я уже перевёл на него пару своих проектов: один чат-бот для техподдержки, второй — RAG-система по внутренним документам. Результат — контекст перестал быть узким местом. Да, идеального SDK не существует (API местами сыроват, а документация могла бы больше примеров), но для опенсорса это уровень Enterprise. Советую присмотреться, особенно если вы уже пробовали настраивать локальную LLM для долгой памяти и намучились.

Неочевидный совет: не пытайтесь скормить ContextForge весь дамп чатов сразу — разбейте на сессии по тегам. И обязательно настройте buffer для одновременной записи/чтения, иначе на highload упадёте. В следующих версиях обещают поддержку Redis — тогда будет вообще огонь.

Подписаться на канал