Hoppa till innehållet
AI-grafen
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

Alla källor och licenser