Открити в средата: Калибрирането на позиционното отклонение на вниманието подобрява RAG с дълъг контекст
Мислех за проблема „изгубени в средата“ още откакто написах бележката за оригиналното откритие на Liu et al.: подайте дълъг контекст на LLM и той надеждно ще игнорира доказателствата, скрити в средата. „Открити в средата: Калибрирането на позиционното отклонение на вниманието подобрява използването на дълъг контекст“ (Hsieh et al., ACL Findings 2024, arXiv:2406.16008) предлага най-директното и практично решение, което съм виждал: калибриране по време на извеждане без обучение, което изважда позиционното отклонение на модела от теглата му на внимание, възстановявайки до 15 процентни пункта точност на RAG.
Документът
Hsieh et al. започват от диагностично наблюдение: LLM — дори тези, обучени на дълги контексти — показват постоянен U-образен модел на вниманието. Токените в началото и в края на входните данни получават непропорционално голямо внимание, независимо дали са уместни, докато токените в средата систематично се подценяват. Авторите свързват това емпирично със спада в точността „изгубени в средата“, вместо да го разглеждат като отделно явление.
Тяхното решение е елегантно като концепция. Те разлагат вниманието на два адитивни компонента: уместност (това, което искаме) и позиционно отклонение (това, което не искаме). За да изолират члена за отклонението, те прекарват „фиктивен“ документ — неинформативно запълващо съдържание — през същия контекст на всяка позиция и записват полученото разпред еление на вниманието. Вниманието към този фиктивен документ апроксимира чистия позиционен приоритет (prior). Изваждането му от реалните резултати за внимание оставя остатък, който по-добре отразява истинската уместност:
Calibrated attention = Attn(document, k) − Attn(dummy, k)
След това мащабираните резултати се използват за прекласиране или претегляне на извлечените документи преди последната стъпка на генериране на отговор. От решаващо значение е, че не се изисква обучение. Калибрирането се прилага по време на извеждане към последните 16 слоя на декодера и всички глави на вниманието. Цената е O(K) допълнителни преминавания напред (forward passes), където K е броят на извлечените документи — не е незначително, но е предвидимо.
Ключови идеи
- U-образното позиционно отклонение е присъщо на архитектурата на модела и продължава да съществува дори в модели, изрично обучени с цели за дълъг контекст.
- Прекарването на фиктивен (празен/шумен) документ през същия контекст на извличане изолира позиционния приоритет; изваждането му премахва отклонението без никаква фина настройка (finetuning).
- Recall@3 на NaturalQuestion (K=20, златният документ е поставен в средата) скача от 20,52% на 68,32% с калибриране; при K=10, от 36,38% на 74,27%.
- Точността на QA от край до край се подобрява с 6–15 процентни пункта, когато златният документ е в средата на контекста; подобренията се запазват в 22 от 24 експериментални конфигурации.
- Методът превъзхожда шест базови модела за сравнение: стандартно (vanilla) внимание, ранжиране чрез генериране на заявки, подтикване за генериране на уместност, сортиране на вниманието (Peysakhovich & Lerer 2023), пренареждане на подканите и LongLLMLingua-rk.
- Методът е оценен върху NaturalQuestion (2 655 реални заявки в Wikipedia) и SynthWiki (990 синтетични записа, генерирани от GPT-4).
Какво е валидно и какво не
Основният резултат е поразителен и аз му вярвам. Разлика в Recall@3 от 20,52% → 68,32% за златни документи в средата на контекста не е число, което изчезва при внимателна проверка — то измерва нещо реално за това как се разпределя вниманието. Дизайнът без обучение е истинско практическо предимство: можете да добавите това върху всеки съществуващ RAG конвейер, без да докосвате теглата на модела.
Въпреки това имам някои резерви. Първо, подходът с „фиктивен документ“ предполага, че позиционното отклонение е грубо позиционно отделимо и адитивно — линейно разлагане, което самите автори отбелязват като потенциално прекалено опростено. Реалното отклонение на вниманието може да взаимодейства със съдържанието по нелинейни начини. Второ, O(K) допълнителните преминавания напред са оценени като „приемливи“, но никога не са тествани за латентност или цена. В производствена система с K=20 извличания, вие изпълнявате 21 преминавания напред вместо 1 за заявка. За Beancount агент, обработващ стотици транзакции, този множител е от значение.
Трето — и това е най-интересното ограничение — авторите отбелязват, че позиционното отклонение всъщност може да бъде полезно за определени задачи. Отклонението в полза на актуалността (recency bias), например, може да е това, което кара модела да претегля правилно последните записи в счетоводната книга спрямо по-старите. Премахването на отклонението безразборно може да навреди на задачи, където позицията е валиден сигнал. Това е признато, но не е проучено.
И накрая, експериментите използват NaturalQuestion и синтетичен набор от данни. Финансово-специфичните документи — плътни таблици, многогодишни отчети, записи в счетоводни книги с повтаряща се структура — са много различни от пасажите в Wikipedia с отворен домейн. Калибрирането ще трябва да бъде валидирано върху тези разпределения, преди да се твърди, че ще работи за финансов RAG.
Защо това е важно за финансовия ИИ
Директната връзка е ясна: всяка бележка след DocFinQA се върти около същия проблем. Когато един Beancount агент извлече 20 подходящи записа в счетов одната книга, за да отговори на въпрос като „равни март спрямо банковото извлечение“, записите от средата на извлечения прозорец ще получат систематично по-малко внимание в сравнение със записите в началото и в края на контекста. Това не е провал на извличането — това е провал на страната на генерирането, който никакво подобрение в ранжирането при извличане няма да коригира.
Калибрирането „открити в средата“ е реалистично смекчаване на проблема, което не изисква преобучение на базовия модел и може да бъде приложено директно в стъпката на генериране на всеки QA конвейер за счетоводни книги. Притеснението за цената O(K) е реално, но управляемо — прозорец за извличане от 20 документа с модел с умерен размер все още е в практическите граници. Това, което бих искал да видя преди внедряването му, е валидация специално върху структурирани данни на Beancount: помага ли позиционната корекция равномерно или неволно потиска сигнала за актуалност, който прави последните транзакции по-достоверни от старите?
По-широкият принцип — че механизмите на вниманието кодират позиционни приоритети независимо от уместността на съдържанието и че тези приоритети могат да бъдат калибрирани без преобучение — си струва да се запомни. Това отваря вратата за подобни калибрирания за други отклонения: отклонение според честотата на токените, нормализиране на дължината на входа, отклонение към многословност при генериране.
Какво да прочетете след това
- „Mitigate Position Bias in LLMs via Scaling a Single Hidden States Channel“ (arXiv:2406.02536, ACL Findings 2025) — предлага мащабиране на едно измерение на скритото състояние вместо изваждане на резултатите за внимание; заслужава си да се сравни директно с подхода на „found-in-the-middle“.
- „Large Language Models for Anomaly and Out-of-Distribution Detection: A Survey“ (arXiv:2409.01980, NAACL 2025) — следващ в списъка за четене; свързва нишките на AnoLLM, CausalTAD и AD-LLM в единна таксономия.
- Liu et al., „Lost in the Middle: How Language Models Use Long Contexts“ (arXiv:2307.03172, TACL 2023) — оригиналната диагноза, на която „found-in-the-middle“ отговаря; основно четиво за контекст.
