UNPKG

@allemandi/embed-utils

Version:

Fast, type-safe utilities for comparing and searching vector embeddings.

3 lines (2 loc) 2.26 kB
function r(r,t){for(var n=0,e=0,o=0,i=0;i<r.length;i++){var a=r[i],l=t[i];n+=a*l,e+=a*a,o+=l*l}var u=Math.sqrt(e)*Math.sqrt(o);return 0===u?0:n/u}function t(r){for(var t=0,n=0;n<r.length;n++)t+=r[n]*r[n];var e=Math.sqrt(t);if(0===e)return r.slice();for(var o=new Array(r.length),i=0;i<r.length;i++)o[i]=r[i]/e;return o}function n(r,t){void 0===t&&(t=1e-6);for(var n=0,e=0;e<r.length;e++){var o=r[e];n+=o*o}return Math.abs(n-1)<=t}function e(r){var t=r.length;if(0===t)return[];for(var n=r[0].length,e=new Array(n).fill(0),o=0;o<t;o++)for(var i=r[o],a=0;a<n;a++)e[a]+=i[a];for(var l=0;l<n;l++)e[l]/=t;return e}function o(r,t){(null==t||t>r.length)&&(t=r.length);for(var n=0,e=Array(t);n<t;n++)e[n]=r[n];return e}function i(){return i=Object.assign?Object.assign.bind():function(r){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var e in n)({}).hasOwnProperty.call(n,e)&&(r[e]=n[e])}return r},i.apply(null,arguments)}function a(t,n,e){void 0===e&&(e={});for(var a,l=e.topK,u=void 0===l?1:l,f=e.threshold,c=void 0===f?0:f,s=[],v=function(r){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return(t=t.call(r)).next.bind(t);if(Array.isArray(r)||(t=function(r,t){if(r){if("string"==typeof r)return o(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(r,t):void 0}}(r))){t&&(r=t);var n=0;return function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(n);!(a=v()).done;){var h=a.value,y=r(t,h.embedding);y>=c&&s.push(i({},h,{similarityScore:y}))}return s.sort(function(r,t){return t.similarityScore-r.similarityScore}),s.slice(0,u)}function l(t,n){for(var e=new Array(n.length),o=0;o<n.length;o++)e[o]=i({},n[o],{similarityScore:r(t,n[o].embedding)});return e.sort(function(r,t){return t.similarityScore-r.similarityScore}),e}export{r as computeCosineSimilarity,a as findNearestNeighbors,n as isNormalized,e as meanVector,t as normalizeVector,l as rankBySimilarity}; //# sourceMappingURL=index.module.js.map