Cosine Similarity là gì? Giải thích dễ hiểu 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ì? Giải thích dễ hiểu cho người mới bắt đầu

Khi mới làm quen với NLP, Machine Learning hoặc bắt đầu tiếp xúc với các khái niệm đo độ giống nhau giữa hai vector, nhiều bạn thường gặp một vướng mắc chung:

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

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

Cosine Similarity là gì?

Cosine Similarity là một phương pháp đo mức độ giống nhau giữa hai vector dựa trên góc của chúng, thay vì độ dài.
Điểm cốt lõi:

  • Nếu hai vector có hướng gần giống nhau → Cosine Similarity cao.
  • Nếu hai vector lệch hướng → Cosine Similarity thấp.
  • Nếu hai vector đối hướng nhau → giá trị có thể gần -1.

Điều này giúp Cosine Similarity đặc biệt hữu ích trong các bài toán NLP nơi mỗi văn bản được biểu diễn thành vector (ví dụ: TF-IDF, Word2Vec, Sentence Embedding…).

Công thức Cosine Similarity (dưới dạng markdown, không phải code)

Công thức chung được biểu diễn như sau:

CosineSimilarity(A, B) = (A · B) / (||A|| × ||B||)

Trong đó:

  • A · B là tích vô hướng của hai vector.
  • ||A|| và ||B|| là độ dài của từng vector.
  • Giá trị nằm trong khoảng từ -1 đến 1.

Bản chất của công thức:
so sánh hướng của hai vector, không phụ thuộc vào độ lớn.

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

Giả sử bạn cần đo mức độ giống nhau giữa hai câu:

“Tôi thích học AI”

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

Sau khi được vector hóa (bằng TF-IDF, hoặc bằng Sentence Transformer), hai câu sẽ trở thành hai vector trong không gian nhiều chiều.

Cosine Similarity sẽ đo xem hai vector này cùng hướng tới mức nào.

Nếu dùng khoảng cách Euclid, văn bản dài hơn có thể bị xem là “xa” hơn chỉ vì nó có nhiều từ – điều này không phản ánh ý nghĩa.

Cosine Similarity giải quyết vấn đề này bằng cách chuẩn hóa độ dài, chỉ giữ lại thông tin về hướng.

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

Cosine Similarity xuất hiện ở rất nhiều phần trong hành trình học AI:

  • Khi học Python + NumPy, người học được làm quen với vector và tích vô hướng.
  • Trong ML cơ bản, Cosine Similarity xuất hiện ở các mô hình tìm kiếm văn bản, phân cụm hoặc đánh giá mức độ giống nhau của embedding.
  • Ở NLP (RNN, Transformer), hầu hết các câu đều được đưa về vector embedding, và Cosine Similarity trở thành cách tự nhiên để so sánh ý nghĩa.
  • Trong các ứng dụng GenAI và LLMs, việc so sánh embedding để làm RAG hoặc tìm kiếm ngữ nghĩa đều dùng Cosine Similarity.

Nó là một khái niệm gốc nhưng xuyên suốt trong rất nhiều module học thuật nền tảng.

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

Khi triển khai các hệ thống như:

  • Search Engine theo ngữ nghĩa
  • Recommendation System
  • Chatbot kết hợp RAG
  • Phân cụm văn bản

… bạn luôn phải chọn cách đo độ tương đồng giữa các vector. Cosine Similarity gần như là lựa chọn mặc định vì:

  • Không bị ảnh hưởng bởi độ dài văn bản.
  • Dễ mở rộng lên hàng triệu vector.
  • Tối ưu tốt khi kết hợp với ANN Search (FAISS, ScaNN…).

Trong nhiều pipeline MLOps cơ bản (logging, versioning, inference), việc kiểm tra chất lượng embedding cũng thường dùng Cosine Similarity.

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

Bạn có thể bắt đầu bằng một bài toán nhỏ như:

  • So sánh độ giống nhau giữa hai câu bất kỳ.
  • Tạo embedding bằng một mô hình đơn giản rồi dùng Cosine Similarity để xem các câu có ý nghĩa gần nhau hay không.
  • Thử với nhiều phương pháp vector hóa khác nhau để cảm nhận sự khác biệt.

Việc thực nghiệm nhỏ như vậy giúp bạn hiểu bản chất của Cosine Similarity nhanh hơn nhiều so với chỉ đọc lý thuyết.

Tài nguyên học AI: