Перейти до основного вмісту

Знайдено посередині: Калібрування позиційного зміщення уваги покращує RAG з довгим контекстом

· 6 хв. читання
Mike Thrift
Mike Thrift
Marketing Manager

Я роздумував над проблемою «загублено посередині» (lost-in-the-middle) ще відтоді, як написав допис про оригінальне відкриття Лю та ін.: передайте довгий контекст LLM, і вона надійно ігноруватиме докази, заховані посередині. «Знайдено посередині: Калібрування позиційного зміщення уваги покращує використання довгого контексту» (Hsieh et al., ACL Findings 2024, arXiv:2406.16008) пропонує найбільш пряме та практичне рішення, яке я бачив: калібрування під час виведення без донавчання, яке віднімає позиційне зміщення моделі від її ваг уваги, відновлюючи до 15 відсоткових пунктів точності RAG.

Дослідження

2026-07-02-found-in-the-middle-calibrating-positional-attention-bias

Хсі та ін. починають із діагностичного спостереження: LLM — навіть ті, що навчалися на довгих контекстах — демонструють стійкий U-подібний патерн уваги. Токени на початку та в кінці вхідних даних отримують непропорційно велику увагу незалежно від того, чи є вони релевантними, тоді як токени посередині систематично недооцінюються. Автори емпірично пов’язують це з падінням точності «загублено посередині», а не розглядають це як окреме явище.

Їхнє рішення елегантне за своєю концепцією. Вони розкладають увагу на два адитивні компоненти: релевантність (те, що нам потрібно) і позиційне зміщення (те, що нам не потрібно). Щоб ізолювати термін зміщення, вони пропускають «фіктивний» документ — неінформативний наповнювач — через той самий контекст у кожній позиції та фіксують розподіл уваги, що виникає. Ця увага до фіктивного документа наближається до чистого позиційного пріоритету. Віднімання її від реальних показників уваги залишає залишок, який краще відображає справжню релевантність:

Відкалібрована увага = Attn(документ, k) − Attn(фіктивний, k)

Потім перераховані бали використовуються для переранжування або перезважування отриманих документів перед фінальним кроком генерації відповіді. Важливо, що навчання не потрібне. Калібрування застосовується під час виведення до останніх 16 шарів декодера та всіх голів уваги. Вартість становить O(K) додаткових прямих проходів, де K — кількість знайдених документів — що не є тривіальним, але є передбачуваним.

Основні ідеї

  • U-подібне позиційне зміщення притаманне архітектурі моделі та зберігається навіть у моделях, спеціально навчених для роботи з довгим контекстом.
  • Пропускання фіктивного (порожнього/шумового) документа через той самий контекст пошуку ізолює позиційний пріоритет; його віднімання усуває зміщення без будь-якого донавчання.
  • Recall@3 на NaturalQuestion (K=20, еталонний документ розміщений посередині) підскакує з 20,52% до 68,32% з калібруванням; при K=10 — з 36,38% до 74,27%.
  • Наскрізна точність QA покращується на 6–15 відсоткових пунктів, коли еталонний документ знаходиться в середині контексту; покращення спостерігаються у 22 з 24 експериментальних конфігурацій.
  • Метод перевершує шість базових підходів: стандартну увагу, ранжування за генерацією запитів, промптінг на основі генерації релевантності, сортування за увагою (Peysakhovich & Lerer 2023), зміну порядку промптів та LongLLMLingua-rk.
  • Метод оцінювався на NaturalQuestion (2655 реальних запитів до Wikipedia) та SynthWiki (990 синтетичних записів, згенерованих GPT-4).

Що витримує критику — а що ні

Основний результат вражає, і я в нього вірю. Розрив Recall@3 з 20,52% до 68,32% для еталонних документів у середині контексту — це не той показник, який зникає при ретельній перевірці; він вимірює щось реальне у розподілі уваги. Дизайн без донавчання — це справжня практична перевага: ви можете додати це поверх будь-якого існуючого конвеєра RAG, не торкаючись ваг моделі.

Тим не менш, у мене є певні застереження. По-перше, підхід із «фіктивним документом» припускає, що позиційне зміщення приблизно роздільне за позиціями та адитивне — лінійне розкладання, яке самі автори позначають як потенційне спрощення. Реальне зміщення уваги може взаємодіяти з контентом нелінійно. По-друге, O(K) додаткових прямих проходів оцінюються як «прийнятні», але ніколи не тестуються на затримку чи вартість. У виробничій системі з K=20 документами ви виконуєте 21 прямий прохід замість 1 на запит. Для агента Beancount, який сортує сотні транзакцій, цей множник має значення.

По-третє — і це найцікавіше обмеження — автори зазначають, що позиційне зміщення насправді може бути корисним для певних завдань. Наприклад, зміщення в бік недавніх подій може бути саме тим, що змушує модель правильно надавати перевагу недавнім записам у гросбуху над старішими. Невибіркове усунення зміщення може зашкодити завданням, де позиція є важливим сигналом. Це визнається, але не вивчається.

Нарешті, в експериментах використовуються NaturalQuestion та синтетичний набір даних. Специфічні фінансові документи — щільні таблиці, багаторічні звіти, записи в гросбуху з повторюваною структурою — дуже відрізняються від загальнодоступних уривків з Wikipedia. Калібрування потрібно було б перевірити на цих розподілах, перш ніж стверджувати, що воно працюватиме для фінансового RAG.

Чому це важливо для фінансового ШІ

Прямий зв'язок очевидний: кожен допис з часів DocFinQA обертався навколо однієї і тієї ж проблеми. Коли агент Beancount знаходить 20 релевантних записів гросбуху, щоб відповісти на питання на кшталт «звірити березень із банківською випискою», записи з середини вікна пошуку будуть систематично отримувати менше уваги порівняно із записами на початку та в кінці контексту. Це не збій пошуку — це збій на стороні генерації, який не виправить жодне покращення ранжування результатів пошуку.

Калібрування «знайдено посередині» — це правдоподібний засіб пом'якшення проблеми, який не потребує перенавчання базової моделі та може бути застосований безпосередньо всередині кроку генерації будь-якого конвеєра QA для гросбухів. Занепокоєння щодо вартості O(K) реальне, але кероване — вікно пошуку з 20 документів з моделлю середнього розміру все ще знаходиться в межах практичного застосування. Що я хотів би побачити перед впровадженням, так це валідацію саме на структурованих даних Beancount: чи допомагає позиційна корекція рівномірно, чи вона ненавмисно пригнічує сигнал актуальності, який робить нещодавні транзакції надійнішими за старі?

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

Що читати далі

  • «Пом'якшення позиційного зміщення в LLM шляхом масштабування одного каналу прихованих станів» (arXiv:2406.02536, ACL Findings 2025) — пропонує масштабування одного виміру прихованого стану замість віднімання балів уваги; варто порівняти з підходом «знайдено посередині» безпосередньо.
  • «Великі мовні моделі для виявлення аномалій та виходу за межі розподілу: огляд» (arXiv:2409.01980, NAACL 2025) — наступне у списку для читання; об'єднує напрацювання AnoLLM, CausalTAD та AD-LLM у єдину таксономію.
  • Liu et al., «Загублено посередині: як мовні моделі використовують довгі контексти» (arXiv:2307.03172, TACL 2023) — оригінальний діагноз, на який відповідає «знайдено посередині»; необхідна література для розуміння контексту.