perplexica-auth / src /lib /utils /computeSimilarity.ts
pjpjq's picture
Deploy Perplexica to Hugging Face with nginx basic auth
6b6ca97 verified
const computeSimilarity = (x: number[], y: number[]): number => {
if (x.length !== y.length)
throw new Error('Vectors must be of the same length');
let dotProduct = 0;
let normA = 0;
let normB = 0;
for (let i = 0; i < x.length; i++) {
dotProduct += x[i] * y[i];
normA += x[i] * x[i];
normB += y[i] * y[i];
}
if (normA === 0 || normB === 0) {
return 0;
}
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
};
export default computeSimilarity;