vecstore-js
Version:
A pluggable, browser-native vector database using IndexedDB with support for HNSW and local embeddings.
11 lines (10 loc) • 460 B
JavaScript
export const cosineSimilarity = (a, b) => {
if (a.length === 0 || b.length === 0 || a.length !== b.length)
return 0;
const dot = a.reduce((sum, val, i) => sum + val * b[i], 0);
const magnitudeA = Math.sqrt(a.reduce((sum, val) => sum + val * val, 0));
const magnitudeB = Math.sqrt(b.reduce((sum, val) => sum + val * val, 0));
if (magnitudeA === 0 || magnitudeB === 0)
return 0;
return dot / (magnitudeA * magnitudeB);
};