Hoppa till innehållet
AI-grafen
F· AI engineeringsprakmodeller· ca 90 min· volatil — kontrolleras ofta· verifierad 2026-09-20

Lång kontext kontra retrieval

Kunna avgöra när lång kontext respektive retrieval är rätt verktyg.

Förkunskaper

Intuition

Modeller med 128 k–1 M tokens kontext väcker frågan: behövs RAG längre? Svaret är «ja, oftast» — av fyra skäl.

Lång kontextRetrieval
Kostnadbetalar för allt, varje anropbetalar för de 5 k relevanta
Latensprefill växer kvadratisktnästan konstant
Kvalitetsjunker i mitten av långa kontexterfokuserad kontext
Uppdateringmåste skickas om varje gångbyt dokument i indexet
Spårbarhetsvårt att veta vad som användeskällhänvisning per passage

Lost in the middle (Liu m.fl. 2023): modeller hittar information tillförlitligt i början och slutet av kontexten men klart sämre i mitten. Att ha 200 000 tokens tillgängliga betyder inte att modellen använder dem jämnt.

Formellt

Kostnadsjämförelse för 1 000 frågor mot ett 500 k-tokens dokumentmaterial:

AnsatsTokens in per frågaTotaltRelativt
Allt i kontexten (om det rymdes)500 000500 M100×
Lång kontext med urval, 50 k50 00050 M10×
RAG, topp-8 chunkar à 400~5 0005 M1×

Med prompt-caching krymper skillnaden om samma långa kontext återanvänds, men inte när materialet varierar per fråga.

När lång kontext ändå vinner:

  • Uppgiften kräver hela dokumentet (sammanfatta en rapport, hitta motsägelser mellan avsnitt).
  • Materialet är litet nog (< 20 k tokens) att retrieval bara tillför komplexitet.
  • Frågorna är aggregerande («hur många gånger nämns X?») där retrieval systematiskt missar.

Den vanligaste rätta lösningen är hybrid: retrieval väljer ut 20–50 k relevanta tokens ur ett stort material, och den långa kontexten låter modellen resonera över dem tillsammans. Man behöver inte välja.

Kod

def kostnad_per_fraga(ansats, dokument_tokens, k_chunkar=8, chunk=400, kontext_tak=128_000):
    if ansats == "allt":
        if dokument_tokens > kontext_tak:
            return None                      # ryms inte
        return dokument_tokens
    if ansats == "rag":
        return k_chunkar * chunk + 500       # + systemprompt och fråga
    if ansats == "hybrid":
        return min(50_000, dokument_tokens)  # retrieval väljer ut ett stort men fokuserat urval

for dok in (20_000, 200_000, 2_000_000):
    rad = {a: kostnad_per_fraga(a, dok) for a in ("allt", "rag", "hybrid")}
    print(f"{dok:>9,} tokens: {rad}")
#    20,000 tokens: {'allt': 20000,  'rag': 3700, 'hybrid': 20000}
#   200,000 tokens: {'allt': None,   'rag': 3700, 'hybrid': 50000}
# 2,000,000 tokens: {'allt': None,   'rag': 3700, 'hybrid': 50000}

# Mät lost-in-the-middle på din egen modell: placera samma faktum på
# position 10 %, 50 % och 90 % i en lång kontext och mät återkallandet.

Behärskning innebär

  • Jämför lång kontext och retrieval på kostnad och kvalitet
  • Känner till lost-in-the-middle
  • Väljer och kombinerar rätt för uppgiften

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser