← Voltar

Métricas de similaridade de vetores: L2, cosseno e produto escalar

Arraste o ponto de consulta e altere as métricas para ver como os vizinhos mais próximos mudam.

Os 5 vizinhos mais próximos(mais baixo = mais próximo)

#1P1842.1
#2P1074.0
#3P17111.6
#4P14122.8
#5P13126.9
Medida de similaridade
L2
Valor exibido
Distância euclidiana

L2 (Distância euclidiana)

Mede a distância em linha reta entre dois pontos. Os círculos concêntricos mostram zonas equidistantes — todos os pontos no mesmo círculo estão igualmente «distantes» da consulta.

O que é uma métrica?

Uma métrica é apenas uma função que recebe dois vetores e devolve um único número que indica o grau de semelhança (ou diferença) entre eles. A pesquisa vetorial consiste, na sua essência, em «encontrar os K vetores com a melhor pontuação métrica em relação à minha consulta». Tudo o resto — índices, clusters, gráficos — é apenas uma questão de gestão para evitar calcular esta pontuação em relação a cada vetor na base de dados.

A métrica que escolher define o que «semelhante» significa para os seus dados. Duas incorporações podem estar «próximas» numa métrica e «distantes» noutra — os mesmos dados, respostas diferentes. É por isso que esta escolha é feita antes mesmo de criar um índice.

Os três que irá encontrar na prática

  • L2 (Euclidiana): distância em linha reta. Quanto menor, melhor. Utilizar quando tanto a direção como a magnitude são importantes — incorporações de imagens, coordenadas geográficas, leituras brutas de sensores. É o valor predefinido para a maioria dos modelos de CV.
  • Cosseno: ângulo entre vetores, ignorando o comprimento. Quanto maior, melhor. Utilize quando apenas a direção for relevante — incorporações de texto (BERT, OpenAI, etc.), sistemas de recomendação em que a «popularidade» do vetor não deve predominar.
  • Produto Interno (IP): produto escalar, que valoriza tanto o alinhamento como a magnitude. Quanto mais elevado, melhor. Utilize com modelos que normalizem explicitamente para o « IP » (DPR, muitos modelos de recuperação). Matematicamente idêntico ao Cosino quando os vetores têm comprimento unitário.

Duas regras práticas

  • Adapte a métrica ao modelo. Os modelos de incorporação são treinados tendo em mente uma métrica específica. Utilizar uma métrica diferente no momento da pesquisa irá comprometer silenciosamente a sua precisão de recuperação. Verifique a ficha do modelo antes de escolher.
  • Mantenha a consistência. Todos os vetores de uma coleção devem utilizar a mesma métrica. Não é possível misturá-las num único índice, nem comparar de forma significativa pontuações entre métricas diferentes.

Experimente isto: arraste o ponto de consulta para perto da origem e alterne entre «Cosine» e « L2 ». Observe como o «Cosine» se preocupa apenas com a «direção» para a qual a consulta aponta — pontos no lado oposto da origem podem estar «próximos» no « L2 », mas «distantes» no «Cosine». Essa representação visual resume todo o conceito.

Definir o tipo de métrica em Milvus

Em « Milvus », a métrica é definida por índice através de « metric_type » — L2, IP, ou COSINE para vetores densos — quando cria o índice. Todas as pesquisas nessa coleção utilizam então a mesma função com a qual acabou de trabalhar acima. A regra mais fiável de todas: utilize a métrica com a qual o seu modelo de incorporação foi treinado, que está indicada em praticamente todos os cartões de modelo.

Dois atalhos úteis. A maioria das APIs modernas de incorporação de texto (OpenAI, Cohere, Voyage e a maioria dos transformadores de frases) produz vetores destinados à similaridade cosinusoidal. E se os seus vetores forem normalizados para comprimento unitário, o coseno e o produto escalar devolvem classificações idênticas — por isso, IP em vetores normalizados é uma alternativa comum e ligeiramente mais económica ao COSINE.

Perguntas frequentes

Que métrica de similaridade devo utilizar para « OpenAI » ou outras incorporações de texto?

Utilize a similaridade cosseno (metric_type COSINE em Milvus). Quase todos os modelos modernos de incorporação de texto — incluindo a família text-embedding-3 de OpenAI — são treinados para a similaridade cosseno. Como as incorporações OpenAI são normalizadas para comprimento unitário, o produto escalar (IP) fornece classificações idênticas e constitui uma boa alternativa.

Qual é a diferença entre similaridade cosseno e produto interno?

A semelhança cosseno mede apenas o ângulo entre dois vetores, ignorando os seus comprimentos. O produto interno (produto escalar) valoriza tanto o alinhamento como a magnitude, pelo que um vetor mais longo que aponte na mesma direção obtém uma pontuação mais elevada. Em vetores normalizados por unidade, os dois são matematicamente equivalentes.

Posso alterar o tipo de métrica depois de criar um índice no Milvus?

Não. A métrica é incorporada no índice no momento da compilação. Para mudar de métrica, deve eliminar o índice e recompilá-lo com um novo «metric_type». As pontuações de métricas diferentes também não são comparáveis entre si, por isso não as misture ao pós-processar os resultados.

A escolha da métrica afeta a recuperação ou a velocidade de pesquisa?

A velocidade é essencialmente idêntica — « L2 », « IP » e «cosine» custam todos uma passagem pelo vetor. O recall é que importa: pesquisar com uma métrica diferente daquela para a qual o seu modelo de incorporação foi treinado degrada silenciosamente a qualidade dos resultados, muitas vezes de forma dramática.

Para aprofundar: leia a documentação sobre Métricas de Similaridade para obter a lista completa de métricas que o ` Milvus ` suporta, incluindo Hamming e Jaccard para vetores binários e BM25 para pesquisa de texto completo.

Continue a explorar