UNPKG

metacognitive-nexus

Version:

The cognitive core of an evolving AI entity, designed for post-human cognition and symbiotic evolution.

40 lines (38 loc) 1.43 kB
// File: metacognitive-nexus/src/utils/MathHelpers.js /** * Menghitung cosine similarity antara dua vektor. * @param {number[]} vecA Vektor pertama. * @param {number[]} vecB Vektor kedua. * @returns {number} Cosine similarity (0.0 - 1.0). */ export function cosineSimilarity(vecA, vecB) { if (!vecA || !vecB || vecA.length === 0 || vecB.length === 0 || vecA.length !== vecB.length) { return 0; } let dotProduct = 0; let magnitudeA = 0; let magnitudeB = 0; for (let i = 0; i < vecA.length; i++) { dotProduct += vecA[i] * vecB[i]; magnitudeA += vecA[i] * vecA[i]; magnitudeB += vecB[i] * vecB[i]; } magnitudeA = Math.sqrt(magnitudeA); magnitudeB = Math.sqrt(magnitudeB); if (magnitudeA === 0 || magnitudeB === 0) return 0; return dotProduct / (magnitudeA * magnitudeB); } /** * Menghasilkan ID unik standar (UUID v4) untuk interaksi. * Nama fungsi diubah agar konsisten dengan penggunaan sebelumnya di InteractionLogSchema. * @returns {string} UUID v4 string. */ export function generateInteractionId() { // Nama fungsi diubah dari generateUUID if (typeof crypto !== 'undefined' && crypto.randomUUID) { return crypto.randomUUID(); } return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); }