Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$similitudCoseno (operador de expresión)

Nuevo en la versión 8.3.

$similarityCosine

Devuelve la similitud del coseno entre dos vectores numéricos representados como matrices o valores binData. La similitud del coseno mide el coseno del ángulo entre dos vectores e indica cuán similares son sus direcciones, independientemente de sus magnitudes.

$similarityCosine tiene dos formas sintácticas.

La sintaxis concisa devuelve una puntuación de similitud de coseno sin procesar:

{ $similarityCosine: [ <vector1>, <vector2> ] }

La sintaxis completa acepta un parámetro de normalización opcional:

{
$similarityCosine: {
vectors: [ <vector1>, <vector2> ],
score: <boolean>
}
}

Al utilizar la sintaxis completa, acepta los siguientes$similarityCosine campos:

Campo
Tipo
Necesidad
Descripción

vectors

Arreglo

Requerido

Matriz de exactamente dos expresiones. Cada expresión debe resolverse en una matriz de valores numéricos o en un valor binData. Ambos vectores deben tener la misma longitud.

score

Booleano

Opcional

Cuando true, devuelve una puntuación normalizada en el rango [0, 1] usando la fórmula (1 + cosine) / 2. Por defecto es false.

Para obtener más información sobre expresiones, vea expresión.

Si alguno de los argumentos se resuelve en null o hace referencia a un campo faltante, $similarityCosine nulldevuelve.

Si alguno de los vectores de entrada tiene una magnitud de cero (es decir, todos los elementos 0 son), $similarityCosine 0devuelve.

$similarityCosine devuelve double un. Cuando score es false (el valor predeterminado), el resultado es el valor de similitud del coseno sin procesar en el [-1, 1] rango:

  • 1 indica que los vectores apuntan en direcciones idénticas.

  • 0 indica que los vectores son ortogonales.

  • -1 indica que los vectores apuntan en direcciones opuestas.

Cuando score es true, el resultado se normaliza al rango [0, 1] usando la fórmula (1 + cosine) / 2.

$similarityCosine Devuelve un error en los siguientes casos:

  • Ninguno de los argumentos se resuelve en una matriz o en un valor binData.

  • Los arrays de entrada o los valores binData tienen longitudes diferentes.

  • Ambos arrays contienen elementos no numéricos.

El siguiente ejemplo utiliza una colección vectors:

db.vectors.insertMany( [
{ _id: 1, a: [1, 2, 3], b: [1, 2, 3] },
{ _id: 2, a: [1, 2, 3], b: [3, 2, 1] },
{ _id: 3, a: [1, 2, 3], b: [4, 5, 6] }
] )

El siguiente proceso de agregación calcula la similitud del coseno entre los campos a y b para cada documento y devuelve tanto la puntuación bruta como la puntuación normalizada:

db.vectors.aggregate( [
{
$project: {
raw: { $similarityCosine: [ "$a", "$b" ] },
normalized: {
$similarityCosine: {
vectors: [ "$a", "$b" ],
score: true
}
}
}
}
] )

La operación devuelve los siguientes resultados:

{ _id: 1, raw: 1, normalized: 1 }
{ _id: 2, raw: 0.7142857142857143,
normalized: 0.8571428571428571 }
{ _id: 3, raw: 0.9746318461970762,
normalized: 0.9873159230985381 }

Volver

$sigmoid

En esta página