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

$ similarityEuclidean (operador de expressão )

Novidades na versão 8.3.

$similarityEuclidean

Retorna a distância euclideana entre dois vetores numéricos representados como arrays ou valores binData. A distância euclideana mede a distância em linha reta entre dois pontos no espaço vetorial.

$similarityEuclidean tem dois formatos de sintaxe .

A sintaxe concisa retorna uma distância euclideana bruta:

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

A sintaxe completa aceita um parâmetro de normalização opcional:

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

Ao utilizar a sintaxe completa, o aceita os seguintes$similarityEuclidean campos:

Campo
Tipo
necessidade
Descrição

vectors

Array

Obrigatório

Array de exatamente duas expressões. Cada expressão deve ser resolvida para uma array de valores numéricos ou um valor binData. Ambos os vetores devem ter comprimento igual.

score

Boolean

Opcional

Quando true, retorna uma pontuação normalizada no intervalo (0, 1] usando a fórmula 1 / (1 + distance). Vetores idênticos produzem uma pontuação de 1. O padrão é false.

Para mais informações sobre expressões, consulte Expressões do .

Se qualquer um dos argumentos resultar em null ou se referir a um campo ausente, $similarityEuclidean nullretornará.

$similarityEuclidean retorna double um. Quando score é false (o padrão), o resultado é a distância euclideana bruta, que é sempre maior ou igual 0 a. Uma distância de 0 significa que os vetores são idênticos. Valores maiores indicam maior disparidade.

Quando score é true, o resultado é normalizado para o intervalo (0, 1] utilizando a fórmula 1 / (1 + distance):

  • 1 indica que os vetores são idênticos (a distância é 0).

  • Valores próximos a 0 indicam maior disparidade.

$similarityEuclidean retorna um erro nos seguintes casos:

  • Qualquer argumento não resulta em uma array ou no valor binData.

  • Arrays de entrada ou valores binData têm comprimentos diferentes.

  • Qualquer array contém elementos não numéricos.

O exemplo a seguir utiliza uma coleção 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] }
] )

O seguinte pipeline de agregação calcula a distância euclideana entre os campos a e b para cada documento e retorna a distância bruta e a pontuação normalizada:

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

A operação retorna os seguintes resultados:

{ _id: 1, raw: 0, normalized: 1 }
{ _id: 2, raw: 2.8284271247461903,
normalized: 0.2612038749637415 }
{ _id: 3, raw: 5.196152422706632,
normalized: 0.16139702886038895 }

Voltar

$ similarityDotProduct

Nesta página