Lesson 05 — Identity và định lý cosin

Mini-app tương tác đi kèm README. Gồm 4 phần: (1) Sum formula visualizer, (2) Law of cosines solver, (3) Cosine similarity 2D playground, (4) Embedding similarity heatmap.

1. Sum formula visualizer — sin(α+β) = sin α cos β + cos α sin β

Kéo 2 thanh trượt α và β. Verify công thức số học bằng số.

30°
45°
Thử: α=30°, β=45° → α+β=75°. Thử α=20°, β=70° → α+β=90° → sin = 1.

2. Law of cosines solver — tính cạnh thứ 3

Nhập 2 cạnh + góc xen giữa. App tính cạnh thứ 3 và vẽ tam giác.

(độ)
Thử: a=3, b=4, C=90° → c=5 (Pythagoras). C=60° → c≈3.61. C=120° → c≈6.08.

3. Cosine similarity 2D — kéo 2 vector, thấy ngay góc và similarity

Kéo đầu mũi tên (chấm đen) để thay đổi 2 vector. Tính u·v, |u|, |v|, cos θ, θ.

u (đỏ) và v (xanh) cùng gốc tại O. Đường nét đứt = vector u−v.
Hai vector cùng hướng → cos≈1. Vuông góc → cos=0. Ngược hướng → cos=−1.

4. Embedding similarity heatmap — ma trận cos sim giữa 4 vector "có tên"

4 vector preset giả lập 4 embedding. Tính ma trận cos sim 4×4 và vẽ heatmap.

Các vector preset là minh họa giả lập (4 chiều), KHÔNG phải embedding thực. Trong thực tế, word embedding 768+ chiều và có quan hệ king − man + woman ≈ queen.
Đỏ đậm = cos sim gần 1 (rất giống). Xanh = gần 0 (không liên quan). Tím = âm (ngược nghĩa). Thử preset "cluster" để thấy 2 nhóm tách biệt.
Cách dùng trong vector database thực tế

Trong RAG: embedding query bằng model (vd OpenAI text-embedding-3), đem so cos sim với hàng triệu embedding document đã lưu, lấy top-K cao nhất, đưa vào prompt LLM. Vector database (Pinecone, Qdrant, Weaviate...) tăng tốc bằng cấu trúc xấp xỉ (HNSW, IVF), thay vì so toàn bộ — đổi chính xác lấy tốc độ.