Lesson 02 — Dot product + Cosine similarity
Bốn component tương tác để thấy dot product và cosine similarity hoạt động. Kéo các vector trên canvas để thấy số liệu cập nhật theo thời gian thực.
1. Dot product 2D — Đại số vs. Hình học
Kéo đầu mũi tên u và v để thay đổi vector. Hai cách tính u·v luôn cho cùng một số.
- u · v > 0 → góc nhọn, hai vector "đi chung hướng".
- u · v = 0 → vuông góc, "không liên quan".
- u · v < 0 → góc tù, "đi ngược hướng".
- Hai cách tính (đại số
Σuᵢvᵢvà hình học|u||v|cosθ) luôn cho cùng kết quả — đó là định lý.
2. Cosine similarity — Đo "cùng hướng" bỏ qua độ lớn
Cosine similarity chuẩn hóa dot product bằng cách chia cho |u|·|v|. Kết quả ∈ [-1, 1].
Để ý: khi bạn scale một vector (giữ hướng), cos_sim KHÔNG đổi, dù dot product thay đổi.
- cos_sim = 1: cùng hướng hoàn toàn.
- cos_sim ≈ 0: vuông góc, "không liên quan".
- cos_sim = -1: ngược hướng hoàn toàn.
- Khi
|u| = |v| = 1(đã normalize) → cos_sim = u·v trực tiếp.
3. Projection — Hình chiếu của u lên v
proj_v(u) = ((u·v)/|v|²)·v. Kéo u (xanh) và v (cam). Đường nét đứt là phần dư u − proj_v(u), luôn vuông góc với v.
- Vector proj_v(u) nằm trên đường thẳng chứa v.
- Đường nét đứt là
u − proj_v(u), vuông góc với v. - Khi u và v cùng phương, proj_v(u) = u (toàn bộ u trùng với bóng).
- Khi u ⊥ v, proj_v(u) = 0 (vector không có "thành phần" theo hướng v).
4. Embedding similarity heatmap — Mô phỏng word embedding 4D
6 "embedding" 4D giả lập đại diện cho 6 từ. Heatmap thể hiện cosine similarity từng cặp. Click vào ô bất kỳ để xem chi tiết phép tính (giá trị embedding + công thức).
Embedding (toy data)
Lưu ý: đây là embedding 4D giả lập (toy). Embedding thật từ OpenAI/SBERT có 384–3072 chiều, mỗi tọa độ không tương ứng "trục có nghĩa" nào — mô hình phân phối thông tin qua nhiều trục cùng lúc. Cosine similarity giữa embedding thật vẫn được tính theo CÙNG công thức bạn thấy ở đây, chỉ là vector cao chiều hơn.