Cosine Similarity
Aprenda como a similaridade do cosseno mede a semelhança entre vetores em IA. Calcule embeddings visuais com o Ultralytics YOLO26 e escale com a Ultralytics Platform.
A similaridade do cosseno é uma métrica matemática fundamental usada em aprendizado de máquina (ML) e inteligência artificial (AI) para medir o grau de semelhança entre dois arrays multidimensionais ou vetores, independentemente do tamanho ou da magnitude. Ao calcular o ângulo entre dois pontos em um espaço vetorial, ela determina se eles apontam aproximadamente na mesma direção. Essa abordagem angular é essencial para processar dados em que a orientação importa mais do que o comprimento total, o que a torna muito eficaz para comparar representações abstratas de dados, como embeddings.
Entenda a matemática por trás da métrica#
Para calcular essa métrica, calcula-se o produto escalar de dois vetores e divide-se o resultado pelo produto das magnitudes individuais (comprimentos) dos vetores. A pontuação resultante sempre fica dentro de um intervalo fixo de -1 a 1:
- Uma pontuação de 1 significa que os vetores apontam exatamente na mesma direção, indicando similaridade máxima.
- Uma pontuação de 0 significa que os vetores são completamente ortogonais (formam um ângulo de 90 graus), ou seja, não há similaridade direcional.
- Uma pontuação de -1 significa que os vetores apontam exatamente em direções opostas.
Em muitas estruturas modernas de aprendizado profundo projetadas para visão computacional (CV), é fácil acessar funções otimizadas para essa operação matemática, como o módulo funcional do PyTorch ou as métricas do TensorFlow.
Distinção entre conceitos relacionados#
É útil distinguir a similaridade do cosseno de outras métricas de análise de dados frequentemente usadas para entender quando aplicar cada uma:
- Distância do cosseno: embora estejam estreitamente relacionadas, essas métricas são inversamente proporcionais. A distância do cosseno é calculada simplesmente como 1 menos a similaridade do cosseno. Portanto, uma distância menor indica maior similaridade entre os vetores.
- Distância euclidiana: essa métrica mede a distância física em linha reta entre dois pontos, sendo muito sensível ao tamanho ou à magnitude total dos vetores. Em contrapartida, a similaridade do cosseno considera apenas o ângulo. Por exemplo, na análise de texto, um documento longo e uma frase curta podem ter uma grande distância euclidiana, mas, se abordarem o mesmo tema, a similaridade do cosseno continuará alta.
Aplicações de IA no mundo real#
A similaridade do cosseno é o mecanismo central de muitos produtos de software modernos, conectando dados brutos à intenção humana.
- Pesquisa vetorial e RAG: em aplicações de processamento de linguagem natural (NLP), como chatbots, as consultas dos usuários e os documentos internos são convertidos em embeddings densos. O sistema calcula rapidamente a similaridade do cosseno para recuperar os documentos mais relevantes em termos de contexto em um banco de dados vetorial, uma etapa essencial da geração aumentada por recuperação (RAG).
- Sistemas de recomendação: serviços de comércio eletrônico e streaming usam ferramentas como Scikit-learn e SciPy para representar as preferências dos usuários e os itens do catálogo como vetores. Ao medir a pontuação de similaridade entre o perfil de um comprador e diferentes produtos, os sistemas podem recomendar com precisão itens relacionados visual ou tematicamente.
Medindo a similaridade visual com Ultralytics#
É possível extrair vetores de características de alta dimensão diretamente de dados visuais usando modelos de visão de última geração. O código Python a seguir mostra como carregar um modelo Ultralytics YOLO26 para classificação de imagens, gerar embeddings para duas imagens e calcular a similaridade do cosseno para medir a semelhança visual entre elas.
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 desenvolvedores que querem ampliar esses recursos de busca semântica, é fundamental treinar modelos básicos altamente precisos. A Plataforma Ultralytics simplifica esse fluxo de trabalho com ferramentas robustas para anotação de dados, treinamento escalável na nuvem e implantação de modelos integrada, garantindo que os embeddings subjacentes sejam tão precisos e relevantes quanto possível.









