Zagubienie w środku
Wpływ położenia na mechanizm uwagi
Zagubienie w środku to bezpłatna lekcja AI Prompt Engineering na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Prompt Engineering, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.
Efekt zagubienia w środku
W modelach obsługujących długi kontekst trafność wyszukiwania zależy od pozycji i układa się w krzywą w kształcie litery U: fakty znajdujące się na początku i na końcu kontekstu są dobrze odtwarzane, natomiast fakty ze środka — najsłabiej. To właśnie efekt „zagubienia w środku”.
- Jest to właściwość mechanizmu uwagi i procesu uczenia, a nie przypadek.
- Utrzymuje się nawet wtedy, gdy odpowiedź jest jednoznacznie obecna w kontekście.
Pozycja nie jest neutralna — to czynnik niezawodności, który należy uwzględnić w projekcie.
Dlaczego środek sprawia problemy
W środkowej części nakłada się na siebie kilka czynników: tendencje pozycyjne faworyzują najnowsze i najwcześniejsze tokeny, dane treningowe nadmiernie reprezentują wzorce, w których odpowiedź znajduje się blisko początku lub końca, a sama liczba konkurujących ze sobą elementów rozpraszających w środku osłabia uwagę poświęcaną pojedynczemu faktowi.
Nie można usunąć tego uprzedzenia z modelu, ale można przestać z nim walczyć.
Umieszczaj kluczowe treści na krawędziach
Najważniejsze i najbardziej niezawodne działanie zaradcze polega na umieszczeniu tego, czego model musi użyć, na granicach kontekstu. Instrukcja zadania i dowody o najwyższej wartości powinny znajdować się blisko początku i końca, a nie być ukryte w środku.
- Na początku umieść zadanie i najważniejsze fakty.
- Powtórz główną instrukcję na samym końcu („przypomnienie zadania: ...”).
context = (
TASK_INSTRUCTION +
KEY_EVIDENCE +
bulk_supporting_material +
TASK_REMINDER # restate at the tail
)Umieszczanie według istotności
Jeśli kontrolują Państwo kolejność pobranych fragmentów, nie należy umieszczać ich od początku do końca według wyniku wyszukiwania. Należy je przeplatać tak, aby najbardziej istotne fragmenty znalazły się przy obu krawędziach, a najmniej istotne wypełniły środek — świadomie wykorzystując krzywą U.
Takie „obciążenie krawędzi” może odzyskać dużą część strat wynikających z umieszczenia treści w środkowej pozycji.
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))Ogranicz stóg siana
Najtańszym sposobem ograniczenia strat związanych ze środkiem jest zmniejszenie jego rozmiaru. Agresywne filtrowanie wstępne — odrzucanie nieistotnych fragmentów przed złożeniem promptu — zmniejsza środkową część, w której gubią się fakty, i koncentruje uwagę na tym, co ważne.
Skupiony prompt zawierający 15 tys. tokenów ma niemal pozbawiony ryzyka środek, natomiast prompt zawierający 600 tys. tokenów składa się w większości ze środka.
Wskazywanie struktury i indeksowanie
Należy dać modelowi mapę. Spis treści na początku oraz wyraźne kotwice sekcji pozwalają modelowi nawigować do odpowiednich obszarów zamiast polegać wyłącznie na odtwarzaniu zależnym od pozycji.
- Należy numerować sekcje i odwoływać się do nich w pytaniu.
- Należy dodawać jednoznaczne kotwice, takie jak SEKCJA 7: CENY, których model może wyszukać.
Struktura częściowo kompensuje mniejszą niezawodność zależną od pozycji.
# Top of prompt
# INDEX: [S1 Overview] [S2 Risks] [S3 Pricing] [S4 Appendix]
# Question: 'Using S3 only, what is the renewal fee?'Wymuś skanowanie przed odpowiedzią
W promptcie należy polecić modelowi, aby przed udzieleniem odpowiedzi wyliczył, gdzie znajduje się istotny materiał. Samo wcześniejsze zlokalizowanie dowodów przeciwdziała tendencji do pomijania środkowej części.
„Najpierw wymień każdą sekcję, w której wspomniano o opłacie za odnowienie, wraz z jej kotwicą, a następnie odpowiedz”. Jawne skanowanie ujawnia treści ze środka, które bezpośrednie pytanie mogłoby pominąć.
ask = (
'Step 1: list all anchors mentioning the topic. '
'Step 2: quote the relevant line from each. '
'Step 3: answer using only those quotes.'
)Ponów pytanie, zmieniając położenie treści
Jeśli kluczowy fakt trafi do martwej strefy i jego odtwarzanie jest niepewne, należy ponowić wywołanie, przenosząc ten fakt na krawędź. W zadaniach obejmujących wiele faktów można wykonać przebiegi, w których zmienia się fakty zajmujące silne pozycje, a następnie uzgodnić wyniki.
Rotacja pozycji to praktyczny sposób zwiększania odporności, gdy pojedynczy układ jest zawodny.
Dzielenie na fragmenty i scalanie
W zadaniach wymagających pełnego pokrycia („znajdź wszystkie naruszenia”) pojedynczy ogromny przebieg pominie elementy ze środka. Należy podzielić materiał na nakładające się okna wystarczająco małe, aby nie zawierały słabego środka, uruchomić każde z nich, a następnie połączyć i usunąć duplikaty wyników.
- Nakładanie się okien zapobiega pomijaniu elementów na granicach.
- Etap scalania uzgadnia duplikaty i sprzeczności.
Zadania wymagające pełnego pokrycia lepiej realizować za pomocą wielu małych przebiegów niż jednego ogromnego.
def coverage(doc, win, overlap):
out = []
for w in windows(doc, win, overlap):
out += extract(w)
return dedupe(out)Zmierz własną krzywą U
Nasilenie tego efektu różni się w zależności od modelu i kształtu promptu. Należy je scharakteryzować: umieścić znacznik kontrolny na kolejnych głębokościach i wykreślić skuteczność odtwarzania. Na podstawie krzywej należy określić bezpieczną długość kontekstu oraz zasady umieszczania treści przy krawędziach dla danego modelu.
Należy projektować rozwiązania na podstawie zmierzonych zachowań, a nie obiegowych opinii.
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.5Praktyczny poradnik odporności na pozycję
Aby przeciwdziałać efektowi zagubienia w środku, należy ograniczyć stóg siana, umieścić najbardziej istotne treści przy krawędziach, powtórzyć zadanie na końcu, dodać indeks i wymusić skanowanie polegające na zlokalizowaniu treści przed udzieleniem odpowiedzi, zmieniać pozycje przy ponawianiu pytania oraz stosować dzielenie na fragmenty i scalanie w celu uzyskania pełnego pokrycia. Przede wszystkim należy zmierzyć krzywą dla danego modelu i projektować rozwiązanie z uwzględnieniem jej przebiegu.
Szybki test
Dysponują Państwo jednym faktem, który musi zostać wykorzystany, oraz dużą ilością kontekstu pomocniczego, a ponadto zauważyli Państwo, że model czasami ignoruje ten fakt.
Podsumowanie: wpływ pozycji na uwagę
Odtwarzanie z długiego kontekstu ma kształt litery U: krawędzie są niezawodne, a środek — nie. Należy przeciwdziałać temu zjawisku, ograniczając stóg siana, umieszczając najbardziej istotne fragmenty przy krawędziach, powtarzając zadanie na końcu, dodając indeks i wymuszając skanowanie polegające na zlokalizowaniu treści przed udzieleniem odpowiedzi, zmieniając pozycje przy ponawianiu pytania oraz stosując dzielenie na fragmenty i scalanie w celu uzyskania pełnego pokrycia. Należy zmierzyć rzeczywistą krzywą danego modelu i projektować rozmieszczenie treści z jej uwzględnieniem, zamiast zakładać równomierną skuteczność odtwarzania.
Często zadawane pytania
Czy lekcja „Zagubienie w środku” jest bezpłatna?
Tak — pełny tekst „Zagubienie w środku” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Prompt Engineering, przejdź na CoddyKit PRO. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.
Co nauczysz się w „Zagubienie w środku”?
Wpływ położenia na mechanizm uwagi Ćwiczysz AI Prompt Engineering z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Prompt Engineering?
Nie wymagamy żadnego doświadczenia. AI Prompt Engineering w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Zagubienie w środku”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Prompt Engineering?
Tak. Każda lekcja AI Prompt Engineering zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Okna kontekstu o milionie tokenów
- Zagubienie w środku
- Strukturyzowanie ogromnych promptów
- Buforowanie długich prefiksów