3,583 papers
arXiv:2512.14313 70 16 дек. 2025 г. FREE

Dynamic Context Selection: как количество и позиция контекста влияют на качество ответов LLM

КЛЮЧЕВАЯ СУТЬ
LLM проваливается на длинном контексте не потому что мало памяти, а потому что тонет в нерелевантной информации. Один лишний нерелевантный документ в RAG-системе режет качество ответов на 26% для простых вопросов. Метод Dynamic Context Selection решает это через адаптивный выбор количества документов под сложность вопроса (2, 3 или 4) и размещение релевантной информации в конце контекста — потому что модель теряет середину (эффект "lost in the middle"), но хорошо видит последние токены. Классификатор предсказывает сколько нужно, LLM-reranker отбирает топ-k самых релевантных и ставит в конец → точность растёт с 0.171 до 0.202 на сложных multi-hop вопросах.
Адаптировать под запрос

TL;DR

Dynamic Context Selection — исследование того, как количество и расположение информации в контексте влияет на качество ответов LLM в RAG-системах (когда модель получает внешние документы для ответа). Главная находка: нерелевантная информация (distractor'ы) резко ухудшает ответы, а позиция релевантной информации в контексте критически важна — середину модель игнорирует.

Для вопросов, требующих 2 шага рассуждений, один нерелевантный документ снижает качество на 26%. Для сложных вопросов (3-4 шага) — на 13-14%. При этом если дать слишком мало контекста — модель упустит важную информацию, если слишком много — утонет в шуме. Это компромисс точности и полноты: больше документов = больше шанс найти нужное, но и больше мусора, который сбивает с толку.

Исследователи создали classifier, который предсказывает сколько документов нужно для конкретного вопроса (2, 3 или 4), и LLM-reranker, который отфильтровывает самые релевантные. Плюс обнаружили: релевантная информация в конце контекста работает лучше, чем в начале или середине — это подтверждает эффект "lost in the middle" (потерялось посередине).

📌

Схема исследования

ПРОБЛЕМА:
Standard RAG → всегда берёт K документов (например, 5)
              → часть нерелевантны (distractor'ы)
              → релевантные теряются в середине

РЕШЕНИЕ:
ШАГ 1: Classifier анализирует вопрос → предсказывает оптимальное k (2, 3 или 4)
ШАГ 2: Retriever достаёт 5 кандидатов
ШАГ 3: LLM-reranker получает вопрос + 5 кандидатов + predicted k
       → отбирает топ-k самых релевантных
       → размещает их в конце контекста
ШАГ 4: Generator получает вопрос + отфильтрованный контекст → даёт ответ

Все шаги — отдельные запросы в pipeline с инфраструктурой (vector DB, retriever models, classifier).

📌

Ключевые находки

1. Количественный вред distractor'ов:

Исследователи взяли вопросы разной сложности (2-hop, 3-hop, 4-hop — это число шагов рассуждений для ответа) и постепенно добавляли нерелевантные документы:

  • 2-hop вопросы: 1 distractor → -26% качества, 2 distractor'а → ещё хуже
  • 3-hop вопросы: 1 distractor → -13.5%
  • 4-hop вопросы: 1 distractor → -14.4%

Простые вопросы страдают сильнее, потому что им нужно меньше контекста — и любой мусор сразу перевешивает полезное.

2. Эффект "lost in the middle" подтверждён:

Исследователи брали 5 документов (релевантные + distractor'ы) и меняли позицию релевантных:

Позиция релевантных Exact Match F1 score
В конце 0.5567 0.6361
В начале 0.5447 0.6212
В середине 0.5391 0.6126

Конец контекста — лучшая позиция. Середина — худшая. LLM приоритизируют недавнюю информацию (recency bias).

3. Динамический выбор k работает (но нужен хороший reranker):

Просто classifier без reranker'а → хуже baseline (потому что отрезает релевантные документы, если они в нижних позициях).

Classifier + LLM-reranker → лучше baseline на всех конфигурациях:

  • MuSiQue dataset: 0.171 (baseline) → 0.202 (classifier+LLM)
  • 2WikiMultihopQA: 0.488 (baseline) → 0.531 (classifier+LLM)
  • MultihopRAG: 0.594 (baseline) → 0.625 (classifier+LLM)

4. Идеальный retriever + classifier >> fixed-k:

В Oracle Study (идеальные условия) показали: если retriever безупречен, classifier с точным k даёт 0.564 EM vs 0.523 у лучшего fixed-k.

📌

Применимые принципы

Хотя исследование про сложную систему с инфраструктурой, можно извлечь три практических принципа для работы с длинным контекстом:

📌

🎯 Принцип 1: Размещай самое важное в конце

Если работаешь с длинным контекстом (Projects в ChatGPT, Artifacts в Claude), самую релевантную информацию размещай ближе к концу.

Пример: Ты анализируешь серию интервью с клиентами для выявления болей. У тебя 10 интервью, но 3 из них — ключевые, с самой ценной информацией.

Ты продакт-менеджер. Нужно выявить топ-3 боли клиентов из интервью.

[7 обычных интервью]

ОСОБЕННО ВАЖНЫЕ ИНТЕРВЬЮ (самые подробные и репрезентативные):

[Интервью №8]
[Интервью №9]  
[Интервью №10]

Какие три главные боли повторяются?
📌

🧹 Принцип 2: Убирай нерелевантное агрессивно

Каждый нерелевантный фрагмент снижает качество. Лучше дать меньше контекста, но чистого, чем больше с мусором.

Пример workflow:

ШАГ 1: Найди в [большом документе] все упоминания про [тему X]. 
       Выпиши цитаты списком.

ШАГ 2 (новый запрос): Вот цитаты про [тему X]:
       [только отфильтрованные цитаты]

       Теперь проанализируй паттерны.

Вместо "вот весь документ, найди тему X и проанализируй" → двухэтапный процесс с очисткой.

📌

📊 Принцип 3: Адаптируй количество контекста под сложность

Простой вопрос — дай минимум контекста. Сложный multi-step вопрос — давай больше, но фильтруй.

Пример:

Простой вопрос:

Вот стенограмма встречи [5 страниц текста].

Какое решение приняли по бюджету?

→ Лучше: попроси сначала выдернуть только фрагмент про бюджет, потом дай инструкцию.

Сложный вопрос:

Вот 5 исследований рынка [прикрепляешь файлы].

Какие три тренда влияют на нашу нишу? 
Как они связаны? 
Какой из них будет доминировать через год?

→ Здесь нужен весь контекст, но попроси модель сначала извлечь релевантные фрагменты из каждого исследования, потом синтезируй.

🧠

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

Слабость LLM: Модели не "читают" контекст равномерно. Attention mechanism в трансформерах распределяется неравномерно — начало и конец получают больше внимания, середина "размывается" (особенно в длинных контекстах). Нерелевантная информация создаёт шум в attention weights — модель "отвлекается" на неважные токены.

Сильная сторона LLM: Модели отлично работают с compact, structured, relevant context. Чем чище и яснее сигнал, тем лучше ответ. Recency bias (приоритет недавней информации) — это feature, не bug: последние токены в контексте имеют более "свежие" embeddings в процессе генерации.

Как использовать: 1. Фильтруй контекст жёстко — один проход на извлечение релевантного, второй на анализ 2. Ставь важное в конец — используй маркеры типа "КРИТИЧЕСКИ ВАЖНО:", "ГЛАВНЫЙ КОНТЕКСТ:" 3. Масштабируй контекст под задачу — не давай модели больше, чем нужно

Рычаги управления: - Объём контекста → меньше для простых задач, экономия токенов и выше точность - Позиция информации → переставь блоки — самое важное в конец - Маркеры важности → явно пометь "PRIMARY CONTEXT:", "SECONDARY CONTEXT:" — усиливает attention - Двухэтапный процесс → сначала "извлеки релевантное", потом "проанализируй" — вместо "вот всё, разберись"

🧠

Как это работает в Projects/длинных контекстах

Сценарий: У тебя 10 файлов с исследованиями конкурентов. Нужно найти их слабые места для pitch-презентации.

❌ Неэффективно:

[Загружаешь все 10 файлов в Project]

Найди слабые места конкурентов и предложи как нам их обыграть.

→ Модель получает огромный контекст, половина нерелевантна, середина потеряется.

✅ Эффективно (принципы из исследования):

ШАГ 1 (в Project):
Вот 10 исследований конкурентов [файлы].

Для КАЖДОГО конкурента извлеки:
- Ключевые слабости (проблемы продукта, жалобы клиентов)
- Пробелы в функциональности

Выдай таблицей: Конкурент | Слабости | Пробелы

ШАГ 2 (новый чат или продолжение):
Вот слабости конкурентов:

[копируешь таблицу из Шага 1]

НАШИ ПРЕИМУЩЕСТВА (самое важное — в конце):
- [наше УТП 1]
- [наше УТП 2]
- [наше УТП 3]

Как нам обыграть эти слабости в pitch-презентации?

Что изменилось: - Фильтрация (Принцип 2): Шаг 1 извлекает только релевантное, убирает шум - Позиционирование (Принцип 1): Наши преимущества в конце — модель сфокусируется на них - Адаптивный sizing (Принцип 3): Сложная задача → двухэтапный процесс с очисткой контекста

⚠️

Ограничения принципов

⚠️ Длина контекста: В обычных чатах (без Projects) контекст ограничен. Эти принципы ценны для Projects, Artifacts, длинных диалогов — там где >10k токенов контекста.

⚠️ Субъективные задачи: Позиционирование влияет на factual tasks (анализ, извлечение фактов). Для креатива или brainstorming'а позиция менее критична.

⚠️ Trade-off времени: Двухэтапный процесс (фильтрация → анализ) требует больше запросов. Для простых задач ovеrhead не окупается.

🔍

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

Команда взяла MuSiQue dataset — коллекцию вопросов, требующих 2, 3 или 4 шага рассуждений (multi-hop questions). Например: "В каком городе родился основатель компании, которая выпустила продукт X?" — нужно найти компанию, потом основателя, потом город рождения.

Для каждого вопроса есть "золотые" документы (правильные ответы где искать) и distractor'ы (похожие, но нерелевантные тексты). Исследователи систематически варьировали: 1. Сколько золотых документов дать (1, 2, 3, 4) 2. Сколько distractor'ов добавить (0, 1, 2) 3. Где разместить золотые документы (начало, середина, конец)

И измеряли качество ответов (Exact Match, F1-score). Результаты удивили масштабом влияния: один distractor роняет 2-hop вопросы на 26% — это огромно! Подтвердилась гипотеза "lost in the middle": середина игнорируется, конец работает лучше.

Затем обучили RoBERTa classifier (87.3% accuracy) предсказывать сколько документов нужно, и интегрировали Mistral Nemo как reranker для финальной фильтрации. Pipeline: ColBERT retriever → reranker (MonoT5 / BGE) → classifier → LLM-reranker → Flan-T5-XL generator.

Ключевой инсайт для практики: Даже с идеальным retriever'ом, distractor'ы в контексте убивают качество. А позиция релевантной информации в контексте — это бесплатная оптимизация, которую можно применить прямо сейчас.

🔗

Ресурсы

Dynamic Context Selection for Retrieval-Augmented Generation: Mitigating Distractors and Positional Bias

Датасеты: MuSiQue-Ans, 2WikiMultihopQA, MultihopRAG

Maya Iratni, Mohand Boughanem, Taoufiq Dkaki — Institut de Recherche en Informatique de Toulouse (IRIT), France


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

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

LLM проваливается на длинном контексте не потому что мало памяти, а потому что тонет в нерелевантной информации. Один лишний нерелевантный документ в RAG-системе режет качество ответов на 26% для простых вопросов. Метод Dynamic Context Selection решает это через адаптивный выбор количества документов под сложность вопроса (2, 3 или 4) и размещение релевантной информации в конце контекста — потому что модель теряет середину (эффект "lost in the middle"), но хорошо видит последние токены. Классификатор предсказывает сколько нужно, LLM-reranker отбирает топ-k самых релевантных и ставит в конец → точность растёт с 0.171 до 0.202 на сложных multi-hop вопросах.

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

Не вали всё в один контекст — разбей на фильтрацию и анализ. Первый запрос: извлеки только релевантное из большого массива. Второй запрос: вот отфильтрованное (самое важное в конце) — теперь анализируй. Attention mechanism в трансформерах неравномерен: начало и конец получают больше внимания, середина размывается. Чем длиннее контекст, тем сильнее эффект. Нерелевантная информация создаёт шум в весах — модель отвлекается на мусорные токены вместо полезных.

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

Recency bias (приоритет недавней информации) — это не баг, а фича: последние токены имеют более свежие embeddings в процессе генерации. Исследование показало: релевантная информация в конце даёт 0.5567 Exact Match, в середине — 0.5391, в начале — 0.5447. Разница кажется небольшой, но на сложных multi-hop вопросах (3-4 шага рассуждений) это +3-4% к точности — критично для продакшна. Плюс эффект накопительный: если 2-3 ключевых факта в середине потеряются, модель строит ответ на обрывках контекста.

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

Работа с длинным контекстом — Projects в ChatGPT, Artifacts в Claude, большие документы >10k токенов. Конкретно для задач где нужно извлечь информацию из массива данных (анализ интервью, конкурентная разведка, обработка исследований), особенно когда часть информации точно нерелевантна. НЕ подходит для креатива или brainstorming'а — там позиция информации менее критична, важнее разнообразие стимулов.

Мини-рецепт

1. Фильтруй агрессивно: Первый запрос — извлеки из [большой документ] все упоминания про [тема X], выпиши цитаты списком. Убирай нерелевантное жёстко — каждый лишний фрагмент снижает качество.
2. Размещай важное в конце: Второй запрос — вот отфильтрованные цитаты + в конце блок 'КРИТИЧЕСКИ ВАЖНО: [самое релевантное]'. Модель сфокусируется на последних токенах.
3. Адаптируй объём: Простой вопрос (один факт) — давай минимум контекста. Сложный multi-step (3-4 шага рассуждений) — давай больше, но через фильтрацию. Не гони весь контекст в один промпт.

Примеры

[ПЛОХО] : Вот 10 файлов исследований конкурентов [загружаешь в Project]. Найди слабые места и предложи как обыграть (модель получает огромный контекст, половина нерелевантна, середина теряется)
[ХОРОШО] : Шаг 1: Вот 10 исследований. Для КАЖДОГО конкурента извлеки: слабости продукта, жалобы клиентов, пробелы. Выдай таблицей → Шаг 2 (новый запрос): Вот слабости конкурентов: [таблица]. НАШИ ПРЕИМУЩЕСТВА (самое важное): [УТП 1-3]. Как обыграть их слабости в pitch? — фильтрация убрала шум, наши преимущества в конце усиливают фокус модели
Источник: Dynamic Context Selection for Retrieval-Augmented Generation: Mitigating Distractors and Positional Bias
ArXiv ID: 2512.14313 | Сгенерировано: 2026-01-09 00:42
📖 Простыми словами

Dynamic Context Selection: как количество и позиция контекста влияют на качество ответов LLM

arXiv: 2512.14313

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

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

Исследование Dynamic Context Selection четко показывает, что больше — не значит лучше. Главная проблема здесь в позиционном смещении: релевантная информация работает только тогда, когда она под носом или в самом финале. Как только ты добавляешь в контекст «шум» (нерелевантные куски), качество ответов падает камнем вниз. Выяснилось, что 10 из 10 моделей лажают, если нужный факт окружен информационным мусором, даже если формально контекстное окно позволяет запихнуть туда хоть «Войну и мир».

Этот принцип универсален для любой работы с данными. Будь то поиск по корпоративной базе, юридический анализ или чат-бот техподдержки — если ты просто кидаешь в модель все, что нашел поисковик, ты сам себе копаешь яму. SEO для документов внутри RAG становится важнее, чем сам объем этих документов. Нужно не просто «найти и показать», а жестко фильтровать и правильно расставлять акценты, иначе модель выберет самый громкий, но бесполезный кусок текста.

Короче: хватит надеяться на огромные контекстные окна в миллион токенов — это маркетинговая уловка, которая разбивается о суровую математику внимания. Динамический отбор контекста — это единственный способ заставить AI работать адекватно. Либо ты сам выкидываешь мусор и ставишь важное в начало, либо получаешь на выходе уверенный бред. В мире, где данных слишком много, побеждает тот, кто умеет вовремя замолчать и оставить только суть.

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

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

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