3,583 papers
arXiv:2610.29057 84 21 окт. 2026 г. FREE

Порядок элементов при агрегации: LLM по-разному «слышит» начало, середину и конец набора, и подсказками это не лечится

КЛЮЧЕВАЯ СУТЬ
Переставь отзывы местами, и модель сменит ответ с «в основном позитивные» на «в основном негативные». Правда в данных при этом та же. Разрыв между лучшим и худшим порядком — 40–90 процентных пунктов, и так у всех протестированных моделей, включая свежие флагманы. Тест с перестановкой порядка позволяет за 2–3 запроса понять, можно ли верить подсчёту модели по большому набору (отзывы, заявки, посты). Модель не перебирает элементы по очереди. В рассуждениях она упоминает в основном первую сотню-другую, остальное пролистывает. Если большинство лежит в середине, она его просто не замечает.
Адаптировать под запрос
⚡

TL;DR

Если дать LLM пачку независимых элементов (отзывы, посты, заявки) и спросить «каких больше?», ответ зависит от порядка элементов. Хотя по смыслу порядок не должен ничего менять. Модель лучше всего учитывает начало набора, середину хуже всех, конец чуть лучше середины. Исследователи не предлагают метод, а показывают, где ломается привычная практика «загрузил всё и спросил».

Проблема в том, что одни и те же 2000 отзывов с одной и той же правдой дают то «в основном позитивные», то «в основном негативные», если переставить их местами. Разрыв между лучшим и худшим порядком доходил до 40–90 процентных пунктов, у всех протестированных моделей, включая свежие флагманы. Причина: модель не перебирает все элементы по очереди. В её рассуждениях упоминается в основном первая сотня-другая элементов, остальное она «пролистывает». Если большинство лежит в середине, она его просто не замечает.

Дополнение «учти ВСЕ элементы», подсказка «считай группами и суммируй» и самостоятельное составление инструкции моделью не дали стабильного улучшения. Вывод для практики: не доверяй агрегацию по большому набору одному запросу, а точность проверяй перестановкой порядка.

🔬

Схема метода

В статье нет метода-лекарства. Есть диагностический тест, и его удобно повторить у себя:

ШАГ 1: Берёшь набор элементов + две метки → стандартный промпт «найди преобладающую метку»
ШАГ 2: Тот же набор в 2–3 разных порядках → отдельные запросы (новые чаты)
ШАГ 3: Сравниваешь ответы → совпали = можно осторожно доверять; разошлись = агрегация ненадёжна

Порядки в исследовании: случайный; большинство в начале, в конце, в середине, по краям; мягкие варианты с чередованием.

🚀

Пример применения

Задача: Селлер на Wildberries выгрузил 400 отзывов на термокружку за квартал. Он хочет понять, чего больше, хвалят или ругают, чтобы решить, переделывать ли крышку. Выгрузка отсортирована по дате, свежие отзывы сверху.

Промпт (стандартный тип промпта из статьи, запускается три раза с разным порядком отзывов):

Ниже 400 отзывов на термокружку, пронумерованных от 1 до 400.
Для каждого отзыва определи тональность: положительная или отрицательная.
Затем скажи, какая тональность преобладает среди ВСЕХ отзывов.
Ответь одним словом: «положительная» или «отрицательная».

Отзывы:
1. Крышка течёт, возвращаю.
2. Держит тепло 12 часов, доволен.
...
400. {последний_отзыв}

Запуск: - Запуск 1: отзывы как есть (по дате). - Запуск 2: отзывы в случайном порядке (перемешай в Google Таблицах функцией СОРТПО / RAND). - Запуск 3: отзывы в обратном порядке. - Каждый раз в новом чате.

Результат: Модель выдаст одно слово в каждом запуске. Если все три ответа совпали, вывод пока устойчив. Если ответы разошлись, ответ зависит от порядка и ему нельзя верить. Тогда разметь отзывы по пакетам (например, по 40 штук в запросе, с выводом номер | метка) и посчитай итог формулой в таблице. Этот обходной путь в статье напрямую не проверяли, он следует из её выводов.

🧠

Почему это работает (почему ломается)

Слабость модели. Ей кажется, что она читает и учитывает весь набор. На деле она не ведёт честный счётчик: рассуждения упоминают лишь небольшую долю элементов, в основном ранние. Чем длиннее набор, тем меньше покрытие. На 100–200 элементах она почти всё упоминает, на 2000 меньше пятой части.

Что модель умеет хорошо. Классифицировать один элемент: после фильтрации все модели справлялись с каждым отдельным примером почти идеально. Ошибка возникает не в понимании, а в сборке итога из сотен кусков.

Что из этого следует. Отдельную разметку надо отделять от подсчёта. Модель размечает небольшие порции, а итог считает таблица или скрипт. Раз порядок так влияет, его стоит перемешивать и повторять, чтобы увидеть нестабильность.

Рычаги проверки: - Число перестановок (2–3 → быстрый тест, 5+ → надёжнее). - Размер набора: чем он меньше, тем слабее эффект, но даже при 100 элементах он заметен. - Баланс классов: чем ближе 50/50, тем сильнее разброс. Когда одна сторона явно доминирует (90/10), модели легче.

📋

Шаблон промпта

Ниже {число} {элементов}, пронумерованных от 1 до {число}.
Для каждого определи: {метка_A} или {метка_B}.
Затем скажи, какая метка преобладает среди ВСЕХ элементов.
Ответь одним словом: «{метка_A}» или «{метка_B}».

{элементы}

Подставляй: - {элементы} — отзывы, посты, заявки, комментарии; - {метка_A} и {метка_B} — две взаимоисключающие категории («жалоба / не жалоба», «лид / не лид»); - {число} — сколько элементов в наборе.

Запускай шаблон 2–3 раза с разным порядком элементов, каждый раз в новом чате. Это протокол проверки, а не промпт-лекарство.

⚠️

Ограничения

⚠️ Лечение не найдено: подсказка «обрабатывай все элементы», подсказка «считай группами и суммируй» и самостоятельная инструкция от модели не дали стабильного улучшения. Разрыв между лучшим и худшим порядком остался большим.

⚠️ Простая модельная задача: искали преобладающую из двух меток. Как порядок влияет на более сложные итоги (темы, резюме, выводы), в статье не проверяли.

⚠️ Способы обхода не проверены: разбиение на пакеты, перемешивание с голосованием, подсчёт в таблице напрямую не тестировали. Это логичный вывод, но не результат эксперимента.

⚠️ Подсказки проверяли на узком наборе: только три модели. Две другие модели вообще почти не давали ответа: исчерпывали лимит токенов, и их исключили из анализа.

⚠️ Наборы очищены: оставили только «лёгкие» примеры, которые модели размечают верно по одному. Реальные отзывы сложнее, так что ошибка в жизни может быть ещё больше.

⚠️ Эффект не только про середину: хуже всего чаще было, когда большинство лежало в середине, но не у всех моделей. Универсального «худшего порядка» нет.

🔍

Как исследовали

Идея была простой: ответ не должен зависеть от порядка, значит любую зависимость можно считать ошибкой. Команда из Кардиффа взяла пять простых задач на бинарную классификацию: чётное/нечётное число в задаче по математике, имя человека или место, слово «the» один раз или больше, позитивный или негативный отзыв, «java» как язык программирования или остров. Из каждого набора оставили только те примеры, которые две модели размечают верно поодиночке: чтобы ошибки шли от сборки итога, а не от трудных примеров.

Затем собирали наборы по 2000 элементов с долей 55/45: на 200 штук больше у одной метки. Даже при 90% точности на элемент шанс перевернуть итог ничтожен, порядка одного на миллиард. Один и тот же набор подавали в семи порядках: случайном, с большинством в начале, в конце, в середине, по краям и двух мягких вариантах. Тестировали 15 моделей.

Итог: все модели показали разрыв минимум 40 процентных пунктов, а некоторые (Gemma 4 26B, Llama 4 Maverick) около 90. Лучше всего шёл порядок «большинство в начале», хуже — «в середине». Более половины моделей показали самые плохие результаты именно в «середине».

Потом выяснили почему. Вручную разобрали 222 рассуждения моделей с неверными ответами: в 72% случаев модель упоминала только подряд идущие элементы с начала, обычно в пределах первых 200. Если большинство лежало в конце или середине, в рассуждениях упоминались только меньшинство. Автоматический подсчёт показал, что в большинстве запусков упоминалось меньше 25% номеров. А анализ градиентов (какие части входа влияют на ответ) на трёх открытых моделях подтвердил: влияние ниже в середине, чем в начале и в конце.

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

💡

Адаптации и экстраполяции

Это мои выводы из результатов, в статье они не проверялись.

🔧 Техника: перемешать и проголосовать → сглаживает влияние порядка

Я пришлю один и тот же набор отзывов в {число_порядков} разных порядках, каждый раз в новом чате.
Для каждого запуска запиши ответ: преобладающая метка.
Если ответы совпали — принимаем. Если нет — размечаем по пакетам.

🔧 Техника: разметка пакетами + подсчёт вне модели → убирает «сборку итога»

Вот пакет из {20–50} отзывов.
Для каждого выведи строку в формате: номер | метка_A или метка_B.
Ничего не считай и не обобщай. Только строки.

