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 độ.