Nội dung bài viết
© 2025 AI VIET NAM. All rights reserved.
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
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à 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:
Đ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 chung được biểu diễn như sau:
CosineSimilarity(A, B) = (A · B) / (||A|| × ||B||)
Trong đó:
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.
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.
Cosine Similarity xuất hiện ở rất nhiều phần trong hành trình học AI:
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.
Khi triển khai các hệ thống như:
… 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ì:
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.
Bạn có thể bắt đầu bằng một bài toán nhỏ như:
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.