3,583 papers
arXiv:2608.14737 73 13 авг. 2026 г. FREE

Batch-эффект: почему LLM меняет решения о фильтрации, когда обрабатывает много объектов за раз

КЛЮЧЕВАЯ СУТЬ
Обнаружено: LLM пересматривает решения о фильтрации, просто увидев соседей по батчу. Метод помогает понять, когда групповая обработка резюме, тикетов или статей даёт другой результат, чем поштучная проверка — и вовремя это поймать. Модель внутри одного запроса неявно сравнивает объекты друг с другом и подгоняет решения под ощущение «разумной» пропорции, а не держит критерий железно. Когда редкий класс — батч чаще пропускает кандидатов, когда классы почти поровну — становится строже, и до половины решений внутри батча меняется местами при неизменной итоговой метрике.
Адаптировать под запрос

TL;DR

Если попросить LLM отфильтровать 50 резюме или 100 отзывов за один запрос — модель примет другие решения, чем если бы вы показывали каждый объект отдельно. И это не случайный шум, а системный сдвиг: когда среди объектов мало "подходящих" (редкий класс), модель в batch-режиме начинает пропускать больше кандидатов, чем при поштучной проверке. Когда объектов "за" и "против" примерно поровну — наоборот, становится строже.

Боль в том, что вы не заметите этот сдвиг, если смотрите только на итоговую метрику качества. Модель может показывать одинаковый (или даже лучший) общий результат, но при этом половина решений внутри батча поменялась местами — одни ошибки исчезли, зато появились новые, просто в других объектах. А попытка "подсказать" модели заранее: "здесь обычно проходит только 3% кандидатов" — почти не помогает исправить эту предвзятость.

Исследование показывает: если задача критична (например, фильтруете кандидатов на вакансию или отбираете жалобы, требующие реакции), нельзя слепо доверять batch-обработке — нужно сверять результат с поштучной проверкой хотя бы на небольшой выборке, прежде чем полагаться на групповую обработку.


🔬

Схема метода (как проверить свою задачу на batch-эффект)

ШАГ 1: Возьми выборку из 15-20 объектов (резюме, тикетов, статей) → отдельный чат
ШАГ 2: Прогони их через LLM ПОШТУЧНО (один объект — один запрос) → зафиксируй решения
ШАГ 3: Прогони ТЕ ЖЕ объекты ОДНИМ запросом (все вместе, батчем) → зафиксируй решения
ШАГ 4: Сравни: сколько решений совпало, сколько поменялось → оцени риск
ШАГ 5: Если совпадений < 90% — используй поштучную обработку для финальной фильтрации

Шаги 2 и 3 — это два отдельных запроса в разных чатах (или один чат, но без "утечки" контекста между режимами).


🚀

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

Задача: HR-менеджер отбирает резюме на узкую техническую вакансию. Из 150 присланных откликов реально подходят человек 10-15 (редкий положительный класс — как раз ситуация, где batch-эффект максимален).

Промпт для проверки (шаг 2, поштучно):

Ты — рекрутер. Вот требования к вакансии: {критерии_вакансии}.

Вот одно резюме:
{текст_резюме}

Оцени: подходит кандидат под требования — да или нет? 
Ответь только: "Подходит" или "Не подходит" и одна строка обоснования.

(повторить для каждого резюме из тестовой выборки — 15-20 штук)

Промпт для проверки (шаг 3, батчем):

Ты — рекрутер. Вот требования к вакансии: {критерии_вакансии}.

Вот список резюме кандидатов:
1. {резюме_1}
2. {резюме_2}
...
20. {резюме_20}

Для каждого кандидата укажи: подходит или не подходит под требования.
Формат ответа: номер — решение — короткое обоснование.

Результат: Вы получите два списка решений по одним и тем же 20 резюме. Если это редкая вакансия (мало подходящих), скорее всего в batch-варианте пройдёт больше кандидатов, чем в поштучном — модель "смягчается" в группе. Дальше решаете: доверять батчу для оставшихся 130 резюме или проверять их поштучно, несмотря на то, что это дольше.


🧠

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

LLM не хранит железный чек-лист критериев в голове и не проверяет каждый объект абсолютно независимо, даже если вы просите именно так. Когда модель видит много объектов в одном контексте, она неявно сравнивает их друг с другом и подстраивает решения так, чтобы получилось что-то похожее на "разумную" пропорцию — как будто ищет баланс, а не строго следует правилу.

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

Рычаг управления: размер батча. Меньше объектов в одном запросе → меньше искажение, но выше стоимость и время. Для критичных задач (найм, юридическая проверка, отбор пациентов для исследования) — снижайте размер батча или переходите на поштучную обработку. Для рутинных задач с невысокой ценой ошибки — батч можно оставить, экономия времени оправдана.


📋

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

