Cómo funciona
La similitud del coseno calcula el coseno del ángulo entre dos vectores. El resultado varía de -1 a 1. Un valor de 1 significa vectores idénticos en dirección. Un valor de 0 significa ortogonales, sin relación. Un valor de -1 significa direcciones opuestas.
En la práctica, los textos se convierten en vectores (embeddings) y la similitud mide qué tan cercanos están dos textos en significado, no en palabras exactas. A diferencia de la distancia euclidiana, la similitud del coseno ignora la magnitud de los vectores y se enfoca solo en la dirección, lo que la hace robusta ante textos de tamaños diferentes.
La fórmula: cos(θ) = (A·B)/(|A||B|), donde A·B es el producto escalar y |A|, |B| las normas. Antes del cálculo, los vectores suelen normalizarse para tener norma unitaria, simplificando la fórmula al producto escalar.
Ejemplo práctico
Dos frases: "gato no telhado" y "felino sobre la casa". Después del embedding, los vectores pueden tener una similitud de 0,85, lo que indica un alto significado compartido, aunque con palabras diferentes. En cambio, "gato no telhado" y "carro en el garaje" pueden tener una similitud de 0,12, lo que indica una baja relación semántica.
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
a = np.array([[1, 2, 3]])
b = np.array([[2, 4, 6]])
print(cosine_similarity(a, b)) # [[1.0]]
c = np.array([[1, 0, 0]])
d = np.array([[0, 1, 0]])
print(cosine_similarity(c, d)) # [[0.0]]Para qué sirve
Búsqueda semántica, sistemas de recomendación y RAG. Permite encontrar documentos relevantes incluso cuando el usuario usa palabras diferentes a las del texto. Es la base de muchos motores de búsqueda con IA.
En sistemas RAG, la similitud del coseno selecciona los fragmentos de documento más relevantes para la pregunta del usuario, que luego se envían al modelo de lenguaje como contexto. Cuanto más precisa sea la búsqueda, mejor será la respuesta final.