euclideanDistance

Returns the scalar Euclidean distance between two vector inputs. This function is similar to the EUCLIDEAN_DISTANCE SQL function.

Syntax

{ $euclideanDistance: [ <expression>, <expression> [, <size>]] }

Arguments

  • expression1, expression2: An expression that resolves to a binary value.

  • size (Optional): A string that specifies the data type of the vector elements. The default is "F32". The following values are supported:

    String

    Description

    I8

    8-bit signed integer

    I16

    16-bit signed integer

    I32

    32-bit signed integer

    I64

    64-bit signed integer

    F32

    32-bit floating-point number (IEEE standard format)

    F64

    64-bit floating-point number (IEEE standard format)

Example

The following MongoDB® Shell script compares face embeddings using euclideanDistance:

col = db.faces;
db.createCollection("faces", {
columns: [{ id: "faceEmbedding", type: "LONGBLOB NULL" }],
});
col.insertMany([
{
_id: ObjectId("642cf6870d149e904828642d"),
name: "Face A",
faceEmbedding: BinData(
0,
"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"
),
},
{
_id: ObjectId("642cfad80d149e9048287578"),
name: "Face B",
faceEmbedding: BinData(
0,
"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"
),
},
{
_id: ObjectId("642cfa330d149e90482872ac"),
name: "Face C",
faceEmbedding: BinData(
0,
"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"
),
},
]);
var testFace = col.findOne({ name: "Face A" });
col.aggregate([
{
$addFields: {
score: {
$euclideanDistance: ["$faceEmbedding", testFace.faceEmbedding, "F32"],
},
},
},
{ $sort: { score: 1 } },
{ $project: { name: 1, score: 1 } },
]);
[
  {
    _id: ObjectId("642cf6870d149e904828642d"),
    name: 'Face A',
    score: 0
  },
  {
    _id: ObjectId("642cfad80d149e9048287578"),
    name: 'Face B',
    score: 0.7802467771327307
  },
  {
    _id: ObjectId("642cfa330d149e90482872ac"),
    name: 'Face C',
    score: 0.8352553534520302
  }
]

Last modified: November 10, 2023

Was this article helpful?