Needle In A Haystack (NIAH)
Тест «иголка в стоге сена» (NIAH) проверяет, может ли LLM найти один факт, спрятанный на любой глубине длинного контекста. Разбираем происхождение теста, результаты, варианты и ограничения.
Поиск иголки в стоге сена (NIAH) — это метод оценки, при котором один факт — «иголка» — скрывают на заданной глубине среди большого объёма несвязанного текста — «стога сена», а большую языковую модель (LLM) просят его найти. Повторение теста с разной длиной контекста и разным расположением иголки даёт тепловую карту, показывающую, в какой части контекстного окна модель перестаёт находить информацию. Грег Камрадт представил этот тест в ноябре 2023 года вместе с репозиторием NIAH с открытым исходным кодом: он спрятал предложение «Лучшее занятие в Сан-Франциско — съесть сэндвич и посидеть в парке Долорес в солнечный день» в сборнике эссе Пола Грэма и попросил каждую модель назвать лучшее занятие в Сан-Франциско. В первых запусках тестировали GPT-4 Turbo от OpenAI с окном в 128K токенов и Claude 2.1 от Anthropic с окном в 200K.
Как работает тест#
Стог сена обрезают до заданного количества токенов, иголку вставляют на определённой доле этой длины — от 0% в начале до 100% в конце, — а ответ модели сравнивают с иголкой. Полный запуск проверяет значения по обеим осям:
Иголка никак не связана с окружающими её эссе, поэтому тест изолирует одну способность механизма внимания: находить и копировать определённый фрагмент в любом месте длинного запроса.
Основные результаты#
Первые тепловые карты Камрадта показали, что GPT-4 Turbo не находит иголку в контекстах длиннее примерно 73K токенов, преимущественно когда она расположена на глубине от 7% до 50%. Это близко к уязвимости середины запроса, выявленной в том же году исследованием Lost in the Middle. На исходном запросе Claude 2.1 набрала 27%; Anthropic подняла результат до 98% с помощью изменения промпта: ответ Claude начинался со слов «Вот самое важное предложение в контексте:». NIAH стала стандартным графиком при запуске моделей. В отчёте о Gemini 1.5 Google заявила о точности поиска свыше 99% при длине контекста не менее 10 миллионов токенов и расширила тест, добавив стоги сена из аудио и видео. Anthropic сообщила, что Claude 3 Opus показала полноту поиска выше 99% и иногда отмечала, что иголка выглядит искусственно вставленной в текст.
Варианты и ограничения#
Обычный NIAH близок к лексическому поиску, поскольку в вопросе используются те же ключевые слова, что и в иголке, и современные передовые модели уже показывают в нём максимальные результаты. В более сложных вариантах меняются требования к иголке:
- Поиск ключа доступа: случайное число, скрытое в повторяющемся тексте-заполнителе; такой тест использовался в 2023 году для оценки Landmark Attention, ещё до появления NIAH.
- Несколько иголок и агрегация: бенчмарк RULER от NVIDIA скрывает несколько ключей и значений, добавляет отслеживание переменных и агрегацию по часто встречающимся словам. Он показал, что на контексте длиной 32K удовлетворительные результаты продемонстрировала лишь половина из 17 моделей, заявлявших поддержку 32K токенов и более.
- Без буквального совпадения: NoLiMa формулирует вопросы так, чтобы они почти не пересекались с иголкой по словам. При длине контекста 32K 11 из 13 моделей набрали менее половины своих результатов на коротком контексте.
Потеря точности, выявляемая этими более сложными тестами при увеличении входных данных, называется ухудшением работы с контекстом. NIAH также отличается от генерации с дополнением посредством поиска (RAG), где внешний векторный поиск выбирает фрагменты до того, как их прочитает модель, и от обнаружения аномалий, где ищут неизвестные отклонения, а не заранее заданную цель.
Иголки на изображениях#
В компьютерном зрении это же выражение используют для обозначения обнаружения мелких объектов: человека на аэрофотоснимке, корабля на спутниковом изображении или опухолевой клетки на полнослайдовом патологическом скане при анализе медицинских изображений. Проблема заключается в разрешении: по умолчанию Ultralytics YOLO26 изменяет размер каждого изображения так, чтобы его длинная сторона составляла 640 пикселей. Поэтому кадр с дрона шириной 4000 пикселей уменьшается более чем в шесть раз, и пешеход высотой 10 пикселей становится шириной менее 2 пикселей. Инференс на фрагментах с SAHI запускает YOLO26 на перекрывающихся фрагментах, например плитках 256 × 256, с исходным разрешением и объединяет ограничивающие рамки. В тестах статьи о SAHI на аэродатасетах VisDrone и xView разбиение на фрагменты повысило AP обнаружения объектов на 5,1–6,8% для трёх разных детекторов.










