Cosine Similarity
Aprende cómo la similitud coseno mide la similitud entre vectores en IA. Calcula incrustaciones visuales con Ultralytics YOLO26 y escala con Ultralytics Platform.
La similitud coseno es una métrica matemática fundamental que se utiliza en el aprendizaje automático (ML) y la inteligencia artificial (AI) para medir el grado de similitud entre dos matrices multidimensionales o vectores, independientemente de su tamaño o magnitud. Al calcular el ángulo entre dos puntos de un espacio vectorial, determina si apuntan aproximadamente en la misma dirección. Este enfoque angular es fundamental para procesar datos en los que la orientación importa más que la longitud total, por lo que resulta muy eficaz para comparar representaciones abstractas de datos, como los embeddings.
Fundamentos matemáticos de la métrica#
Para calcular esta métrica, se calcula el producto escalar de dos vectores y se divide entre el producto de sus magnitudes individuales (longitudes). El resultado siempre está dentro de un intervalo fijo de -1 a 1:
- Una puntuación de 1 significa que los vectores apuntan exactamente en la misma dirección, lo que indica una similitud máxima.
- Una puntuación de 0 significa que los vectores son completamente ortogonales (forman un ángulo de 90 grados), es decir, no hay similitud direccional.
- Una puntuación de -1 significa que apuntan exactamente en direcciones opuestas.
En muchos frameworks modernos de aprendizaje profundo diseñados para la visión artificial (CV), puedes acceder fácilmente a funciones optimizadas para esta operación matemática, como el módulo funcional de PyTorch o las métricas de TensorFlow.
Diferencias entre conceptos relacionados#
Conviene distinguir la similitud coseno de otras medidas de análisis de datos de uso frecuente para saber cuándo utilizarla:
- Distancia coseno: Aunque están estrechamente relacionados, estos términos son inversamente proporcionales. La distancia coseno se calcula simplemente como 1 menos la similitud coseno. Por tanto, una distancia menor indica una mayor similitud entre vectores.
- Distancia euclídea: esta métrica mide la distancia física en línea recta entre dos puntos, por lo que es muy sensible al tamaño o la magnitud total de los vectores. En cambio, la similitud coseno solo tiene en cuenta el ángulo. Por ejemplo, en el análisis de texto, un documento largo y una frase corta pueden tener una distancia euclídea grande, pero, si tratan el mismo tema, su similitud coseno seguirá siendo alta.
Aplicaciones reales en IA#
La similitud coseno es el motor central de numerosos productos de software modernos y conecta los datos sin procesar con la intención humana.
- Búsqueda vectorial y RAG: En aplicaciones de procesamiento del lenguaje natural (NLP), como los chatbots, las consultas de los usuarios y los documentos internos se convierten en embeddings densos. El sistema calcula rápidamente la similitud coseno para recuperar los documentos más relevantes según el contexto de una base de datos vectorial, un paso fundamental de la generación aumentada por recuperación (RAG).
- Sistemas de recomendación: Los servicios de comercio electrónico y streaming utilizan herramientas como Scikit-learn y SciPy para representar las preferencias de los usuarios y los artículos del catálogo como vectores. Al medir la puntuación de similitud entre el perfil de un comprador y distintos productos, los sistemas pueden recomendar con precisión artículos relacionados visual o temáticamente.
Medición de la similitud visual con Ultralytics#
Puedes extraer vectores de características de gran dimensionalidad directamente de datos visuales con modelos de visión de última generación. El siguiente código de Python muestra cómo cargar un modelo Ultralytics YOLO26 para la clasificación de imágenes, generar embeddings para dos imágenes y calcular la similitud coseno para medir su parecido visual.
import torch
import torch.nn.functional as F
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Generate embedding vectors for two separate images
results = model.embed(["bus.jpg", "car.jpg"])
# Calculate the cosine similarity between the two visual embeddings
similarity = F.cosine_similarity(torch.tensor(results[0]), torch.tensor(results[1]), dim=0)
print(f"Visual Similarity Score: {similarity.item():.4f}")Para los desarrolladores que quieran ampliar estas capacidades de búsqueda semántica, es fundamental entrenar modelos base muy precisos. La plataforma Ultralytics simplifica este flujo de trabajo al ofrecer herramientas sólidas para la anotación de datos, el entrenamiento escalable en la nube y el despliegue de modelos sin complicaciones, para garantizar que tus embeddings sean lo más precisos y útiles posible.









