Lesson 02 — Dot product + Cosine similarity

Bốn component tương tác để thấy dot productcosine 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 uv để thay đổi vector. Hai cách tính u·v luôn cho cùng một số.

Kéo đầu mũi tên xanh (u) hoặc cam (v). Hai vector luôn xuất phát từ gốc tọa độ.
  • 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 đứtu − 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).

-1 (ngược hướng)
+1 (cùng hướng)
Click một ô không phải đường chéo để xem chi tiết.

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.