Ты выполняешь классификацию списка объектов по критерию: {критерий}.

Вот список объектов:
{список_объектов_с_номерами}

Оцени КАЖДЫЙ объект СТРОГО НЕЗАВИСИМО от других — не сравнивай объекты между собой, 
оценивай каждый только по критерию, будто видишь его в первый и единственный раз.

Формат ответа: номер — решение (да/нет) — краткое обоснование.

Это не устраняет эффект полностью (исследование показывает: даже прямая инструкция "оценивай независимо" не была протестирована как решение — авторы проверяли только метаданные о доле нужного класса, и она почти не помогла). Но явное требование "не сравнивай объекты" — логичный шаг, который стоит попробовать и сверить с поштучной проверкой.

🚀 Быстрый старт — вставь в чат:

Мне нужно отфильтровать список объектов ({твоя_задача}) по критерию. 
Помоги составить два промпта: один для проверки объектов по одному, 
второй — для проверки всех сразу батчем. Задавай вопросы, чтобы уточнить критерии.

[вставить шаблон выше]

LLM спросит про критерий отбора и формат объектов — потому что без этого не собрать точный промпт для сравнения двух режимов.


⚠️

Ограничения

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

⚠️ Направление эффекта непредсказуемо: для сильно несбалансированных данных батч делал модель мягче, для сбалансированных — жёстче. Но это наблюдение на одном обзоре с балансом 53%, авторы прямо пишут — это не установленный механизм, а один наблюдаемый случай.

⚠️ Метаданные не спасают: если вы подскажете модели "ожидаемая доля нужных объектов — 5%", это почти не изменит поведение в батч-режиме. Не рассчитывайте на этот приём как на исправление проблемы.

⚠️ Итоговая метрика может обманывать: общий результат (F2-score) может остаться прежним или даже улучшиться, при этом конкретные решения по конкретным объектам сильно поменяются — что означает риск для отдельных кейсов, даже если "в среднем" всё хорошо.


🔍

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

Исследователи взяли пять обзоров научных статей из готового датасета SESR-Eval — с разной долей "подходящих" статей: от 2,9% до 53%. Каждую статью прогнали через две модели (Llama-3.3-70B и GPT-5-mini) в четырёх режимах: поштучно и батчами по 20 статей, с подсказкой о нужной доле и без неё.

Сравнивали не только итоговую точность, но и сколько конкретных решений поменялось между режимами (Decision Flip Rate) и в какую сторону — модель стала мягче или строже (net shift). Это ключевая деталь дизайна: обычные исследования смотрят только на среднюю метрику, а здесь копнули на уровень отдельных объектов.

Результат удивил авторов: подсказка о нужной доле почти не сработала (у одной модели вообще ноль изменений), а сам факт групповой обработки — сработал очень сильно, причём по-разному в зависимости от того, сколько "положительных" объектов реально в выборке. Это и есть главный вывод — batch-режим нужно оценивать не только по цене, но и по тому, как он меняет логику принятия решений.


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

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

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

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

Правило простое: чем больше объектов в одном запросе, тем сильнее модель ищет относительный баланс вместо жёсткого критерия. Размер батча — это рычаг искажения: 5 объектов почти не искажают решение, 50 — искажают заметно. Метаданные вроде «обычно проходит 3% кандидатов» тут не спасают — модель их почти игнорирует.

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

Модель не держит чек-лист критериев в голове — она видит весь контекст сразу и невольно сравнивает объекты между собой. Это как человек, который после десяти слабых работ вдруг находит среднюю «хорошей» на контрасте. Отсюда системный сдвиг: при редком положительном классе батч пропускает больше кандидатов, при балансе 50/50 — режет строже. Проверено на пяти обзорах научных статей и двух моделях — эффект стабильный, хотя направление зависит от баланса классов.

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

Критичный отбор → найм, юридическая проверка, отбор пациентов, обработка жалоб — особенно когда подходящих объектов мало (редкий положительный класс) и цена ошибки высока. Не подходит как единственный сигнал доверия для рутинных задач с низкой ценой ошибки — там батч экономит время без риска.

Мини-рецепт

1. Возьми тестовую выборку: 15-20 объектов (резюме, тикетов, статей), отдельно от основного массива.
2. Прогони поштучно: один объект — один запрос, зафиксируй все решения.
3. Прогони то же самое батчем: все 15-20 объектов в одном запросе, зафиксируй решения.
4. Сравни решения: посчитай процент совпадений между двумя режимами.
5. Реши что делать: совпадений меньше 90% — переходи на поштучную обработку для финальной фильтрации.

Примеры

