(a, b)
| 106 | } |
| 107 | |
| 108 | function cosineSim(a, b) { |
| 109 | let dot = 0, normA = 0, normB = 0; |
| 110 | for (let i = 0; i < a.length; i++) { |
| 111 | dot += a[i] * b[i]; |
| 112 | normA += a[i] * a[i]; |
| 113 | normB += b[i] * b[i]; |
| 114 | } |
| 115 | return dot / (Math.sqrt(normA) * Math.sqrt(normB) + 1e-10); |
| 116 | } |
| 117 | |
| 118 | function quantizeInt8(embedding) { |
| 119 | const maxVal = Math.max(...embedding.map(Math.abs)); |