E· Universitetrag-informationssokning· ca 60 min· volatil — kontrolleras ofta· verifierad 2026-09-20
RAG — retrieval-augmented generation
Kunna bygga ett RAG-system med chunkning, retrieval, kontextfönster och källhänvisning, och mäta svarskvalitet.
Förkunskaper
Intuition
RAG = hämta relevanta textbitar först, låt modellen svara med dem i prompten. Modellen behöver inte «kunna» era dokument — den läser dem varje gång. Fördelar: uppdaterbart (byt dokument, inte modell), spårbart (svaret kan peka på källan), billigare än finjustering.
Kedjan:
- Chunka dokument i 200–500 tokens med överlapp, behåll metadata (titel, rubrik, URL).
- Indexera: embeddings + BM25.
- Hämta topp-k (5–10) för frågan, gärna hybrid + omrankning.
- Prompta: «Svara bara utifrån kontexten. Ange källa [1], [2]. Om svaret saknas: säg det.»
- Mät i två lager: fanns rätt chunk bland topp-k? (retrieval) och var svaret korrekt och grundat? (generering).
De flesta RAG-fel är retrieval-fel. Fixa dem först.
Kod
def chunka(text, storlek=400, overlapp=80):
ord = text.split(); ut = []
for i in range(0, len(ord), storlek - overlapp):
ut.append(" ".join(ord[i:i + storlek]))
return ut
def bygg_prompt(fraga, traffar):
ctx = "\n\n".join(f"[{i+1}] ({t['kalla']}) {t['text']}" for i, t in enumerate(traffar))
return ("Svara på frågan ENBART utifrån kontexten nedan. Hänvisa till källor som [n]. "
"Om kontexten inte räcker, svara: 'Det framgår inte av underlaget.'\n\n"
f"Kontext:\n{ctx}\n\nFråga: {fraga}\nSvar:")
def rag(fraga, index, llm, k=6):
traffar = index.hybrid_search(fraga, k=k) # BM25 + embeddings, RRF
svar = llm(bygg_prompt(fraga, traffar))
return {"svar": svar, "kallor": [t["kalla"] for t in traffar]}
# eval i två lager
retrieval_recall = mean(facit_chunk in [t["id"] for t in index.hybrid_search(q, 6)] for q, facit_chunk in testfall)
grundat = mean(domare(svar, kontext) for ...) # LLM-som-domare: stöds varje påstående av kontexten?
Behärskning innebär
- Bygger en RAG-kedja: chunkning → retrieval → prompt med kontext och källhänvisning
- Mäter retrieval (recall@k) och svarskvalitet separat
- Identifierar de vanligaste felen: fel chunk, för mycket kontext, hallucinerad källa
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks — arXiv (öppen åtkomst; licens per artikel)
- arXiv — RAGAS: Automated Evaluation of RAG — arXiv (öppen åtkomst; licens per artikel)
Leder till
Del av målen (13)
- Bygg ett RAG-system som går att lita på
- Bygg en AI-tjänst som håller i drift
- Multimodala system
- AI i produktion
- AI-säkerhet i praktiken
- Bygg en agent som går att lita på
- Finjustera och driva egna modeller
- Frontier Lab — självständigt forskningsprojekt
- Evals i praktiken
- Bygg ett minnessystem för en agent
- AI-tjänst i drift
- Reproducera ett paper
- Djup reinforcement learning