Cosine Similarity
Aprende cómo la similitud de coseno mide la similitud vectorial en la IA. Calcula embeddings visuales con Ultralytics YOLO26 y escala con la Plataforma Ultralytics.
La similitud del coseno es una métrica matemática fundamental que se utiliza en machine learning (ML) y artificial intelligence (AI) para medir la similitud entre dos multi-dimensional arrays o vectores, independientemente de su tamaño o magnitud. Al calcular el ángulo entre dos puntos en un vector space, determina si apuntan aproximadamente en la misma dirección. Este enfoque angular es fundamental para procesar datos donde la orientación importa más que la longitud total, lo que lo hace altamente eficaz para comparar representaciones de datos abstractos como embeddings.
Link to this sectionComprender la matemática detrás de la métrica#
Para calcular esta métrica, calcula el dot product de dos vectores y divídelo por el producto de sus magnitudes individuales (longitudes). La puntuación resultante siempre se sitúa en un rango fijo de -1 a 1:
- Una puntuación de 1 significa que los vectores apuntan exactamente en la misma dirección, lo que indica la máxima similitud.
- Una puntuación de 0 significa que los vectores son completamente orthogonal (en un ángulo de 90 grados), lo que significa que no hay similitud direccional.
- Una puntuación de -1 significa que apuntan en direcciones exactamente opuestas.
En muchos marcos de deep learning modernos diseñados para computer vision (CV), puedes acceder fácilmente a funciones optimizadas para esta operación matemática, como el PyTorch's functional module o TensorFlow metrics.
Link to this sectionDiferenciación de conceptos relacionados#
Es útil distinguir la similitud del coseno de otras mediciones de data analytics de uso frecuente para entender cuándo utilizarla:
- Cosine Distance: aunque están estrechamente relacionados, estos términos son inversamente proporcionales. La distancia del coseno se calcula simplemente como 1 menos la similitud del coseno. Por lo tanto, una distancia menor indica una mayor similitud entre vectores.
- Distancia euclidiana: 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 magnitud total de los vectores. Por el contrario, a la similitud del coseno solo le importa el ángulo. Por ejemplo, en el análisis de texto, un documento largo y una frase corta pueden tener una gran distancia euclidiana, pero si comparten el mismo tema, su similitud del coseno seguirá siendo alta.
Link to this sectionAplicaciones en el mundo real en IA#
La similitud del coseno actúa como motor principal para numerosos productos de software modernos, tendiendo un puente entre los datos brutos y la intención humana.
- Vector Search and RAG: en aplicaciones de Natural Language Processing (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 del coseno para recuperar los documentos más relevantes desde el punto de vista contextual de una vector database, un paso crucial en la Generación Aumentada por Recuperación (RAG).
- Recommendation Systems: los servicios de comercio electrónico y streaming utilizan herramientas como Scikit-learn and SciPy para representar las preferencias de los usuarios y los elementos del catálogo como vectores. Al medir la puntuación de similitud entre el perfil de un comprador y diferentes productos, los sistemas pueden recomendar con precisión artículos relacionados visual o temáticamente.
Link to this sectionMedición de la similitud visual con Ultralytics#
Puedes extraer vectores de características de alta dimensión directamente de datos visuales utilizando modelos de visión de última generación. El siguiente código de Python demuestra cómo cargar un modelo Ultralytics YOLO26 para image classification, generar embeddings para dos imágenes y realizar un cálculo de similitud del 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 buscan escalar estas capacidades de semantic search, es fundamental entrenar modelos base de gran precisión. Ultralytics Platform agiliza este proceso ofreciendo herramientas robustas para data annotation, entrenamiento en la nube escalable y model deployment fluido, garantizando que tus embeddings subyacentes sean lo más precisos y significativos posible.






