vec.euclideanDistance( vector1 as vec.vector, vector2 as vec.vector ) as Number
Returns the Euclidean distance between two vectors. The vectors must be of the same dimension.
Parameters | |
---|---|
vector1 | The vector from which to calculate the Euclidean distance to vector2. |
vector2 | The vector from which to calculate the Euclidean distance to vector1. |
const vec1 = vec.vector([3.14,1.59,2.65]) const vec2 = vec.vector([3.58,9.79,3.23]) vec.euclideanDistance(vec1,vec2) => 8.23225343535979
const vec1 = vec.vector(xdmp.toJSON(fn.doc('pronethalol.json')).xpath('/data/array-node{embedding}')) const vec2 = vec.vector(fn.head(fn.doc('cell_renewal.json')).xpath('/data/array-node{embedding}')) vec.euclideanDistance(vec1,vec2) => The Euclidean distance between vectors in JSON arrays named 'embedding' in documents 'pronethalol.json' and 'cell_renewal.json'
'use strict'; const op = require('/MarkLogic/optic'); // construct a query vector from the JSON array node 'emb' in document 'embedding104576.json' const qv = vec.vector(fn.head(fn.doc('embedding104576.json')).xpath("/array-node('emb')")) const view = op.fromView('vecs','wiki_vectors') .bind(op.as('euclDistance',op.vec.euclideanDistance(op.col('embedding'),qv))) .select([op.col('title'),op.col('text'),op.col('euclDistance')]) .orderBy(op.asc(op.col('euclDistance'))) .limit(30) .result() view // => // Performs a linear scan of vectors in the 'embedding' column in the 'wiki_vectors' view to find the top // 30 matches to the query vector 'qv'