D· AI-utvecklarerag-informationssokning· ca 45 min· utvecklande· verifierad 2026-09-20
Retrieval — hitta rätt text
Kunna bygga semantisk sökning med embeddings, kombinera med nyckelordssök (BM25) och utvärdera med recall@k.
Förkunskaper
Intuition
Retrieval = hitta de textbitar som bäst svarar på en fråga bland tusentals.
- Nyckelordssök (BM25): räknar ordöverlapp, viktat efter hur ovanliga orden är. Snabbt, exakt på namn och koder, blind för synonymer.
- Semantisk sök: frågan och varje textbit blir en embedding (vektor); närmast i vinkel (cosinuslikhet) vinner. Hittar «bil» när du frågar «fordon», missar ibland exakta termer.
- Hybrid: kör båda, slå ihop rankningarna (t.ex. RRF). Nästan alltid bäst.
Mät med recall@k: för varje testfråga med känt rätt avsnitt — fanns det bland de k första?
Kod
import numpy as np
def cos(a, b):
return float(a @ b / (np.linalg.norm(a) * np.linalg.norm(b)))
def semantisk_topk(q_emb, doc_embs, k=5):
s = [cos(q_emb, d) for d in doc_embs]
return list(np.argsort(s)[::-1][:k])
def rrf(rankningar, k=60):
poang = {}
for r in rankningar:
for pos, doc in enumerate(r):
poang[doc] = poang.get(doc, 0) + 1 / (k + pos + 1)
return sorted(poang, key=poang.get, reverse=True)
def recall_at_k(resultat, facit, k=10):
return np.mean([f in r[:k] for r, f in zip(resultat, facit)])
BM25 finns i rank_bm25; embeddings från en embedding-modell (t.ex. via API eller sentence-transformers). Chunka dokumenten i 200–500 tokens med överlapp innan du embeddar.
Behärskning innebär
- Bygger semantisk sökning med embeddings och cosinuslikhet
- Kombinerar med BM25 (hybrid)
- Mäter recall@k
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Wikipedia — Okapi BM25 (CC BY-SA 4.0) — CC BY-SA 4.0
- Cormack m.fl. — Reciprocal Rank Fusion (2009) — öppen PDF
Leder till
Del av målen (13)
- Bygg ett RAG-system som går att lita på
- Bygg ett minnessystem för en agent
- 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
- AI-tjänst i drift
- Reproducera ett paper
- Djup reinforcement learning