← Atrás

Métricas de similitud vectorial: L2, coseno y producto escalar

Arrastra el punto de consulta y cambia las métricas para ver cómo cambian los vecinos más cercanos.

Los 5 vecinos más cercanos(más bajo = más cercano)

#1P1842.1
#2P1074.0
#3P17111.6
#4P14122.8
#5P13126.9
Medida de similitud
L2
Valor mostrado
Distancia euclidiana

L2 (Distancia euclidiana)

Mide la distancia en línea recta entre dos puntos. Los círculos concéntricos muestran zonas equidistantes: todos los puntos de un mismo círculo están a la misma «distancia» de la consulta.

¿Qué es una métrica?

Una métrica es simplemente una función que toma dos vectores y devuelve un único número que indica cuán similares (o diferentes) son. La búsqueda vectorial consiste, en esencia, en «encontrar los K vectores con la mejor puntuación métrica respecto a mi consulta». Todo lo demás —índices, clústeres, grafos— no es más que un procedimiento administrativo para evitar calcular esta puntuación con cada vector de la base de datos.

La métrica que elijas define qué significa «similar» para tus datos. Dos representaciones pueden estar «cercanas» según una métrica y «lejanas» según otra: mismos datos, respuesta diferente. Por eso esta elección se realiza antes incluso de crear un índice.

Los tres que verás en la práctica

  • L2 (Euclidiana): distancia en línea recta. Cuanto menor, mejor. Úsala cuando importen tanto la dirección como la magnitud —incrustaciones de imágenes, coordenadas geográficas, lecturas brutas de sensores—. Es el valor por defecto para la mayoría de los modelos de aprendizaje automático.
  • Coseno: ángulo entre vectores, sin tener en cuenta la longitud. Cuanto mayor sea, mejor. Úsalo cuando solo importe la dirección: incrustaciones de texto (BERT, OpenAI, etc.), sistemas de recomendación en los que la «popularidad» del vector no deba predominar.
  • Producto interno (IP): producto escalar, que valora tanto la alineación como la magnitud. Cuanto mayor sea, mejor. Úsalo con modelos que normalicen explícitamente para « IP » (DPR, muchos modelos de recuperación). Matemáticamente idéntico al coseno cuando los vectores tienen longitud unitaria.

Dos reglas prácticas

  • Adapta la métrica al modelo. Los modelos de incrustación se entrenan teniendo en cuenta una métrica específica. Utilizar una diferente en el momento de la búsqueda arruinará silenciosamente tu recuperación. Consulta la ficha del modelo antes de elegir.
  • Mantén la coherencia. Todos los vectores de una colección deben utilizar la misma métrica. No se pueden mezclar dentro de un mismo índice, ni se pueden comparar de forma significativa las puntuaciones entre diferentes métricas.

Prueba esto: arrastra el punto de consulta cerca del origen y alterna entre «Cosine» y « L2 ». Observa cómo «Cosine» solo tiene en cuenta la «dirección» hacia la que apunta la consulta: los puntos situados en el lado opuesto al origen pueden estar «cerca» con « L2 », pero «lejos» con «Cosine». Esa imagen resume todo el concepto.

Configuración del tipo de métrica en Milvus

En Milvus, la métrica se establece por índice a través de metric_type — L2, IP, o COSINE para vectores densos — al crear el índice. A partir de ese momento, cada búsqueda en esa colección utilizará la misma función con la que acabas de experimentar anteriormente. La regla más fiable: utiliza la métrica con la que se entrenó tu modelo de incrustación, que aparece indicada en prácticamente todas las fichas de modelo.

Dos atajos útiles. La mayoría de las API modernas de incrustación de texto (OpenAI, Cohere, Voyage y la mayoría de los transformadores de oraciones) generan vectores pensados para la similitud coseno. Y si tus vectores están normalizados a longitud unitaria, el coseno y el producto interno devuelven clasificaciones idénticas; por lo tanto, IP sobre vectores normalizados es una alternativa habitual y ligeramente más económica a COSINE.

Preguntas frecuentes

¿Qué métrica de similitud debo utilizar para « OpenAI » u otras representaciones de texto?

Utiliza la similitud coseno (metric_type COSINE en Milvus). Casi todos los modelos modernos de incrustación de texto —incluida la familia text-embedding-3 de OpenAI — se entrenan para la similitud coseno. Dado que OpenAI las incrustaciones se normalizan a longitud unitaria, el producto escalar (IP) ofrece clasificaciones idénticas y es una buena alternativa.

¿Cuál es la diferencia entre la similitud coseno y el producto interno?

La similitud coseno mide únicamente el ángulo entre dos vectores, ignorando sus longitudes. El producto escalar (producto punto) valora tanto la alineación como la magnitud, por lo que un vector más largo que apunte en la misma dirección obtiene una puntuación más alta. En vectores normalizados por la unidad, ambos conceptos son matemáticamente equivalentes.

¿Puedo cambiar el tipo de medida después de crear un índice en Milvus?

No. La métrica se integra en el índice en el momento de su creación. Para cambiar de métrica, hay que eliminar el índice y volver a crearlo con un nuevo «metric_type». Las puntuaciones de diferentes métricas tampoco son comparables entre sí, por lo que no hay que mezclarlas al posprocesar los resultados.

¿Afecta la elección de la métrica a la recuperación o a la velocidad de búsqueda?

La velocidad es prácticamente idéntica: « L2 », « IP » y «cosine» requieren todos una sola pasada por el vector. La recuperación es lo que realmente importa: buscar con una métrica diferente a aquella para la que se entrenó tu modelo de incrustación degrada silenciosamente la calidad de los resultados, a menudo de forma drástica.

Más información: consulta la documentación sobre métricas de similitud para ver la lista completa de métricas que admite « Milvus », incluidas Hamming y Jaccard para vectores binarios y BM25 para la búsqueda de texto completo.

Sigue explorando