AI Engineering Academy · Lektion

Det problem, RAG løser

Undersøg virkelige fejleksempler, hvor LLM'er hallucinerer forældede eller forkerte oplysninger, og forstå, hvordan forankring af svar i hentede dokumenter løser disse problemer.

Lektion 1 af 413 trin

Det problem, RAG løser er en gratis AI Engineering Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i AI Engineering Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AI Engineering Academy-kurset indeholder 4 lektioner i alt.

LLM'er har en vidensgrænse

Alle store sprogmodeller trænes på et øjebliksbillede af internettet frem til en bestemt dato, der kaldes modellens vidensgrænse. GPT-4o har en vidensgrænse i begyndelsen af 2024. Hvis du spørger modellen om begivenheder, der fandt sted efter denne dato, vil den enten indrømme, at den ikke ved det, eller endnu værre selvsikkert opfinde oplysninger, der lyder sandsynlige, men er forkerte. For applikationer, der har brug for aktuel eller proprietær viden, er dette et grundlæggende problem.

Problemet med hallucinationer

Hallucination opstår, når en LLM genererer tekst, der lyder autoritativ, men er faktuelt forkert. Modeller trænes til at producere flydende og sammenhængende tekst — de trænes ikke udtrykkeligt til at afvise en forespørgsel, når de ikke ved noget. Derfor udfylder de huller i deres viden med sandsynlige gæt. Undersøgelser viser, at selv de bedste modeller hallucinerer i 10-40 % af tilfældene på videnstunge opgaver uden ekstern forankring.

Et konkret eksempel på en hallucination

Forestil dig, at du spørger en LLM: Hvad er vilkårene i vores virksomheds leverandørkontrakt for tredje kvartal 2025? Modellen har aldrig set dit interne dokument. I stedet for at sige, at den ikke ved det, kan den generere et sandsynligt kontraktresumé ved hjælp af generisk juridisk sprog. Hvis en medarbejder handler på baggrund af de opdigtede oplysninger, kan konsekvenserne være alvorlige. Dette er netop den fejltilstand, RAG blev udviklet til at forhindre.

# Without RAG — LLM guesses from parametric memory
response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {'role': 'user',
         'content': 'What are our Q3 2025 vendor contract terms?'}
    ]
)
# Model has no access to your documents — may hallucinate
print(response.choices[0].message.content)

Forankring løser hallucinationer

Indsigten bag RAG er enkel: Hvis du giver modellen de relevante oplysninger inde i prompten, behøver den ikke at stole på indlært viden. Modellen skifter fra at generere ud fra hukommelsen til at læse fra konteksten. Det er også sådan, mennesker arbejder — når du har brug for præcise detaljer, slår du dem op i stedet for at stole på din hukommelse. RAG omsætter den samme arbejdsgang til praksis for LLM'er.

# With RAG — answer grounded in retrieved documents
context = retrieve_relevant_chunks(query='Q3 2025 vendor contract terms')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {'role': 'system', 'content': 'Answer using only the provided context.'},
        {'role': 'user', 'content': f'Context: {context}\n\nQuestion: What are our Q3 2025 vendor contract terms?'}
    ]
)

Statisk finjustering hjælper ikke her

En almindelig misforståelse er, at finjustering af modellen på dine dokumenter løser hallucinationer. Finjustering opdaterer modellens vægte for at forbedre dens stil, format og evne til at følge opgaver, men den tilfører ikke pålideligt faktuel viden. Undersøgelser viser, at finjusterede modeller stadig hallucinerer på selve træningsdataene. For at viden kan genkaldes pålideligt, skal den leveres på inferenstidspunktet via kontekstvinduet.

RAG muliggør viden i realtid

Fordi RAG henter oplysninger fra et levende dokumentlager, håndterer det naturligt viden, der ændrer sig over tid. Når dit politikdokument opdateres, indekserer du det igen, og alle efterfølgende forespørgsler bruger straks den nye version — uden at modellen skal trænes igen. Det gør RAG langt mere praktisk end periodisk finjustering til anvendelser som interne vidensbaser, kundeservicesystemer og værktøjer til finansiel research.

RAG fungerer med private proprietære data

De fleste virksomhedsdata kan ikke sendes til OpenAI til træning på grund af krav til privatliv og compliance. RAG omgår dette: Dine følsomme dokumenter bliver i din egen vektordatabase, og kun de relevante tekstudsnit sendes til LLM'en pr. forespørgsel. Du kan endda køre en lokal LLM som Llama 3, så alle data forbliver lokalt i virksomheden. RAG er det primære mønster til at bygge AI på fortroligt virksomhedsindhold.

