Ехал Грека через реку. — Кто ехал? — Димон

Ехал Грека через реку. — Кто ехал? — Димон

Это первая часть из запланированной серии статей о проблемах ИИ. Мы заглянем в технические аспекты памяти и контекста у LLM-моделей, чтобы понять, почему они забывают, выдумывают факты и галлюцинируют.

Как attention ломается на длинном контексте

Трансформеры работают на механизме self-attention: каждый токен анализирует все остальные, чтобы понять, на что стоит обратить внимание. Эта архитектура имеет квадратичную сложность — O(n²), — что делает её вычислительно тяжёлой.

Чтобы справиться с этим, используются оптимизации: FlashAttention-2/3, RoPE, ALiBi и другие. Но они не бесплатны.

Они вносят позиционные смещения:

  • Primacy bias — модель лучше запоминает начало контекста
  • Recency bias — конец тоже остаётся в памяти
  • Середина — получает ослабленное внимание и часто теряется

Представьте, что вы прочитали книгу в 500 страниц за один присест. Первую и последнюю главу помните чётко, а что было на странице 247? Модель ведёт себя аналогично — но вместо признания, что забыла, она уверенно выдумывает.

Lost-in-the-Middle

Классическое исследование Nelson Liu и коллег из Stanford (2023) показало: когда нужная информация находится в середине контекста, точность моделей падает на 30–50%. Это явление получило название Lost-in-the-Middle.

С тех пор модели стали мощнее, но проблема осталась.

Исследования MIT и других лабораторий (2025–2026) подтвердили: эффект сохраняется даже у моделей с контекстным окном в 1 миллион и более токенов.

Причина — в архитектуре: causal attention masking и затухание позиционных эмбеддингов (например, RoPE). Чем длиннее контекст, тем больше «середина» и тем сильнее смещение.

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

Бенчмарки 2025–2026

Тест Needle-in-a-Haystack от Грега Камрадта (2023) стал классикой: факт прячется в длинном тексте, затем модель должна его найти. Просто, наглядно, эффективно.

К 2025–2026 годам он эволюционировал в целое семейство бенчмарков:

  • U-NIAH (2026) — сравнивает long-context LLM и RAG
  • NeedleBench, BABILong, LooGLE — проверяют не только поиск факта, но и синтез информации из разных частей контекста

Почему галлюцинации растут с длиной контекста

Возникает логичный вопрос: почему модель врёт, а не говорит «не знаю»?

Свежие исследования выделяют три ключевые причины:

Vectara Hallucination Leaderboard (HHEM-2.3, февраль 2026)
На текстах длиной 32K+ токенов уровень галлюцинаций стабильно выше. Модели начинают «додумывать» связи между фрагментами A и C, не видя B посередине — и изобретают своё.

OpenAI research (декабрь 2025), «When More Becomes Less»
Рост контекста увеличивает стоимость инференса, но не качество. Модель получает частичные доказательства и заполняет пробелы правдоподобно — это и есть галлюцинация.

MIT (январь 2025)
Самое тревожное: модели используют более уверенный язык именно при галлюцинациях в длинном контексте. Чем слабее факт в контексте, тем увереннее его выдумывают.

Упрощённо: длинный контекст → больше шума → внимание размывается → модель не находит факт → но обучена всегда отвечать → начинает креативить.

Это не баг. Это следствие архитектуры трансформера в сочетании с RLHF, который учит модель быть «полезной» — то есть всегда давать ответ.

Что помогает в продакшене

Chunking — 70% успеха RAG

Если в RAG-системе много галлюцинаций — смотрите на разбиение документов.

Не полагайтесь на стандартные сплиттеры.

  • RecursiveCharacterTextSplitter (LangChain) — 400–512 токенов, overlap 10–20%. Надёжно работает на структурированных текстах.
  • SemanticChunker — делит по смыслу с помощью эмбеддингов. Повышает точность на 15–20% в сложных документах.
  • HierarchicalNodeParser (LlamaIndex) — создаёт многоуровневые чанки (2048 → 512 → 128). Позволяет искать сначала раздел, потом абзац, потом предложение.

Главное — не загружайте в контекст 100K токенов «на всякий случай». Лучше дать 3–5 релевантных чанков по 500 токенов. Меньше мусора — меньше галлюцинаций.

Пример chunking + reranking

Извлеките 20 чанков, затем reranker отбирает топ-5. Это критично: без reranking в контекст попадают почти релевантные фрагменты, которые только мешают.

Verification layers

Даже с идеальным chunking модель может ошибаться. Нужна вторая линия обороны.

  • Self-Consistency / Chain-of-Verification (CoVe) — модель генерирует ответ, затем вопросы для его проверки, затем отвечает на них.
  • Critic Agent — отдельный LLM (даже маленький) проверяет: «Вот контекст, вот ответ. Всё ли подтверждается? Да/Нет + объяснение».
  • Symbolic verification — после генерации ответ проверяется через Knowledge Graph или Pydantic-схему. Даты, имена, числа — всё валидируется программно.

Agentic workflows

Это паттерн 2026 года. Вместо одного вызова «контекст → ответ» строится цикл из агентов:

  1. Planner — разбивает задачу на подзадачи
  2. Retriever Agent — ищет чанки для каждой подзадачи
  3. Executor — генерирует ответ
  4. Verifier Agent — проверяет и возвращает на доработку при ошибках

Это дороже и медленнее. Но в продакшене, где ошибка стоит денег или репутации, — окупается.

Hybrid neuro-symbolic

Для доменов с высокими требованиями к точности — юриспруденция, медицина, финансы — есть следующий уровень: комбинация LLM + Knowledge Graph + symbolic verifier.

LLM генерирует ответ, Knowledge Graph проверяет факты и связи, symbolic verifier — логику.

Исследования 2025 года показывают снижение галлюцинаций на 60–80%. Но это тяжёлая инфраструктура: нужен граф знаний, правила и команда для поддержки.

Для чат-бота интернет-магазина — это избыточно.

Итог: суй меньше — получишь лучше.

Читать оригинал