
Всем привет! В первой части мы разобрали теорию: почему LLM «забывают» информацию в середине промпта, как на это влияет архитектура внимания и при чём здесь ротационные кодирования (RoPE). Мы выяснили, что эффект Lost in the Middle — это закономерное следствие того, как устроены современные трансформеры и как они обучаются.
Но насколько всё плохо на практике? Если разработчик модели заявляет контекстное окно в 128k или даже 1M токенов — можем ли мы на него рассчитывать в реальном продакшене?
Во второй части мы переходим от теории к цифрам на бенчмарках. Мы разберём, почему стандартные тесты "иголка в стоге сена" (NIAH) безнадёжно устарели и как новые метрики вроде RULER и NoLiMa показывают реальное «рабочее» окно моделей, которое иногда в 60 раз меньше заявленного.
В финале этой статьи я соберу практические архитектурные принципы, которые помогают проектировать LLM-системы так, чтобы длинный контекст действительно повышал качество, а не превращался в источник ошибок.
Каково состояние на текущий момент?
Ну хорошо, эффект lost in the middle обнаружили, позиционное смещение показали, даже наметили его основные причины. А дальше что? Кажется, что за прошедшие несколько лет уже должны были найти решение этой проблемы, но на практике всё гораздо менее однозначно.
Во‑первых, если говорить о мейнстримных авторегрессионных LLM, от каузального внимания сейчас никуда не уйти.
Практически все современные большие языковые модели обучаются на задаче предсказания следующего токена по предыдущим: каждый токен на каждом слое может смотреть только назад. Это базовый механизм трансформеров‑декодеров, обеспечивающий генерацию текста слева направо. Работы про attention sink и стриминговым моделям [1,2] показывают, что именно каузальная организация внимания и процесса обучения приводят к систематическому завышению вкладов первых токенов. Эти токены начинают получать непропорционально высокие веса внимания от последующих токенов, даже когда они почти не несут семантики. В итоге они превращаются в «раковины/поглотители внимания» (attention sinks), куда стекается значительная часть внимания, а остальным токенам остаётся лишь малая его доля.
Теоретически, можно уйти в совсем другие архитектуры (RetNet, Mamba, Hyena и так далее), где нет классического self‑attention, но это уже другие семейства моделей, которые пока в основном находятся в исследовательской фазе [3-5].
Во‑вторых, от RoPE сейчас тоже никто массово не отказывается.
Роторное позиционное кодирование (RoPE), предложенное в RoFormer [6], стало де‑факто стандартом: LLaMA, LLaMA-2/3, Mistral, Mixtral, Gemma, многие Qwen‑семейства и другие открытые SOTA‑модели используют именно RoPE или его модификации [7].
Причина проста. RoPE очень удачно сочетает относительное кодирование расстояния, хорошую работу на коротких и средних контекстах, интерпретируемость позиционной информации, отсутствие дополнительных обучаемых параметров в отличии от позиционных эмбеддингов. В общем, это делает RoPE вычислительно более эффективным.
По сути, исследования ведутся в двух основных направлениях:
Выравнивание внимания без дообучения моделей и изменения механизма внимания или позиционного кодирования: либо переинтерпретируют/калибруют уже вычисленные attention‑веса, либо управляют контекстом и позициями на этапе инференса [1, 8-10].
Изменение механизма позиционного кодирования, в основном модификация RoPE для более сглаженного распределения весов по позициям токенов. Тут целью является изменить саму форму позиционного кодирования, чтобы ослабить long‑term decay (долгосрочный распад) для дальних токенов и сделать чувствительность по позициям более гладкой, без «провалов» в середине [11-14].
Таким образом, разработчики моделей всячески стараются справиться с этим ограничением LLM, но подтверждений о преодолении эффекта «потерянного в середине» и снижении влияния позиционного смещения нет. Каждый поставщик моделей всякий раз заявляет о расширении окна, о невероятных метриках работы с контекстом и все более успешном решении как теоретических, так и прикладных задач. Но на деле — мы до сих пор видим ухудшение качества работы моделей на длинных контекстах.
А сколько текста модель учитывает эффективно?
Предложены бенчмарки, которые помогают оценить возможности моделей извлекать полезную информацию из контекста. Один из первых и наиболее популярных — «иголка в стоге сена» (Needle‑in‑a-Haystack, NIAH). Это тест, ориентированный на проверку возможностей модели вытащить из длинного текста заранее вставленный туда «секретный» фрагмент. На сегодняшний день, современные модели практически идеально справляются с такой задачей.
Однако в реальных прикладных сценариях этот тест плохо отражает реальную эффективность работы LLM с контекстом. Он очень прямолинеен: формулировка вопроса и «иглы» обычно лексически сильно пересекаются, вплоть до дословного совпадения. В такой постановке модель может решать задачу почти как простой ретривер — просто находя совпадающую строку в контексте, а не выполняя сложное семантическое сопоставление и анализ.
RULER: как модель извлекает несколько фактов из контекста
Бенчмарк RULER [15] приближает задачу работы LLM к более прикладному использованию: модель должна извлекать несколько фактов или выбирать правильную «иглу» среди нескольких вставок релевантной информации в зашумлённый контекст.
Описание бенчмарка RULER
Бенчмарк состоит из нескольких блоков задач:
В задачах в духе NIAH («игла в стоге сена») модель должна найти число, спрятанное в большом тексте: например, в десятке абзацев встречается фраза «magic number for long‑context is 12345», а вопрос: «Какое magic number для long‑context?»; в варианте Multi‑values таких чисел несколько, и нужно перечислить все.
В задаче Variable Tracking модель читает цепочку присваиваний вида VAR X1 = 12345; VAR X2 = X1; VAR X3 = X2 и должна ответить: «Какие переменные равны 12345?» → X1, X2, X3.
В задачах Common/Frequent Words Extraction в длинной «каше» слов нужно назвать самые частые, например из списка с повторениями выделить aaa, ccc, iii.
В блоке задач QA по нескольким коротким документам в большом контексте модель должна выбрать тот, который содержит ответ на вопрос.
Конфигурация и результаты эксперимента
В эксперименте авторы тестируют 17 длинноконтекстных LLM (15 open‑source и 2 закрытые: Gemini-1.5-Pro и GPT-4) разных размеров от 7B до 8×22B (MoE), с заявленным окном от 32k до 1M токенов. Все модели запускают в одинаковых условиях при длинах контекста от 4k до 128k. Ответ засчитывается, если правильный вывод присутствует в сгенерированном тексте.
В качестве порогового значения берут качество Llama2-7B на длине 4k (85.6%) и определяют эффективную длину контекста как максимальную длину, на которой средняя точность модели по всем задачам выше этого порога.
Таблица результатов демонстрирует явное расхождение между заявленным окном контекста и окном, в котором модель эффективно решает задачи извлечения информации:
Модели |
Заявленное окно |
Эффективное окно |
Llama2 (7B) |
4K |
- |
Gemini-1.5-Pro |
1M |
>128K |
GPT-4 |
128K |
64K |
Llama31 (70B) |
128K |
64K |
Qwen2 (72B) |
128K |
32K |
Command‑R‑plus (104B) |
128K |
32K |
GLM4 (9B) |
1M |
64K |
Llama3.1 (8B) |
128K |
32K |
GradientAI/Llama3 (70B) |
1M |
16K |
Mixtral-8×22B (39B/141B) |
64K |
32K |
Полная таблица результатов эксперимента RULER
В таблице результатов: по строкам — модели, по столбцам — длины контекста, цифры — средняя accuracy по всем задачам; значения, превышающие порог 85.6%, подчёркнуты. Дополнительно для каждой модели указаны её заявленное и эффективное окно, а также два взвешенных средних (wAvg (inc) и wAvg (dec)), которые агрегируют качество по всем длинам, присваивая больший вес либо длинным контекстам (wAvg inc), либо коротким (wAvg dec). Это имитирует сценарии, где в реальном использовании чаще встречаются либо длинные, либо короткие последовательности. По этим взвешенным средним модели ранжируются (ранг указан индексом у значения).
Таблица: Результаты тестирования моделей на бенчмарке RULER (из статьи RULER [15])
Models |
Claimed Length |
Effective Length |
4K |
8K |
16K |
32K |
64K |
128K |
Avg. |
wAvg. (inc) |
wAvg. (dec) |
Llama2 (7B) |
4K |
- |
85.6 |
|
|
|
|
|
|
|
|
Gemini-1.5-Pro |
1M |
>128K |
96.7 |
95.8 |
96.0 |
95.9 |
95.9 |
94.4 |
95.8 |
95.5(1st) |
96.1(1st) |
GPT-4 |
128K |
64K |
96.6 |
96.3 |
95.2 |
93.2 |
87.0 |
81.2 |
91.6 |
89.0(2nd) |
94.1(2nd) |
Llama3.1 (70B) |
128K |
64K |
96.5 |
95.8 |
95.4 |
94.8 |
88.4 |
66.6 |
89.6 |
85.5(4th) |
93.7(3rd) |
Qwen2 (72B) |
128K |
32K |
96.9 |
96.1 |
94.9 |
94.1 |
79.8 |
53.7 |
85.9 |
79.6(9th) |
92.3(4th) |
Command‑R-plus (104B) |
128K |
32K |
95.6 |
95.2 |
94.2 |
92.0 |
84.3 |
63.1 |
87.4 |
82.7(7th) |
92.1(5th) |
GLM4 (9B) |
1M |
64K |
94.7 |
92.8 |
92.1 |
89.9 |
86.7 |
83.1 |
89.9 |
88.0(3rd) |
91.7(6th) |
Llama3.1 (8B) |
128K |
32K |
95.5 |
93.8 |
91.6 |
87.4 |
84.7 |
77.0 |
88.3 |
85.4(5th) |
91.3(7th) |
GradientAI/Llama3 (70B) |
1M |
16K |
95.1 |
94.4 |
90.8 |
85.4 |
80.9 |
72.1 |
86.5 |
82.6(8th) |
90.3(8th) |
Mixtral-8×22B (39B/141B) |
64K |
32K |
95.6 |
94.9 |
93.4 |
90.9 |
84.7 |
31.7 |
81.9 |
73.5(11th) |
90.3(9th) |
Yi (34B) |
200K |
32K |
93.3 |
92.2 |
91.3 |
87.5 |
83.2 |
77.3 |
87.5 |
84.8(6th) |
90.1(10th) |
Phi3-medium (14B) |
128K |
32K |
93.3 |
93.2 |
91.1 |
86.8 |
78.6 |
46.1 |
81.5 |
74.8(10th) |
88.3(11th) |
Mistral‑v0.2 (7B) |
32K |
16K |
93.6 |
91.2 |
87.2 |
75.4 |
49.0 |
13.8 |
68.4 |
55.6(13th) |
81.2(12th) |
LWM (7B) |
1M |
<4K |
82.3 |
78.4 |
73.7 |
69.1 |
68.1 |
65.0 |
72.8 |
69.9(12th) |
75.7(13th) |
DBRX (36B/132B) |
32K |
8K |
95.1 |
93.8 |
83.6 |
63.1 |
2.4 |
0.0 |
56.3 |
38.0(14th) |
74.7(14th) |
Together (7B) |
32K |
4K |
88.2 |
81.1 |
69.4 |
63.0 |
0.0 |
0.0 |
50.3 |
33.8(15th) |
66.7(15th) |
LongChat (7B) |
32K |
<4K |
84.7 |
79.9 |
70.8 |
59.3 |
0.0 |
0.0 |
49.1 |
33.1(16th) |
65.2(16th) |
LongAlpaca (13B) |
32K |
<4K |
60.6 |
57.0 |
56.6 |
43.6 |
0.0 |
0.0 |
36.3 |
24.7(17th) |
47.9(17th) |
Для контраста, можно посмотреть результаты моделей на стандартном наборе задач NIAH, где большинство моделей дают почти 100% точности даже на очень длинных контекстах, что подчёркивает: «найди дословную фразу» не является хорошим индикатором реальных способностей модели к работе с длинным контекстом.
Результаты стандартного бенчмарка NIAH (из статьи RULER)
Models |
Claimed Length |
4K |
8K |
16K |
32K |
64K |
128K |
Avg. |
Gemini-1.5 |
1M |
100.0 |
100.0 |
100.0 |
98.0 |
100.0 |
100.0 |
99.7 |
GPT-4 |
128K |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
Llama3.1 (70B) |
128K |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
99.6 |
99.9 |
Llama3.1 (8B) |
128K |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
99.6 |
99.9 |
Qwen2 (72B) |
128K |
100.0 |
100.0 |
100.0 |
100.0 |
99.8 |
56.4 |
92.7 |
Command‑R‑plus (35B) |
128K |
100.0 |
100.0 |
100.0 |
100.0 |
99.8 |
86.0 |
97.6 |
GLM4 (9B) |
128K |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
GradientAI/Llama3 (70B) |
1M |
100.0 |
100.0 |
100.0 |
99.6 |
99.2 |
97.8 |
99.4 |
Mixtral-8×22B (39B/141B) |
64K |
100.0 |
100.0 |
100.0 |
100.0 |
99.6 |
24.2 |
87.3 |
Yi (34B) |
200K |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
Phi3-medium (14B) |
128K |
100.0 |
99.8 |
100.0 |
99.8 |
99.8 |
73.8 |
95.5 |
Mistral‑v0.2 (7B) |
32K |
100.0 |
100.0 |
100.0 |
97.0 |
70.0 |
7.4 |
79.1 |
LWM (7B) |
1M |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
100.0 |
DBRX (36B/132B) |
32K |
100.0 |
100.0 |
90.0 |
93.2 |
0.8 |
0.0 |
64.0 |
Together (7B) |
32K |
100.0 |
100.0 |
100.0 |
99.8 |
0.0 |
0.0 |
66.6 |
LongChat (7B) |
32K |
100.0 |
100.0 |
97.6 |
98.4 |
0.0 |
0.0 |
66.0 |
LongAlpaca (13B) |
32K |
90.2 |
90.2 |
88.4 |
83.4 |
0.0 |
0.0 |
58.7 |
Mixtral‑base (8×7B) |
32K |
100.0 |
100.0 |
100.0 |
100.0 |
85.2 |
34.8 |
86.7 |
Mistral‑base (7B) |
32K |
100.0 |
100.0 |
100.0 |
100.0 |
94.8 |
0.4 |
82.5 |
Jamba‑base (52B) |
256K |
100.0 |
100.0 |
98.8 |
99.8 |
99.8 |
86.4 |
97.5 |
LWM‑base (7B) |
1M |
100.0 |
99.4 |
97.8 |
98.6 |
98.2 |
98.6 |
98.8 |
LongLoRA‑base (7B) |
100K |
99.8 |
100.0 |
100.0 |
99.8 |
100.0 |
0.0 |
83.3 |
Yarn‑base (7B) |
128K |
97.4 |
97.8 |
91.4 |
85.4 |
86.6 |
20.0 |
79.8 |
Together‑base (7B) |
32K |
100.0 |
100.0 |
100.0 |
99.8 |
0.0 |
0.0 |
66.6 |
Вывод по RULER
При увеличении длины контекста качество решения задач стабильно падает для каждой модели. Семантически задача не усложняется, нет конкурирующих фактов, которые могли бы логически путать модель. Значит, деградация возникает не из‑за неоднозначностей в данных, а исключительно из‑за самого факта увеличения контекста.
Это позволяет эмпирически оценить эффективную длину контекста: для топовых моделей она оказывается меньше половины заявленного окна, а для нишевых моделей – иногда на порядок ниже. Уже на этом этапе видно, что поддержка окна 128k–1M токенов не является гарантией способности надёжно извлекать и комбинировать факты на всей этой длине.
NoLiMa: как модель извлекает ассоциативную информацию из контекста
Следующий важный момент — то, что даже RULER в основном проверяет буквальное сопоставление вопрос‑ответ. Задача всё ещё далека от реальной аналитики: модели достаточно найти фрагмент, который лексически явно связан с вопросом. Но одна из ключевых сильных сторон LLM — это как раз способность делать логические и ассоциативные выводы на основе содержательной, а не посимвольной близости.
Этот пробел пытаются закрыть в работе NoLiMa: Long‑Context Evaluation Beyond Literal Matching [16]. Авторы формируют бенчмарк, в котором вопросы и «иглы» содержат ключевые слова, связанные ассоциативно (через знания о мире или здравый смысл), а прямых лексических совпадений почти нет.
Описание бенчмарка NoLiMa
В NoLiMa проверяют не просто «умение найти фразу по дословному совпадению», а способность формировать скрытые ассоциации в длинном контексте. В большой «стог сена» из фрагментов книг прячут одну «иглу» — факт про персонажа, например:
«На самом деле, Юки живёт рядом с оперным театром Semperoper»
Вопрос при этом звучит иначе:
Какой персонаж бывал в Дрездене?
слово «Дрезден» в игле не встречается, и модель должна знать, что Semperoper находится в Дрездене, и вернуть — Yuki.
В других шаблонах ассоциация строится на здравом смысле: игла говорит, что герой много лет веган, а вопрос — «Кто не может есть блюда из рыбы?». Есть и более сложные двухшаговые случаи, где нужно сначала связать Дрезден с землёй Саксония, а уже потом найти персонажа.
За счёт минимального лексического совпадения между вопросом и нужным фрагментом NoLiMa измеряет именно длинноконтекстное ассоциативное и смысловое извлечение, а не банальный поиск по ключевому слову.
В NoLiMa эксперимент устроен аналогично RULER. Оценивают 12 популярных моделей с заявленным окном ≥128k токенов на длинах 250 - 32k.
В отличие от RULER, где порог качества фиксирован, здесь для каждой модели отдельно считают base score — среднюю максимальную точность на коротких длинах (250/500/1k). Эффективная длина определяют как максимальную длину контекста, на которой средняя точность остаётся ≥85% от этого base score.
Таблица результатов демонстрирует еще более драматичные цифры:
Модели |
Заявленное окно |
Эффективное окно |
GPT-4o |
128K |
8K |
Llama 3.3 70B |
128K |
2K |
Llama 3.1 405B |
128K |
2K |
Gemini 1.5 Pro |
2M |
2K |
Mistral Large 2 |
128K |
2K |
Claude 3.5 Sonnet |
200K |
4K |
Gemini 1.5 Flash |
1M |
<1K |
GPT-4o mini |
128K |
<1K |
Полная таблица результатов тестирования моделей на бенчмарке NoLiMa (из статьи NoLiMa)
Models |
Claimed Length |
Effective Length |
Base Score (×0.85: Thr.) |
1K |
2K |
4K |
8K |
16K |
32K |
GPT-4o |
128K |
8K |
99.3 (84.4) |
98.1 |
98.0 |
95.7 |
89.2 |
81.6 |
69.7 |
Llama 3.3 70B |
128K |
2K |
97.3 (82.7) |
94.2 |
87.4 |
81.5 |
72.1 |
59.5 |
42.7 |
Llama 3.1 405B |
128K |
2K |
94.7 (80.5) |
89.0 |
85.0 |
74.5 |
60.1 |
48.4 |
38.0 |
Llama 3.1 70B |
128K |
2K |
94.5 (80.3) |
91.0 |
81.8 |
71.2 |
62.7 |
51.8 |
43.2 |
Gemini 1.5 Pro |
2M |
2K |
92.6 (78.7) |
86.4 |
82.7 |
75.4 |
63.9 |
55.5 |
48.2 |
Jamba 1.5 Mini |
256K |
<1K |
92.4 (78.6) |
76.3 |
74.1 |
70.8 |
62.2 |
52.7 |
43.6 |
Command R+ |
128K |
<1K |
90.9 (77.3) |
77.0 |
73.5 |
66.3 |
39.5 |
21.3 |
7.4 |
Mistral Large 2 |
128K |
2K |
87.9 (74.7) |
86.1 |
85.5 |
73.3 |
51.5 |
32.6 |
18.7 |
Claude 3.5 Sonnet |
200K |
4K |
87.6 (74.4) |
85.4 |
84.0 |
77.6 |
61.7 |
45.7 |
29.8 |
Gemini 1.5 Flash |
1M |
<1K |
84.7 (72.0) |
68.6 |
61.6 |
51.0 |
44.4 |
35.5 |
28.6 |
GPT-4o mini |
128K |
<1K |
84.9 (72.2) |
67.7 |
58.2 |
44.1 |
32.6 |
20.6 |
13.7 |
Llama 3.1 8B |
128K |
1K |
76.7 (65.2) |
65.7 |
54.4 |
44.1 |
31.9 |
22.6 |
14.2 |
Lost in the middle и общий провал качества
В работе NoLiMa также исследуется эффект lost in the middle. В анализе глубины вставки иглы авторы двигают факт по всему окну (до 32k токенов) и получают классическую картинку: для простых «одношаговых» задач (one‑hop) качество заметно проваливается, когда нужный фрагмент оказывается в середине контекста, тогда как начало и конец держатся лучше.
Для более сложных двухшаговых ассоциаций (two‑hop) картина другая: при увеличении длины контекста просаживается уже вся кривая, включая края, то есть проблема выходит за рамки чисто позиционного эффекта. Чтобы разделить влияние позиции и общей нагрузки на внимание, авторы вводят режим «Last 2K», где игла всегда лежит в последних 2k токенов, а общий размер контекста растёт. В этом режиме относительная позиция факта и вопроса фиксирована, и становится видно, что для сложных задач деградация качества связана не только с «потерей середины», а с тем, что модели в принципе тяжело надёжно извлекать ассоциативную информацию на фоне очень длинного нерелевантного контекста.
Вывод по NoLiMa
Тест NoLiMa даёт гораздо менее оптимистичную картину работы моделей с длинными контекстами в сценариях, похожих на реальные задачи извлечения знаний. Эффективная длина окна здесь уже не превышает 8k токенов (для GPT-4o, при заявленных 128k), то есть примерно в 16 раз меньше обещанного, а для большинства моделей — всего порядка 2k токенов, что уже в 60+ раз меньше заявленного окна.
Таким образом, оба бенчмарка показывают схожую картину: несмотря на большие заявленные окна и успехи на «ванильном» NIAH, эффект lost in the middle и общая перегрузка внимания при росте контекста до сих пор не преодолены. Расширение контекстного окна означает, что модель способна технически принять на вход сотни тысяч токенов, но это не гарантирует, что она сможет надёжно проанализировать этот объём и сделать сложные (и даже не слишком сложные) аналитические выводы по всей длине контекста.
Основные рекомендации по архитектурным решениям LLM‑приложений для эффективного учёта контекста
С учётом обсуждённых выше эффектов потери в середине, позиционного смещения, долгосрочного распада (lost in the middle, positional bias, long‑term decay) и общей сложности ассоциативного связывания в длинных контекстах, архитектурные решения LLM‑приложений имеет смысл планировать с опорой на следующие принципы:
Держите контекст минимальным и целевым. Включайте только те фрагменты, без которых модель точно не сможет ответить; каждый абзац «на всякий случай» забивает окно и выталкивает важное в ту самую «слепую» середину.
Разделяйте «долгую память» и «рабочую память». Историю диалога, факты и прошлые ответы храните во внешнем хранилище (БД, векторное хранилище), а в промпт поднимайте короткую аннотацию (summary) и несколько действительно релевантных кусочков, вместо того чтобы каждый раз тащить всё.
Используйте ретривер и ранжирование, а не «сырой слив» документов. Сначала отберите топ‑N кандидатов (BM25/векторный поиск), затем сузьте их до k самых полезных (re‑ranking отдельной моделью или самой LLM) — и только их подавайте в промпт.
Структурируйте промпт с учётом позиции. В начало ставьте цель и ключевые правила, в середину — сырой контекст (документы, выдержки), в конец — краткое резюме важных фактов и сам вопрос. Дублируйте критичные вещи ближе к хвосту, где внимание модели статистически сильнее.
Используйте шаблоны и сигнатуры вместо «простыни» правил. Задайте 2–3 режима работы и формат ответа (JSON‑схема, пара примеров), вместо десятков частных «если/то», которые раздувают промпт и мешают модели увидеть нужный текст.
Разбивайте задачу на несколько шагов вместо одного гигантского запроса. Пусть модель сначала уточнит, что ей нужно знать, затем вы подтянете в промпт нужные куски через ретривер, и только после этого она будет думать над коротким, хорошо сфокусированным контекстом.
Не дублируйте в промпте то, что модель и так знает. Общие знания (география, базовые определения, школьная математика) лучше оставить на совести LLM, а окно тратить на доменные, свежие и локальные факты.
Контролируйте рост системного промпта и проверяйте «короткую версию». Если инструкции превратились в целую повесть, это сигнал к рефакторингу: вынесите часть логики в код/конфиг и обязательно сравните качество на коротком и длинном варианте промпта. Короткий промпт на практике часто работает не хуже длинного, а с учётом контекста даже лучше.
Эти пункты — не жёсткий чек‑лист и не набор обязательных требований. Скорее это набор подходов, которые помогают исправлять и предотвращать проблемы, связанные с пониманием длинных и сложных контекстов. Не обязательно внедрять всё сразу: важнее осознанно понимать ограничения LLM и спроектировать взаимодействие с моделью так, чтобы использовать ровно те приёмы, которые действительно соответствуют задачам и устройству вашего продукта.
Если тема кажется вам интересной, я продолжаю разбирать подобные вещи у себя в Telegram короткими постами, экспериментами и примерами из практики: «надо разобраться | заставляем LLM работать».
Литература:
When Attention Sink Emerges in Language Models: An Empirical View
Retentive Network: A Successor to Transformer for Large Language Models
Mamba: Linear‑Time Sequence Modeling with Selective State Spaces
Hyena Hierarchy: Towards Larger Convolutional Language Models
RoFormer: Enhanced Transformer with Rotary Position Embedding
Found in the Middle: Calibrating Positional Attention Bias Improves Long Context Utilization
YaRN: Efficient Context Window Extension of Large Language Models
Understanding the RoPE Extensions of Long‑Context LLMs: An Attention Perspective
VRoPE: Rotary Position Embedding for Video Large Language Models
3D‑RPE: Enhancing Long‑Context Modeling Through 3D Rotary Position Encoding
RULER: What's the Real Context Size of Your Long‑Context Language Models?
iliaP
Благодарствую, очень позновательно!
Вопрос по поводу передачи "summary" - какими средствами этот саммари должен формулироваться, чтобы он был по существу ?