Cosine Similarity là gì? Giải thích cho người mới bắt đầu

Tác giả: AI VIET NAM (AI VIET NAM)

Keywords: cosine similarity, độ giống nhau vector, NLP cơ bản, đo tương đồng văn bản

Cosine Similarity là gì?

Khi mới học NLP hoặc Machine Learning, rất nhiều bạn gặp chung một câu hỏi:

“Cosine Similarity tính như thế nào và tại sao lại dùng nó thay vì khoảng cách Euclid?”

Sự mơ hồ thường đến từ việc tài liệu đưa công thức nhưng không giải thích bản chất. Bài viết này giúp bạn hiểu Cosine Similarity từ gốc, nhìn theo trực giác thay vì công thức nặng nề, và đặt nó đúng bối cảnh trong AI.

Cosine Similarity đo mức độ giống nhau giữa hai vector dựa trên góc giữa chúng, không phải độ dài.

Điểm cốt lõi:

  • Hướng gần giống → Cosine Similarity cao
  • Hướng lệch nhiều → Cosine Similarity thấp
  • Hướng đối nhau → giá trị gần -1

Chính vì chỉ quan tâm đến hướng, Cosine Similarity đặc biệt hữu ích trong NLP, nơi văn bản thường được biểu diễn bằng vector (TF-IDF, Word2Vec, Sentence Embedding…).

Công thức Cosine Similarity

Công thức chuẩn để tính cosine similarity là:

CosineSimilarity(A,B)=ABA×B\text{CosineSimilarity}(A, B) = \frac{A \cdot B}{\|A\| \times \|B\|}

Trong đó:

  • ABA \cdot B là tích vô hướng
  • A\|A\|B\|B\| là độ dài của hai vector
  • Giá trị nằm trong đoạn [1,1][-1, 1]

Bản chất: Chuẩn hóa độ dài → chỉ so sánh hướng của hai vector.

Ví dụ thực tế giúp bạn hình dung

Hai câu sau:

  • “Tôi thích học AI”
  • “Tôi thích nghiên cứu Machine Learning”

Sau khi vector hóa, ta thu được hai vector.

Cosine Similarity đo xem hai vector cùng hướng đến mức nào.

Nếu dùng khoảng cách Euclid, văn bản dài có thể bị xem là “xa” hơn chỉ vì nhiều từ — điều không phản ánh ý nghĩa.
Cosine Similarity giải quyết bằng cách loại bỏ ảnh hưởng độ dài.

Liên hệ với kiến thức nền tảng AI

Cosine Similarity xuất hiện xuyên suốt trong hành trình học AI:

  • Python + NumPy → tích vô hướng, vector
  • ML cơ bản → tìm kiếm văn bản, phân cụm
  • NLP → so sánh embedding
  • GenAI + LLMs → RAG, semantic search

Một khái niệm “nhỏ nhưng quyền lực”.

Nhìn dưới góc độ làm dự án

Trong hệ thống như:

  • Semantic Search
  • Recommendation System
  • Chatbot dùng RAG
  • Phân cụm văn bản

Cosine Similarity gần như là lựa chọn mặc định nhờ:

  • Không phụ thuộc độ dài văn bản
  • Ổn định khi số chiều lớn
  • Tối ưu tốt khi dùng ANN Search (FAISS, ScaNN…)

Trong MLOps, đánh giá chất lượng embedding cũng dùng cosine similarity để kiểm tra độ nhất quán.

Lời khuyên dành cho người mới

Hãy thực nghiệm thay vì chỉ đọc lý thuyết:

  • Lấy vài câu, vector hoá
  • Tính cosine similarity
  • Xem câu nào “gần nghĩa”

Một thử nghiệm nhỏ giúp hiểu ý nghĩa công thức nhanh hơn một chương sách.

Hỏi đáp nhanh về chủ đề

Cosine Similarity có bị ảnh hưởng bởi độ dài văn bản không?
Không — vì đã chuẩn hóa.

Giá trị càng gần 1 nghĩa là gì?
Hai vector càng giống nhau về hướng.

Cosine Similarity có phải là khoảng cách không?
Không — nó đo tương đồng; có thể tạo khoảng cách bằng 1cosine1 - \text{cosine}.

RAG có dùng Cosine Similarity không?
Có — đây là cách phổ biến nhất để so sánh embedding.

FAQ về chương trình AIO

Q1. Con số 0 thì học nổi không?
Ans: Chỉ cần bạn có thời gian học. Điều quan trọng nhất không phải giỏi hay không, mà là có học đều mỗi ngày. Kiến thức – tài liệu – môi trường đã có team lo. Nếu bạn không có thời gian thì nên cân nhắc.

Q2. Ai dạy AIO?
Ans: Đội admin dạy toàn bộ. Admin trực tiếp hướng dẫn và hỗ trợ mọi câu hỏi của bạn trong suốt quá trình học.

Q3. Admin có “xịn” không?
Ans: Admin đều là người làm nghề thật, mỗi người một cách dạy. Quan trọng là bạn cảm thấy hợp cách truyền đạt. Admin không dám nói xịn, chỉ dạy bằng hết sức.

Q4. AIO có gì khác những nơi khác?
Ans: AIO không phải trung tâm. Đây là dự án học tập cộng đồng, được cải tiến qua từng khóa. Tinh thần của AIO: Cùng nhau học – cùng nhau khổ – cùng nhau lớn. Nếu hợp tinh thần đó, bạn sẽ thấy phù hợp.

Tài nguyên học AI: