Hvad er et context window?

Af Weapp · Opdateret

Et context window er alt hvad en sprogmodel kan se på én gang når den svarer: systeminstruktioner, hele samtalehistorikken og det materiale du har vedhæftet. Det fungerer som en arbejdshukommelse der tømmes mellem sessioner. Når vinduet bliver fuldt, falder de tidligste dele bort eller trunkeres, og modellen mister det den ikke længere ser.

Et context window, på dansk kontekstvindue, er alt hvad en sprogmodel kan se på én og samme gang når den formulerer et svar. Det rummer tre ting: de instruktioner der styrer modellen, hele samtalen indtil nu og det materiale du har fodret den med, f.eks. et indsat dokument. Uden for vinduet findes der intet modellen kan støtte sig til.

Det bedste billede er en arbejdshukommelse. Modellen har ingen varig hukommelse om tidligere samtaler. Hver session begynder med et tomt bord, og på det bord ligger kun det der er plads til lige nu. Det er en afgørende forskel fra hvordan vi selv husker ting, og det forklarer meget af hvordan AI-løsninger opfører sig i praksis.

Hvad der er plads til i vinduet

Størrelsen måles i tokens, altså tekststykker cirka på størrelse med en orddel. Alt konkurrerer om den samme plads: systeminstruktionen, hver tidligere replik i samtalen, det du spørger om nu og det svar modellen er i gang med at skrive. Jo mere historik der samler sig, desto mindre plads er der tilbage.

Det betyder at en lang samtale gradvist fylder vinduet. I starten er der god plads, men efter tilstrækkeligt mange replikker begynder det at blive trangt. Og når det bliver trangt, må noget vige.

Hvad der sker når vinduet bliver fuldt

Når mængden af tekst overstiger vinduets størrelse, falder de ældste dele bort eller trunkeres. Modellen glemmer ikke aktivt. Den ser bare ikke længere det der er skubbet ud. Forskellen betyder noget: Modellen opdager det ikke selv og signalerer sjældent at noget er faldet bort.

Et konkret eksempel. Du beder en model holde styr på tre krav til en app mens I ræsonnerer jer gennem detaljerne. Samtalen bliver lang. Ved det halvtredsindstyvende indlæg nævner du krav nummer et igen, men det første krav ligger ikke længere i vinduet, så modellen svarer som om det aldrig er blevet sagt. Der er ikke opstået nogen fejl; informationen er bare ude af syne. Det er derfor lange AI-samtaler nogle gange virker glemsomme: De har simpelthen mistet deres egen begyndelse.

Derfor gør store vinduer ikke RAG overflødigt

Når vinduerne vokser, er det fristende at tænke: Lad os bare proppe alle dokumenterne ind, så slipper vi for besvær. I praksis falder det på to punkter.

  • Prisen. Modellen tager betaling pr. token, og hele indholdet sendes med ved hvert spørgsmål. Et stort dokument der ligger i vinduet, betales igen og igen for hver ny replik i samtalen.
  • Præcisionen. Jo mere tekst modellen skal lede i, desto lettere mister den den rette detalje. Et relevant afsnit drukner i en stor masse, og svarene bliver mere vage snarere end skarpere.
TilgangPris pr. spørgsmål
Alt i kontekstvinduetHøj: hele materialet betales hver gang
RAG henter relevante afsnitLavere: kun det nødvendige sendes ind

Alternativet er RAG, hvor systemet henter netop de afsnit der er relevante for spørgsmålet og kun sender dem ind. Vinduet holdes lille og fokuseret, prisen nede og præcisionen oppe. Et stort context window er altså praktisk, men det erstatter ikke en gennemtænkt metode til at udvælge det rette materiale. At fylde et stort vindue med alt er lidt som at besvare et spørgsmål ved at læse hele biblioteket: Det kan lade sig gøre, men det er dyrt, og det er let at overse den rigtige side.

Afgrænsning over for hukommelse og træning

To begreber blandes ofte sammen med kontekstvinduet, og det er værd at holde dem adskilt.

Det ene er modellens træning. Det modellen “kan” i almindelighed, kommer fra træningen og sidder fast i modellen. Kontekstvinduet er noget andet: det midlertidige materiale den får til netop dette spørgsmål. Træningen er langtidshukommelsen, vinduet er arbejdshukommelsen i øjeblikket.

Det andet er en bygget hukommelse. Vil I have en tjeneste til at huske en bruger mellem samtalerne, er vinduet ikke nok fordi det tømmes. Så bygger man en separat funktion der gemmer relevant information og fodrer modellen med den igen ved næste samtale. Hukommelsen ligger altså uden for modellen, ikke i vinduet.

Hvad det betyder for dig som kunde

Kontekstvinduet er et af de begreber der forklarer hvorfor en AI-løsning kræver mere end bare en god model. Skal tjenesten huske noget over tid, håndtere store dokumenter eller holde driftsudgiften nede, er det arkitekturen omkring modellen der afgør det, ikke vinduets størrelse i sig selv.

En almindelig faldgrube er at tro at et større vindue løser alt. I praksis skubber det bare problemet foran sig: Prisen stiger, og en dag er selv det store vindue fuldt. Den holdbare løsning er næsten altid at udvælge det rette materiale i stedet for at sende alt med.

En tommelfingerregel: Regn med at modellen kun ved det der ligger i vinduet lige nu, og byg løsningen derefter. Vil du vide hvordan sådan et setup kan se ud til jeres behov, kan du kontakte os med en beskrivelse af hvad tjenesten skal kunne klare.

Ofte stillede spørgsmål

Måles et context window i ord eller tegn?

I tokens, som er tekststykker snarere end hele ord. Et token svarer groft sagt til et kort ord eller en orddel, og dansk tekst fylder oftest lidt flere tokens end engelsk. Når en leverandør angiver et vindue på et bestemt antal tokens, er det den samlede mængde instruktion, historik og svar der skal kunne være der.

Hvad sker der når kontekstvinduet bliver fuldt?

De ældste dele af samtalen falder bort eller trunkeres for at give plads til det nye. Modellen glemmer altså ikke aktivt, den ser bare ikke længere det der er skubbet ud af vinduet. Derfor kan en model midt i en lang samtale miste noget du nævnte tidligt uden at den selv opdager det.

Gør et stort context window RAG overflødigt?

Nej. At proppe alt ind i et stort vindue bliver dyrt fordi prisen følger antallet af tokens, og præcisionen falder når modellen skal lede efter svar i en stor tekstmasse. RAG henter i stedet kun de relevante afsnit ved hvert spørgsmål, og det bliver oftest både billigere og mere præcist.

Tømmes kontekstvinduet mellem forskellige samtaler?

Ja. Hver ny session begynder i praksis fra nul medmindre du bevidst fodrer modellen med tidligere information igen. Modellen har ikke af sig selv en hukommelse der lever videre mellem samtalerne. Vil du have den til at huske noget over tid, skal det bygges som en separat funktion, f.eks. en hukommelse eller en database.

Hvorfor bliver længere samtaler dyrere?

Fordi hele historikken sendes med igen ved hvert spørgsmål. Jo længere samtalen bliver, desto flere tokens behandler modellen hver gang, og prisen beregnes pr. token. En samtale der er vokset sig lang, kan derfor koste betydeligt mere pr. svar end de første replikker selvom selve spørgsmålet er kort.