Головна / Статті / Пояснення концепції Context Rot: чому довгі вхідні дані послаблюють точність ШІ.

Пояснення концепції Context Rot: чому довгі вхідні дані послаблюють точність ШІ.

Дізнайтеся, як ротативні ембеддинги положення та функція softmax призводять до зниження точності у середині довгих запитів, та які звички зберігають ефективність контексту.

1055 слів

Якщо надати довгий запит будь-якій з моделей нового покоління, протестованих у 2025 році, якість відповідей погіршується, навіть якщо інформація, про яку ви запитуєте, знаходиться прямо в тексті. Дослідження Chroma 2025 року, проведене з 18 таких моделей, показало, що точність у визначенні фактів, розташованих посередині вхідного тексту, знижується більш ніж на 30%. Причина цього мало пов’язана з якимось нечітким „тривалістю уваги“; вона полягає у способі, яким трансформери кодують розташування токенів у тексті.

Люди називають це явище занепадом контексту, і воно є чимось іншим, ніж досягнення межі контексту. Експеримент Стенфордського університету 2023 року пояснює чому. Якщо надати моделі 20 отриманих документів, що становлять близько 4 000 токенів, це зовсім небагато порівняно з сучасними межами. Якщо відповідний факт знаходиться на першому місці, модель правильно його розпізнає у 70–75% випадків. Якщо той самий факт перемістити в середину, точність знижується до 55–60%. Інформація все ще там і залишається правильною. Модель просто надає їй менше ваги.

Звідки походить цей занепад

Більшість сучасних трансформаторів використовують Rotary Position Embeddings (RoPE) для позначення порядку токенів. RoPE має відоме довгострокове зниження ефективності: чим далі розташовані два токени, тим нижчою стає межа того, наскільки один може звертати увагу на інший (теоретично), незалежно від їхнього фактичного значення. Функція Softmax погіршує ситуацію. Вона спрямовує увагу на токени, які вже мають високі оцінки, що сприяє увазі до початку та кінця контексту та створює U-подібну криву, яку дослідники називають „втратою в середині“.

Ви можете побачити форму цього зниження за допомогою невеликого скрипту. Він створений лише на основі структури частот RoPE, а не ваг справжньої моделі, тож розглядайте його як ілюстрацію. Єдине, що йому потрібно — це бібліотека numpy:

import numpy as np

А ось функція, яка вимірює, як зменшується межа схожості зі зростанням відстані:

def rope_similarity_decay(distances, dim=64, base=10000):
    freqs = 1.0 / (base ** (np.arange(0, dim, 2) / dim))
    decays = []
    for d in distances:
        bound = np.mean(np.cos(freqs * d))
        decays.append(bound)
    return np.array(decays)

Якщо працювати з все більшими відстанями між токенами, отримуємо наступне:

Token distance | Relative similarity bound
             1 |  0.9662
            10 |  0.6579
            50 |  0.4898
           100 |  0.5586
           500 |  0.2006
          1000 |  0.2789
          5000 | -0.1309
         10000 |  0.0494
         50000 | -0.0898

Токени, розташовані на відстані від 1 до 10 позицій, зберігають значення близьке до 1,0. При відстані у кілька тисяч токенів це значення знижується до нуля, а іноді навіть опускається нижче, тож геометрія між далеко розташованими токенами більше не може надійно свідчити про те, що «ці два пов’язані». Зауважте, що це зниження також не є плавним – існує спадна крива з реальними коливаннями всередині неї. Усе це не є тестуванням конкретної моделі, але пояснює, чому проблема має структурний характер та не зникає просто через використання більшої моделі під час навчання.

Більше вікна не вирішує проблеми

Дослідники тепер розрізняють оголошену вікно контексту та Максимальне ефективне вікно контексту (MECW) — довжину, при якій продуктивність моделі залишається стабільною. Згідно з дослідженням 2025 року щодо цієї різниці, при складних завданнях ефективний ліміт може бути на 99% нижчим за значення, вказане у технічних характеристиках. Вікно у мільйон токенів означає, що модель не дасть помилки до досягнення цієї кількості токенів; проте це нічого не говорить про те, чи вона ефективно використовує їх усі.

Чому агенти для програмування постраждають найбільше

Для агентів, які виконують кодування, проблема зі зношенням контексту вважається основним способом збою; це скоріше проблема некоректних вхідних даних, ніж браку можливостей. Під час виконання тривалої задачі агент шукає рішення, досліджує варіанти та повертається назад, і кожен глухий кут залишає «шум» у історії операцій. Цей шум погіршує кожен наступний крок, хоча той самий модель міг би без проблем вирішити задачу, починаючи з чистого контексту. Тож тривала сесія може зазнати невдачі, навіть якщо у агента не закінчаться токени: інструкції з першого кроку все ще присутні в розмові на п’ятдесятому кроці, але увага моделі може більше не охоплювати їх.

Що допомагає

RAG та довгі вікна не є взаємозамінними. Механізм пошуку ефективний, оскільки він скорочує велику кількість даних до релевантної частини, адже введення всього одразу призводить до проблеми зниження якості через позиційну залежність. Після пошуку всі рекомендації зводяться до одного: тримайте робочий контекст невеликим та чистим, а не великим та повним.

  • Узагальніть або видаліть застарілу історію розмов.
  • Розміщуйте те, від чого залежить рішення, ближче до початку чи кінця запиту, ніколи не посередині.
  • Пам’ятайте, що „це підходить“ та „модель це використає“ — це дві окремі твердження.

Швидкі відповіді

Що таке занепад контексту? Зниження якості результату зі збільшенням довжини вхідних даних, навіть коли вікно не заповнене та потрібна інформація є.

Чому саме середина є найгіршою? RoPE за своєю конструкцією послаблює зв’язок між віддаленими токенами, а softmax потім зосереджує увагу на позиціях, які вже мають високі оцінки, що зазвичай є першими та останніми.

Чи допомагає більший ліміт вирішити проблему? Ні. Корисний контекст часто значно менший, ніж зазначено, особливо під час виконання складних багатокрокових завдань.

Чи це просто не вистачає місця? Ні. Точність значно знижується вже при кількох тисячах токенів, що значно менше, ніж сотні тисяч токенів, які можуть обробляти сучасні моделі.

Одне зауваження щодо наведеного вище коду: це спрощена модель частот. Фактична поведінка залежить від навчених ваг уваги, які додаються до цього геометричного базового рівня, тож базовий рівень пояснює лише частину ефекту, а не всій.