[ПЛОХО] : Отфильтруй эти 150 резюме и оставь подходящих кандидатов
[ХОРОШО] : Сначала проверь 20 резюме по одному отдельными запросами, потом те же 20 — одним запросом батчем. Сравни решения — если совпадает меньше 90%, обрабатывай остальные 130 поштучно
Источник: Class Imbalance and Batch Effects in LLM-Based Screening for Systematic Reviews
ArXiv ID: 2608.14737 | Сгенерировано: 2026-08-18 05:30

Проблемы LLM

ПроблемаСутьКак обойти
Групповая обработка списка меняет решения по сравнению с поштучной проверкойПросишь модель оценить много объектов (резюме, тикеты, статьи, отзывы) за один запрос. Модель неявно сравнивает объекты друг с другом, а не оценивает каждый изолированно. Если подходящих объектов мало — модель пропускает больше кандидатов, чем при поштучной проверке. Если объектов "за" и "против" примерно поровну — становится строже. Итоговая метрика качества может остаться прежней, но набор конкретных решений сильно поменяетсяВозьми выборку 15-20 объектов. Прогони поштучно (один запрос — один объект) и отдельно батчем (все в одном запросе). Сравни совпадение решений. Если совпадений меньше 90% — используй поштучную обработку для критичных задач, где ошибка стоит дорого

Методы

МетодСуть
Сравнение batch vs поштучной обработки — диагностика искаженияВозьми тестовую выборку 15-20 объектов. Прогони её двумя способами: поштучно (отдельный запрос на каждый объект) и батчем (все объекты в одном запросе). Сравни совпадение решений по каждому объекту. Совпадений < 90% используй поштучную обработку для финальной фильтрации. Работает для любой задачи фильтрации списка по критерию: отбор кандидатов, жалоб, статей, отзывов. Не устраняет искажение — только показывает, есть оно или нет. Для рутинных задач с низкой ценой ошибки проверку можно пропустить и оставить батч ради экономии времени

Тезисы

ТезисКомментарий
Групповая обработка заставляет модель сравнивать объекты друг с другом, а не оценивать их по отдельностиМодель не хранит жёсткий чек-лист критериев в голове. Видя много объектов в одном запросе, она неявно ищет "разумную" пропорцию среди них — похоже на эффект контраста у человека, который оценивает серию работ подряд, и средняя работа после слабых кажется хорошей. Применяй: для критичных задач (найм, отбор жалоб, юридическая проверка) уменьшай размер батча или переходи на поштучную обработку — это снижает контрастное искажение
Одинаковая итоговая метрика может скрывать замену одних ошибок на другиеАгрегированный показатель качества считает только количество ошибок, а не то, какие именно объекты ошиблись. Смена режима обработки (батч ↔ поштучно) может дать тот же или даже лучший общий результат, но при этом полностью изменить, какие конкретные объекты классифицированы неверно. Применяй: не доверяй только итоговой метрике при смене способа обработки — сверяй совпадение решений по конкретным объектам
📖 Простыми словами

Class Imbalance and Batch Effects inLLM-Based Screening for Systematic Reviews

arXiv: 2608.14737

Суть проблемы в том, что LLM — это не калькулятор с жесткой логикой, а скорее впечатлительный эксперт, чье мнение зависит от контекста. Когда ты скармливаешь модели пачку данных целиком, она перестает оценивать каждый объект изолированно. Вместо сухой проверки по критериям включается неявное сравнение: модель смотрит на всю группу и пытается найти в ней «среднюю температуру по больнице», из-за чего ее решения начинают плавать в зависимости от того, сколько «хороших» и «плохих» примеров попало в один замес.

Это как если бы ты пришел на дегустацию вин: когда пробуешь один бокал раз в час, ты оцениваешь его объективно, но если перед тобой выставили сразу двадцать бутылок, ты невольно начнешь сравнивать их между собой. В итоге средненькое вино на фоне откровенной бурды покажется тебе элитным урожаем, хотя по факту оно как было посредственным, так и осталось. Модель делает ровно то же самое — она теряет ориентиры и начинает подгонять ответы под общую массу, которую видит прямо сейчас.

Главная подстава здесь в дисбалансе классов. Если ты ищешь редкий бриллиант в куче навоза (например, 5 крутых резюме среди 100 откликов), модель в режиме batch-обработки расслабляется и начинает пропускать нужных кандидатов, просто потому что они «не вписываются» в общую серую массу. Но стоит пропорции выровняться до 50 на 50, как LLM внезапно включает режим «злого вахтера» и начинает браковать даже тех, кого при поштучной проверке она бы пропустила без вопросов.

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

Короче, batch-эффект — это тихий убийца точности. Если тебе нужен реально качественный результат, забудь про списки и прогоняй объекты по одному, как бы дорого это ни стоило по токенам. Либо ты платишь за индивидуальный подход, либо получаешь результат, который зависит от случайного соседства объектов в списке, а не от их реального качества. Поштучная проверка — единственный способ избежать галлюцинаций на почве сравнения.

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

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

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