← Lesson
Dot Product and Cosine Similarity
Joeven
Run
Reset
Python loads on first run
def dot(u, v): if len(u) != len(v): raise ValueError("dimension mismatch") return sum(a * b for a, b in zip(u, v)) def mag(v): return sum(x * x for x in v) ** 0.5 def cosine(u, v): return dot(u, v) / (mag(u) * mag(v)) memories = [ ("user likes terse answers", [0.9, 0.1, 0.0]), ("refunds take 5-7 days", [0.1, 0.9, 0.1]), ("pager duty on-call is Mei", [0.0, 0.2, 0.9]), ] query = [0.2, 0.85, 0.05] ranked = sorted(memories, key=lambda item: cosine(query, item[1]), reverse=True) for text, vec in ranked: print(round(cosine(query, vec), 3), text)
Run to execute this in your browser. Nothing is sent to a server.