RAG muliggør kildeangivelse

Når en LLM genererer ud fra sin hukommelse, er der ingen kilde at henvise til. Når den genererer ud fra hentede dokumenter, kan den angive de præcise kilder. Du kan instruere modellen i at medtage dokumentnavne og sidetal i svaret, så brugerne kan klikke videre og kontrollere originalen. Kildeangivelse øger tilliden til AI-genererede svar markant, hvilket er afgørende i juridiske, medicinske og finansielle anvendelser.

system_prompt = '''You are a helpful assistant.
Answer questions using ONLY the provided context.
At the end of your answer, list the sources you used
in this format: [Source: document_name, page X]
If the context does not contain the answer, say:
"I don't have that information in the provided documents."'''

Hent-derefter-generér-mønsteret

RAG følger et mønster i to trin på inferenstidspunktet: Hent — konvertér brugerens spørgsmål til en embedding, søg i vektorlageret efter de mest relevante dokumentudsnit, og indsaml de bedste K-resultater. Generér — opbyg en prompt, der indeholder de hentede tekstudsnit som kontekst, og bed LLM'en besvare spørgsmålet udelukkende ud fra denne kontekst. LLM'en læser, sammenfatter og svarer.

def answer_with_rag(user_question, vector_store, llm_client):
    # Step 1: Retrieve
    query_embedding = embed(user_question)
    chunks = vector_store.search(query_embedding, top_k=5)
    context = '\n\n'.join([c['text'] for c in chunks])

    # Step 2: Generate
    response = llm_client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': f'Answer using only:\n{context}'},
            {'role': 'user', 'content': user_question}
        ]
    )
    return response.choices[0].message.content

Hvad RAG ikke løser

RAG er effektivt, men det er ikke en mirakelkur. Det fejler stadig, når svaret kræver syntese på tværs af hundredvis af dokumenter (hentningen returnerer kun nogle få tekstudsnit), når spørgsmålet i sig selv er multi-hop, og modellen skal ræsonnere gennem mellemliggende trin, eller når de hentede tekstudsnit er misvisende eller selvmodsigende. Når du forstår disse begrænsninger, kan du designe hybride systemer, der kombinerer RAG med ræsonnerende agenter.

RAG sammenlignet med alternativerne

Du har tre primære muligheder for at give en LLM domæneviden: prompt stuffing (læg alt i prompten — fungerer kun for meget små tekstsamlinger), finjustering (træner stil og format godt, men er ikke pålidelig til faktuel genkaldelse) og RAG (henter dynamisk relevante fakta på inferenstidspunktet og kan skaleres til millioner af dokumenter). Til de fleste produktionsanvendelser, der kræver aktuel, privat eller omfattende viden, er RAG det rigtige valg.

Hurtig kontrol

Test din forståelse af AI-tekniske begreber fra denne lektion.

Opsummering af lektionen

I denne lektion har du lært: hvorfor LLM'er hallucinerer på grund af vidensgrænser og manglende evne til at sige "Jeg ved det ikke", hvorfor finjustering ikke løser hallucinationer ved faktuel genkaldelse, og hvordan RAG forankrer svar i hentede dokumenter og dermed muliggør kildeangivelse, viden i realtid og sikker brug af private data. Dernæst udforsker vi den fulde RAG-arkitektur, herunder dens indekserings- og hentningsfaser.

Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Det problem, RAG løser” gratis?

Ja — hele teksten til “Det problem, RAG løser” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af AI Engineering Academy-kurset, skal du opgradere til CoddyKit PRO. AI Engineering Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Det problem, RAG løser”?

Undersøg virkelige fejleksempler, hvor LLM'er hallucinerer forældede eller forkerte oplysninger, og forstå, hvordan forankring af svar i hentede dokumenter løser disse problemer. Du øver dig i AI Engineering Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på AI Engineering Academy?

Der kræves ingen tidligere erfaring. AI Engineering Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Det problem, RAG løser”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne AI Engineering Academy-lektion?

Ja. Alle AI Engineering Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Det problem, RAG løser
  2. RAG-arkitekturen: Indeksering og hentning
  3. Udformning af den udvidede prompt
  4. RAG kontra finjustering: Hvornår skal De vælge hvad?
← Tilbage til AI Engineering Academy