Потеря информации в середине
Влияние позиции на внимание
«Потеря информации в середине» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.
Эффект «затерянного в середине»
В моделях с длинным контекстом точность извлечения зависит от позиции и образует U-образную кривую: факты в начале и в конце контекста извлекаются хорошо, а факты в середине — хуже всего. Это и есть эффект «затерянного в середине».
- Это свойство механизма внимания и обучения, а не случайность.
- Эффект сохраняется даже тогда, когда ответ однозначно присутствует в контексте.
Позиция не нейтральна: это фактор надёжности, который необходимо учитывать при проектировании.
Почему середина страдает
В середине накладываются несколько факторов: позиционные смещения благоприятствуют самым ранним и недавним токенам, в обучающих данных слишком часто встречаются шаблоны «ответ в начале или в конце», а огромное количество конкурирующих отвлекающих фрагментов внутри контекста рассеивает внимание к каждому отдельному факту.
Вы не можете устранить это смещение из модели, но можете перестать с ним бороться.
Размещайте критически важное содержимое по краям
Первая и самая надёжная мера: помещайте то, что модель обязана использовать, на границы контекста. Инструкция к задаче и наиболее ценные свидетельства должны находиться ближе к началу и концу, а не быть погребены в центре.
- Начинайте с задачи и ключевых фактов.
- Повторяйте основную инструкцию в самом конце («напоминание о задаче: ...»).
context = (
TASK_INSTRUCTION +
KEY_EVIDENCE +
bulk_supporting_material +
TASK_REMINDER # restate at the tail
)Размещение по релевантности
Если вы управляете порядком найденных фрагментов, не размещайте их от начала к концу в порядке оценки поиска. Чередуйте их так, чтобы наиболее релевантные фрагменты находились у обоих краёв, а наименее релевантные заполняли середину, — намеренно используя U-образную кривую.
Такое размещение по краям может устранить значительную часть потерь, связанных с центральными позициями.
def edge_load(chunks):
# chunks sorted by relevance desc
head, tail = [], []
for i, c in enumerate(chunks):
(head if i % 2 == 0 else tail).append(c)
return head + list(reversed(tail))Уменьшайте объём лишнего материала
Самое дешёвое средство против потерь в середине — сделать середину меньше. Агрессивная предварительная фильтрация — удаление нерелевантных фрагментов до сборки — сокращает внутреннюю область, где факты теряются, и концентрирует внимание на важном.
В сфокусированном промпте на 15 тысяч токенов почти нет уязвимой середины, тогда как промпт на 600 тысяч токенов состоит преимущественно из неё.
Ориентиры и индексация
Дайте модели карту. Оглавление в начале и понятные якоря разделов позволяют модели переходить к релевантным областям, а не полагаться на извлечение по одной лишь позиции.
- Нумеруйте разделы и ссылайтесь на них в вопросе.
- Добавляйте явные якоря, например SECTION 7: PRICING, которые модель сможет найти.
Структура частично компенсирует ненадёжность позиционного извлечения.
# Top of prompt
# INDEX: [S1 Overview] [S2 Risks] [S3 Pricing] [S4 Appendix]
# Question: 'Using S3 only, what is the renewal fee?'Сначала заставляйте модель просмотреть контекст
Предложите модели перечислить, где встречается релевантный материал, прежде чем отвечать. Сначала обнаружив свидетельства, модель меньше склонна пропускать середину.
«Сначала перечислите каждый раздел, в котором упоминается плата за продление, вместе с его якорем, затем ответьте». Явное сканирование выявляет содержимое в середине, которое прямой вопрос мог бы пропустить.
ask = (
'Step 1: list all anchors mentioning the topic. '
'Step 2: quote the relevant line from each. '
'Step 3: answer using only those quotes.'
)Повторяйте запрос с изменением позиции
Если критически важный факт попал в мёртвую зону и его извлечение ненадёжно, повторите вызов, переместив этот факт к краю. Для задач с несколькими фактами можно выполнять проходы, поочерёдно размещая разные факты на сильных позициях, а затем сопоставлять результаты.
Ротация позиций — практический приём повышения надёжности, когда одна схема размещения ненадёжна.
Разбивайте и объединяйте для полного охвата
В исчерпывающих задачах («найдите все нарушения») один огромный проход пропустит элементы в середине. Разделите материал на перекрывающиеся окна, достаточно маленькие, чтобы в них почти не было ненадёжной середины, выполните каждый проход, а затем объедините и удалите дубликаты в результатах.
- Перекрытие предотвращает пропуски на границах.
- Этап объединения согласует дубликаты и противоречия.
Задачи на полный охват лучше решать множеством небольших проходов, а не одним огромным.
def coverage(doc, win, overlap):
out = []
for w in windows(doc, win, overlap):
out += extract(w)
return dedupe(out)Измеряйте собственную U-образную кривую
Выраженность эффекта зависит от модели и формы промпта. Охарактеризуйте его: размещайте проверочный маркер на разных глубинах и строьте график извлечения. Используйте эту кривую, чтобы определить безопасную длину контекста и политику размещения по краям для данной модели.
Проектируйте систему с учётом измеренного поведения, а не общепринятых представлений.
depths = [0.0, 0.25, 0.5, 0.75, 1.0]
recall = {d: probe_canary_at(d) for d in depths}
# Expect a dip around 0.5Практическое руководство по позиционной надёжности
Чтобы преодолеть эффект «затерянного в середине», уменьшайте объём лишнего материала, размещайте наиболее релевантное содержимое по краям, повторяйте задачу в конце, добавляйте индекс и заставляйте модель сначала найти нужное, а затем ответить, меняйте позиции при повторном запросе и используйте разбиение с последующим объединением для полного охвата. Прежде всего измерьте кривую для своей модели и проектируйте систему с её учётом.
Быстрая проверка
У вас есть один факт, который необходимо использовать, и большой объём вспомогательного контекста, но вы заметили, что модель иногда игнорирует этот факт.
Итоги: влияние позиционного внимания
Извлечение из длинного контекста имеет U-образную форму: края надёжны, а середина — нет. Противодействуйте этому, уменьшая объём лишнего материала, размещая наиболее релевантные фрагменты по краям, повторяя задачу в конце, добавляя индекс и заставляя модель сначала найти нужное, а затем ответить, меняя позиции при повторном запросе и используя разбиение с последующим объединением для полного охвата. Измерьте фактическую кривую своей модели и проектируйте размещение с её учётом, вместо того чтобы доверять равномерному извлечению.
Часто задаваемые вопросы
Урок «Потеря информации в середине» бесплатный?
Да — полный текст урока «Потеря информации в середине» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.
Чему я научусь в уроке «Потеря информации в середине»?
Влияние позиции на внимание Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Prompt Engineering?
Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Потеря информации в середине»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Prompt Engineering?
Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Контекстные окна на миллион токенов
- Потеря информации в середине
- Структурирование огромных подсказок
- Кэширование длинных префиксов