Hoppa till innehållet
AI-grafen
DAI-utvecklareLaboration· ca 45 min· sandlåda på servern

Labb: semantisk sökning med embeddings

Bygga en liten sökmotor: normalisera embeddingar, beräkna cosinuslikhet mot alla dokument med en matrisprodukt, ta topp-k, och mäta recall.

Teori

Normalisera alla vektorer till längd 1 — då är cosinuslikhet bara en matrisprodukt Q·Dᵀ. Topp-k = de k största per rad.

Deluppgifter

  1. normalize — normalize(M) delar varje rad med sin norm.
  2. topk — topk(q, D, k) returnerar index till de k mest lika dokumenten (fallande).
  3. recall_at_k — recall_at_k(Q, D, truth, k) — andel frågor där rätt dokument finns bland topp-k.

Godkänt när: recall >= 0.9

Startkoden

körs i en isolerad sandlåda på servern
import numpy as np


def normalize(M):
    # TODO: M / norm per rad (undvik division med noll)
    ...


def topk(q, D, k=3):
    # TODO: likheter = normalize(D) @ normalize(q); index till k största, fallande
    ...


def recall_at_k(Q, D, truth, k=3):
    # TODO: andel i där truth[i] finns i topk(Q[i], D, k)
    ...

Du skriver koden, tester du inte ser avgör om den håller. Skapa ett gratis konto för att köra labben.

Prova diagnosenSkapa konto gratis

Förväntade resultat

recall@3 ≥ 0,9 på det syntetiska datasetet (frågor = dokument + brus).

Vanliga fel

  • Normaliserar kolumner i stället för rader.
  • argsort stigande — vänd ordningen.
  • Division med noll för nollvektor.