Склей результаты пакетов в таблицу и посчитай СЧЁТЕСЛИ. Так модель делает то, что умеет (классифицировать по одному), а итог считает таблица.

Экстраполяция на агентов: если агент читает много файлов, тикетов или логов, в CLAUDE.md или AGENTS.md можно добавить правило:

Если нужно посчитать или определить, чего больше среди более чем {N} элементов, не делай вывод «в уме».
Сначала размечай элементы по одному (или пакетами) в файл, потом считай скриптом или формулой.
Не опирайся на то, что запомнил из начала списка.
🔗

Ресурсы

  • Название работы: Does Every Instance Count Equally? Order Effects in LLM Multi-Instance Processing
  • Авторы: Jingxuan Chen, Mohammad Taher Pilehvar, Jose Camacho-Collados, School of Computer Science and Informatics, Cardiff University
  • Данные и код: https://github.com/jingxuanchen916/mip-order
  • Связанная работа: Liu et al., 2024 («lost in the middle»); Bertsch et al., 2026 и Chen et al., 2026 (деградация при росте числа элементов)

📋 Дайджест исследования

Ключевая суть

Переставь отзывы местами, и модель сменит ответ с «в основном позитивные» на «в основном негативные». Правда в данных при этом та же. Разрыв между лучшим и худшим порядком — 40–90 процентных пунктов, и так у всех протестированных моделей, включая свежие флагманы. Тест с перестановкой порядка позволяет за 2–3 запроса понять, можно ли верить подсчёту модели по большому набору (отзывы, заявки, посты). Модель не перебирает элементы по очереди. В рассуждениях она упоминает в основном первую сотню-другую, остальное пролистывает. Если большинство лежит в середине, она его просто не замечает.

Принцип работы

Это не метод-лекарство, а проверка на прочность. Берёшь один набор и гоняешь его в разных порядках: как есть, вперемешку, задом наперёд. Каждый раз новый чат. Совпали ответы — можно осторожно верить. Разошлись — подсчёт ненадёжен. Почему так? Набор независимый, порядок по смыслу ничего не значит. Если ответ всё же скачет, значит модель не считает, а угадывает по тому, что заметила. Разный порядок — это зеркало, которое показывает, что итог держится не на данных, а на расположении. Как жюри, которое внимательно слушает первых выступающих. К середине концерта оно уже устало, а решение всё равно выносит «по всем».

Почему работает

Дело не в том, что модель не понимает отдельный отзыв. Один отзыв она размечает почти идеально. Ломается сборка итога из сотен кусков. На 100–200 элементах модель упоминает почти всё. На 2000 — меньше пятой части. Лучше всего она учитывает начало, середина хуже всех, конец чуть лучше середины. Жесть — подсказки не спасают. Ни «учти ВСЕ элементы», ни «считай группами и суммируй», ни инструкция, которую модель написала себе сама, не дали стабильного улучшения. Модель уверена, что читает весь набор, а на деле считает по первым сотням. Чем ближе доли к 50/50, тем сильнее разброс. При 90/10 моделям легче. Чем меньше набор, тем слабее эффект, но и на 100 элементах он заметен.

Когда применять

Анализ отзывов, обращений, заявок, комментариев → вопрос «чего больше» по набору в сотни элементов, особенно когда доли близки к 50/50 и от ответа зависит решение (переделывать продукт, менять скрипт продаж). НЕ подходит как доказательство для задач с темами, резюме и выводами: там порядок не проверяли. Совпадение трёх ответов тоже не гарантия, это лишь отсутствие тревожного сигнала.

Мини-рецепт

1. Собери набор: элементы плюс две взаимоисключающие метки («жалоба / не жалоба»). Пронумеруй от 1 до N.
2. Задай обычный вопрос: «Для каждого определи метку, затем скажи, какая преобладает среди ВСЕХ. Ответь одним словом».
3. Перетасуй: как есть, случайно (в таблице через СЛЧИС), в обратном порядке. 2–3 запуска для быстрой проверки, 5+ для надёжной.
4. Каждый раз новый чат: иначе модель будет цепляться за прошлый ответ.
5. Сравни: совпало — ок, разошлось — не верь ни одному ответу.
6. Если разошлось: пусть модель размечает небольшие пакеты (около 40 штук) строками номер | метка, а считает таблица. Этот обход в статье не проверяли, он следует из её выводов.

Примеры

