← Lesson
Scores and Thresholds
Joeven
Run
Reset
Python loads on first run
import math def cosine(a, b): na = math.sqrt(sum(x * x for x in a)) or 1.0 nb = math.sqrt(sum(x * x for x in b)) or 1.0 return sum(x * y for x, y in zip(a, b)) / (na * nb) CHUNKS = { "oom": [1.0, 0.0, 0.0], "refund": [0.0, 1.0, 0.0], "menu": [0.0, 0.0, 1.0], } def retrieve(qvec, k=2, tau=0.5): ranked = [(name, cosine(qvec, vec)) for name, vec in CHUNKS.items()] ranked.sort(key=lambda x: x[1], reverse=True) kept = [(n, s) for n, s in ranked[:k] if s >= tau] return kept print("oom query", retrieve([0.95, 0.0, 0.05])) print("pizza query", retrieve([0.1, 0.1, 0.2], tau=0.5)) print("always-k ", retrieve([0.1, 0.1, 0.2], tau=0.0))
Run to execute this in your browser. Nothing is sent to a server.