E· Universitetrag-informationssokning· ca 60 min· utvecklande· verifierad 2026-09-20
Chunkning av dokument
Kunna välja chunkstorlek och överlapp och mäta effekten på retrieval.
Förkunskaper
Intuition
Dokument måste delas i bitar innan de embeddas. Chunkningen avgör mer av RAG-kvaliteten än valet av embeddingmodell.
Avvägningen:
| För små chunkar (< 100 tokens) | För stora (> 1 000 tokens) |
|---|---|
| saknar sammanhang | embeddingen blir en medelvärdessoppa |
| många träffar behövs | irrelevant text tar plats i kontexten |
| hög precision per träff | svårt att veta vad som gav träffen |
Standardval: 200–500 tokens med 10–20 % överlapp. Men det bästa är att dela efter struktur — rubrik, stycke, avsnitt — i stället för blint efter längd. En chunk som är ett helt avsnitt är nästan alltid bättre än en som är 400 tokens och slutar mitt i en mening.
Kod
import re
def chunka_efter_rubrik(md, max_ord=400, overlapp=60):
"""Dela på rubriker; långa avsnitt delas vidare med överlapp. Behåller rubrikkedjan som metadata."""
delar, rubrik = [], ""
for block in re.split(r"\n(?=#{1,3} )", md):
m = re.match(r"(#{1,3}) (.+)", block)
if m:
rubrik = m.group(2).strip()
ord_ = block.split()
if len(ord_) <= max_ord:
delar.append({"rubrik": rubrik, "text": block.strip()})
else:
steg = max_ord - overlapp
for i in range(0, len(ord_), steg):
delar.append({"rubrik": rubrik, "text": " ".join(ord_[i:i + max_ord])})
return [d for d in delar if d["text"]]
# Lägg rubriken i texten som embeddas — den bär mycket sammanhang
for d in chunka_efter_rubrik(dokument):
d["embed_text"] = f"{d['rubrik']}\n\n{d['text']}"
Tre saker som ofta glöms:
- Metadata följer med: källa, URL, rubrik, datum, licens — annars kan svaret inte hänvisa.
- Tabeller och kodblock ska inte klyvas mitt itu.
- Mät: kör ditt retrieval-testset med tre chunkstrategier och jämför recall@10. Det tar en timme och är den mest lönsamma timmen i ett RAG-projekt.
Behärskning innebär
- Väljer chunkstorlek och överlapp med motivering
- Bevarar metadata och struktur
- Mäter effekten på retrieval
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)
- Qdrant — dokumentation (Apache-2.0) — Apache-2.0