[ПЛОХО] : Вот 400 отзывов на термокружку. Чего больше, хороших или плохих? — один запуск, выгрузка по дате, свежие сверху. Ответ зависит от того, что лежит в первых сотнях.
[ХОРОШО] : тот же запрос, но запущен трижды в новых чатах: отзывы по дате, вперемешку, в обратном порядке. Промпт: Ниже 400 отзывов, пронумерованных от 1 до 400. Для каждого определи: положительный или отрицательный. Затем скажи, какой тип преобладает среди ВСЕХ. Ответь одним словом. Три разных ответа — значит, решать про крышку по этому подсчёту нельзя. [ХОРОШО, запасной вариант]: Вот 40 отзывов. Для каждого выведи строку: номер | положительный или отрицательный. Больше ничего не пиши. Дальше складываешь пакеты и считаешь итог формулой в таблице.
Источник: Does Every Instance Count Equally? Order Effects in LLM Multi-Instance Processing
ArXiv ID: 2610.29057 | Сгенерировано: 2026-10-22 17:50

Проблемы LLM

ПроблемаСутьКак обойти
Итог по большому набору элементов зависит от их порядкаДаёшь в один запрос сотни отзывов, постов или заявок. Просишь: «каких больше?». Ответ меняется, если переставить элементы. Хотя по смыслу порядок ничего менять не должен. Лучше всего модель учитывает начало набора. Середину учитывает хуже всего. В рассуждениях она упоминает в основном первую сотню-другую элементов, остальное пролистывает. Чем длиннее набор, тем меньше покрытие. Разрыв между удачным и неудачным порядком может достигать десятков процентных пунктов. Просьба «учти ВСЕ элементы» и подсказка «считай группами и суммируй» стабильно не помогают. При этом каждый элемент по отдельности модель размечает почти идеально. Ломается именно сборка итога из сотен кусковРаздели работу. Пусть модель размечает небольшими пакетами (30–50 элементов), формат ответа: номер \| метка. Итог считай таблицей или скриптом, а не моделью. Этот путь логически следует из механики, но напрямую не проверен. Результат любого общего подсчёта проверяй перестановкой (см. метод ниже)

Методы

МетодСуть
Проверка перестановкой — быстрый тест надёжности итогаВозьми набор и свой обычный запрос. Запусти его 2–3 раза, каждый раз с другим порядком элементов: как есть, случайный, обратный. Каждый запуск делай в новом чате, иначе модель увидит прошлый ответ. Сравни итоги. Почему работает: порядок не должен влиять на правильный ответ. Если итог меняется, значит ответ определяют не данные, а позиция элементов. Как читать: ответы совпали — можно осторожно доверять. Разошлись — агрегация ненадёжна, переходи на пакеты и подсчёт в таблице. 2–3 перестановки дают быстрый тест, 5 и больше — надёжнее. Когда применять: любые итоги по набору из 100+ однотипных элементов (тональность, жалоба или не жалоба, лид или не лид). Когда не нужно: набор короткий или одна сторона явно доминирует. Не проверяет: сложные итоги вроде тем и резюме, для них эффект не изучали
📖 Простыми словами

Does Every Instance Count Equally? Order Effects inLLMMulti-Instance Processing

arXiv: 2610.29057

Когда ты скармливаешь нейросети пачку данных и просишь посчитать, чего там больше, она ведёт себя не как беспристрастный калькулятор. У LLM напрочь сносит крышу от банального эффекта порядка: модель жадно вцепляется в первые строки, наглухо игнорирует середину и лишь слегка цепляет хвост списка. Для архитектуры трансформеров порядок независимых записей внезапно имеет решающее значение, превращая аналитику в русскую рулетку.

Это как нанять уставшего стажёра разобрать стопку из сотен анкет. Первых соискателей он изучит с лупой в руках, последние пару страниц бегло глянет чисто для галочки, а середину просто выкинет из головы. В итоге судьбоносное решение принимается не по реальным фактам, а тупо по тому, кто лёг первым на стол.

В тесте исследователей вылезает системный сбой: эффект первичности полностью ломает логику подсчёта. Если селлер на маркетплейсе скормит модели массив из 400 отзывов на товар, чтобы понять причину брака, LLM вынесет вердикт строго по первым десяткам записей. Переверни тот же файл задом наперёд — и сетка выдаст диаметрально противоположный результат на тех же самых данных.

Тестировали на подсчётах, но грабли абсолютно универсальны: разбор тикетов техподдержки, анализ клиентских опросов, фильтрация резюме и аудит логов страдают точно так же. Везде, где ты просишь AI обобщить список независимых сущностей вопросом «чего тут больше», ты получаешь искажённую картину. Слепая вера в контекстное окно в таких задачах — прямой путь к сливу бюджета.

Короче: забудь про ленивый трюк «залил всё скопом и спросил итог». Считать штуки и агрегировать факты должен классический код, а не промпты. Если и поручать это сетке, то только батчами, либо перемешивай данные рандомом и прогоняй тест несколько раз. Иначе ты снимешь с продажи ходовой товар просто потому, что алгоритму было лень дочитать до середины.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с