agentdb 2.0.0-alpha.3.0 → 2.0.0-alpha.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agentdb.browser.js +1 -1
- package/dist/agentdb.browser.min.js +1 -1
- package/dist/src/backends/factory.d.ts.map +1 -1
- package/dist/src/backends/factory.js +13 -4
- package/dist/src/backends/factory.js.map +1 -1
- package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts.map +1 -1
- package/dist/src/backends/hnswlib/HNSWLibBackend.js +29 -2
- package/dist/src/backends/hnswlib/HNSWLibBackend.js.map +1 -1
- package/dist/src/benchmark/BenchmarkSuite.d.ts +318 -0
- package/dist/src/benchmark/BenchmarkSuite.d.ts.map +1 -0
- package/dist/src/benchmark/BenchmarkSuite.js +984 -0
- package/dist/src/benchmark/BenchmarkSuite.js.map +1 -0
- package/dist/src/benchmark/index.d.ts +29 -0
- package/dist/src/benchmark/index.d.ts.map +1 -0
- package/dist/src/benchmark/index.js +39 -0
- package/dist/src/benchmark/index.js.map +1 -0
- package/dist/src/cli/agentdb-cli.d.ts +13 -0
- package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
- package/dist/src/cli/agentdb-cli.js +725 -94
- package/dist/src/cli/agentdb-cli.js.map +1 -1
- package/dist/src/cli/lib/simulation-runner.d.ts +40 -3
- package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
- package/dist/src/cli/lib/simulation-runner.js +248 -6
- package/dist/src/cli/lib/simulation-runner.js.map +1 -1
- package/dist/src/controllers/CausalMemoryGraph.d.ts +28 -2
- package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
- package/dist/src/controllers/CausalMemoryGraph.js +81 -6
- package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
- package/dist/src/controllers/HNSWIndex.d.ts +20 -2
- package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
- package/dist/src/controllers/HNSWIndex.js +82 -6
- package/dist/src/controllers/HNSWIndex.js.map +1 -1
- package/dist/src/controllers/MemoryController.d.ts +161 -0
- package/dist/src/controllers/MemoryController.d.ts.map +1 -0
- package/dist/src/controllers/MemoryController.js +303 -0
- package/dist/src/controllers/MemoryController.js.map +1 -0
- package/dist/src/controllers/QUICClient.d.ts +45 -0
- package/dist/src/controllers/QUICClient.d.ts.map +1 -1
- package/dist/src/controllers/QUICClient.js +190 -0
- package/dist/src/controllers/QUICClient.js.map +1 -1
- package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
- package/dist/src/controllers/SyncCoordinator.js +115 -3
- package/dist/src/controllers/SyncCoordinator.js.map +1 -1
- package/dist/src/controllers/WASMVectorSearch.d.ts +14 -1
- package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
- package/dist/src/controllers/WASMVectorSearch.js +126 -24
- package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
- package/dist/src/controllers/attention/CrossAttentionController.d.ts +141 -0
- package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +1 -0
- package/dist/src/controllers/attention/CrossAttentionController.js +325 -0
- package/dist/src/controllers/attention/CrossAttentionController.js.map +1 -0
- package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +137 -0
- package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +1 -0
- package/dist/src/controllers/attention/MultiHeadAttentionController.js +336 -0
- package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +1 -0
- package/dist/src/controllers/attention/SelfAttentionController.d.ts +117 -0
- package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +1 -0
- package/dist/src/controllers/attention/SelfAttentionController.js +205 -0
- package/dist/src/controllers/attention/SelfAttentionController.js.map +1 -0
- package/dist/src/controllers/attention/index.d.ts +15 -0
- package/dist/src/controllers/attention/index.d.ts.map +1 -0
- package/dist/src/controllers/attention/index.js +12 -0
- package/dist/src/controllers/attention/index.js.map +1 -0
- package/dist/src/controllers/index.d.ts +8 -0
- package/dist/src/controllers/index.d.ts.map +1 -1
- package/dist/src/controllers/index.js +6 -0
- package/dist/src/controllers/index.js.map +1 -1
- package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +348 -0
- package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +1 -0
- package/dist/src/coordination/MultiDatabaseCoordinator.js +803 -0
- package/dist/src/coordination/MultiDatabaseCoordinator.js.map +1 -0
- package/dist/src/coordination/index.d.ts +10 -0
- package/dist/src/coordination/index.d.ts.map +1 -0
- package/dist/src/coordination/index.js +10 -0
- package/dist/src/coordination/index.js.map +1 -0
- package/dist/src/core/AgentDB.d.ts +25 -7
- package/dist/src/core/AgentDB.d.ts.map +1 -1
- package/dist/src/core/AgentDB.js +77 -25
- package/dist/src/core/AgentDB.js.map +1 -1
- package/dist/src/index.d.ts +8 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +23 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/optimizations/Quantization.d.ts +330 -0
- package/dist/src/optimizations/Quantization.d.ts.map +1 -0
- package/dist/src/optimizations/Quantization.js +793 -0
- package/dist/src/optimizations/Quantization.js.map +1 -0
- package/dist/src/search/HybridSearch.d.ts +311 -0
- package/dist/src/search/HybridSearch.d.ts.map +1 -0
- package/dist/src/search/HybridSearch.js +712 -0
- package/dist/src/search/HybridSearch.js.map +1 -0
- package/dist/src/search/index.d.ts +12 -0
- package/dist/src/search/index.d.ts.map +1 -0
- package/dist/src/search/index.js +16 -0
- package/dist/src/search/index.js.map +1 -0
- package/dist/src/services/AttentionService.d.ts +81 -14
- package/dist/src/services/AttentionService.d.ts.map +1 -1
- package/dist/src/services/AttentionService.js +860 -103
- package/dist/src/services/AttentionService.js.map +1 -1
- package/dist/src/services/token.service.d.ts +15 -1
- package/dist/src/services/token.service.d.ts.map +1 -1
- package/dist/src/services/token.service.js +60 -3
- package/dist/src/services/token.service.js.map +1 -1
- package/dist/src/wasm-loader.d.ts +52 -0
- package/dist/src/wasm-loader.d.ts.map +1 -0
- package/dist/src/wasm-loader.js +65 -0
- package/dist/src/wasm-loader.js.map +1 -0
- package/dist/src/wrappers/attention-fallbacks.d.ts +15 -2
- package/dist/src/wrappers/attention-fallbacks.d.ts.map +1 -1
- package/dist/src/wrappers/attention-fallbacks.js +181 -12
- package/dist/src/wrappers/attention-fallbacks.js.map +1 -1
- package/package.json +2 -1
- package/src/backends/factory.ts +17 -4
- package/src/backends/hnswlib/HNSWLibBackend.ts +32 -2
- package/src/benchmark/BenchmarkSuite.ts +1360 -0
- package/src/benchmark/index.ts +57 -0
- package/src/cli/agentdb-cli.ts +802 -93
- package/src/cli/lib/simulation-runner.ts +295 -7
- package/src/controllers/CausalMemoryGraph.ts +99 -7
- package/src/controllers/HNSWIndex.ts +92 -6
- package/src/controllers/MemoryController.ts +461 -0
- package/src/controllers/QUICClient.ts +254 -0
- package/src/controllers/SyncCoordinator.ts +123 -4
- package/src/controllers/WASMVectorSearch.ts +164 -24
- package/src/controllers/attention/CrossAttentionController.ts +466 -0
- package/src/controllers/attention/MultiHeadAttentionController.ts +493 -0
- package/src/controllers/attention/SelfAttentionController.ts +305 -0
- package/src/controllers/attention/index.ts +34 -0
- package/src/controllers/index.ts +39 -0
- package/src/coordination/MultiDatabaseCoordinator.ts +1107 -0
- package/src/coordination/index.ts +24 -0
- package/src/core/AgentDB.ts +101 -30
- package/src/index.ts +63 -1
- package/src/optimizations/Quantization.ts +995 -0
- package/src/search/HybridSearch.ts +1061 -0
- package/src/search/index.ts +31 -0
- package/src/services/AttentionService.ts +969 -103
- package/src/services/token.service.ts +71 -4
- package/src/wasm-loader.ts +162 -0
- package/src/wrappers/attention-fallbacks.ts +207 -13
package/dist/agentdb.browser.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! AgentDB Browser Bundle v2.0.0-alpha.3.
|
|
1
|
+
/*! AgentDB Browser Bundle v2.0.0-alpha.3.2 | MIT License | https://agentdb.ruv.io */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __esm = (fn, res) => function __init() {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! AgentDB Browser Bundle v2.0.0-alpha.3.
|
|
1
|
+
/*! AgentDB Browser Bundle v2.0.0-alpha.3.2 | MIT | https://agentdb.ruv.io */
|
|
2
2
|
var L=Object.defineProperty;var z=(h,t)=>()=>(h&&(t=h(h=0)),t);var H=(h,t)=>{for(var e in t)L(h,e,{get:t[e],enumerable:!0})};var I={};H(I,{initWASM:()=>j,wasmLoadError:()=>P,wasmModule:()=>p});async function j(){return p||M||(M=(async()=>{try{if(typeof WebAssembly>"u")throw new Error("WebAssembly not supported in this browser");let h=await _();return console.log(`WASM SIMD support: ${h}`),p={flashAttention:N(),hyperbolicAttention:D(),memoryConsolidation:k(),simdSupported:h},console.log("\u2705 WASM attention module loaded"),p}catch(h){return P=h,console.warn("\u26A0\uFE0F WASM loading failed, using fallback:",h.message),p={flashAttention:N(),hyperbolicAttention:D(),memoryConsolidation:k(),simdSupported:!1},p}finally{M=null}})(),M)}async function _(){try{let h=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,253,12,253,12,253,84,11]);return await WebAssembly.instantiate(h)instanceof WebAssembly.Instance}catch{return!1}}function N(){return(h,t,e,o={})=>{let{dim:n=384,numHeads:r=4,blockSize:s=64}=o,i=t.length/n,a=new Float32Array(h.length);for(let c=0;c<h.length;c+=n){let u=h.slice(c,c+n),m=0,d=new Float32Array(i);for(let l=0;l<i;l++){let f=t.slice(l*n,(l+1)*n),b=0;for(let g=0;g<n;g++)b+=u[g]*f[g];d[l]=Math.exp(b/Math.sqrt(n)),m+=d[l]}for(let l=0;l<i;l++){d[l]/=m;let f=e.slice(l*n,(l+1)*n);for(let b=0;b<n;b++)a[c+b]+=d[l]*f[b]}}return a}}function D(){return(h,t,e={})=>{let{curvature:o=-1}=e,n=Math.abs(o),r=new Float32Array(t.length/h.length);for(let s=0;s<r.length;s++){let i=s*h.length,a=0,c=0,u=0;for(let l=0;l<h.length;l++)a+=h[l]*t[i+l],c+=h[l]*h[l],u+=t[i+l]*t[i+l];let m=Math.sqrt(c+u-2*a),d=Math.acosh(1+2*n*m*m);r[s]=1/(1+d)}return r}}function k(){return(h,t={})=>{let{threshold:e=.8,maxClusters:o=10}=t,n=[],r=new Set;for(let s=0;s<h.length;s++){if(r.has(s))continue;let i=[h[s]];r.add(s);for(let c=s+1;c<h.length;c++){if(r.has(c))continue;let u=0,m=0,d=0;for(let f=0;f<h[s].length;f++)u+=h[s][f]*h[c][f],m+=h[s][f]*h[s][f],d+=h[c][f]*h[c][f];u/(Math.sqrt(m*d)||1)>e&&(i.push(h[c]),r.add(c))}let a=new Float32Array(h[s].length);for(let c of i)for(let u=0;u<a.length;u++)a[u]+=c[u]/i.length;if(n.push({memory:a,count:i.size,members:i}),n.length>=o)break}return n}}var p,M,P,W=z(()=>{"use strict";p=null,M=null,P=null});var y=class{config;codebook=null;trained=!1;constructor(t){if(this.config={dimension:t.dimension,numSubvectors:t.numSubvectors,numCentroids:t.numCentroids,maxIterations:t.maxIterations||50,convergenceThreshold:t.convergenceThreshold||1e-4},this.config.dimension%this.config.numSubvectors!==0)throw new Error(`Dimension ${this.config.dimension} must be divisible by numSubvectors ${this.config.numSubvectors}`)}async train(t){if(t.length===0)throw new Error("Training requires at least one vector");let e=this.config.dimension/this.config.numSubvectors,o=[];console.log(`[PQ] Training ${this.config.numSubvectors} subvectors with ${this.config.numCentroids} centroids each...`);for(let n=0;n<this.config.numSubvectors;n++){let r=n*e,s=r+e,i=t.map(c=>c.slice(r,s)),a=await this.kMeans(i,this.config.numCentroids);o.push(...a),((n+1)%4===0||n===this.config.numSubvectors-1)&&console.log(`[PQ] Trained ${n+1}/${this.config.numSubvectors} subvectors`)}this.codebook={subvectorDim:e,numSubvectors:this.config.numSubvectors,numCentroids:this.config.numCentroids,centroids:o},this.trained=!0,console.log("[PQ] Training complete")}async kMeans(t,e){let o=t[0].length,n=t.length,r=this.kMeansPlusPlus(t,e),s=new Uint32Array(n),i=1/0;for(let a=0;a<this.config.maxIterations;a++){let c=0;for(let d=0;d<n;d++){let l=1/0,f=0;for(let b=0;b<e;b++){let g=this.squaredDistance(t[d],r[b]);g<l&&(l=g,f=b)}s[d]=f,c+=l}if(Math.abs(i-c)<this.config.convergenceThreshold)break;i=c;let u=new Uint32Array(e),m=Array.from({length:e},()=>new Float32Array(o));for(let d=0;d<n;d++){let l=s[d];u[l]++;for(let f=0;f<o;f++)m[l][f]+=t[d][f]}for(let d=0;d<e;d++)if(u[d]>0)for(let l=0;l<o;l++)r[d][l]=m[d][l]/u[d]}return r}kMeansPlusPlus(t,e){let o=t.length,n=t[0].length,r=[],s=Math.floor(Math.random()*o);r.push(new Float32Array(t[s]));for(let i=1;i<e;i++){let a=new Float32Array(o),c=0;for(let m=0;m<o;m++){let d=1/0;for(let l of r){let f=this.squaredDistance(t[m],l);d=Math.min(d,f)}a[m]=d,c+=d}let u=Math.random()*c;for(let m=0;m<o;m++)if(u-=a[m],u<=0){r.push(new Float32Array(t[m]));break}}return r}compress(t){if(!this.trained||!this.codebook)throw new Error("Codebook must be trained before compression");let e=new Uint8Array(this.config.numSubvectors),o=this.codebook.subvectorDim,n=0;for(let r=0;r<t.length;r++)n+=t[r]*t[r];n=Math.sqrt(n);for(let r=0;r<this.config.numSubvectors;r++){let s=r*o,i=t.slice(s,s+o),a=1/0,c=0,u=r*this.config.numCentroids;for(let m=0;m<this.config.numCentroids;m++){let d=this.codebook.centroids[u+m],l=this.squaredDistance(i,d);l<a&&(a=l,c=m)}e[r]=c}return{codes:e,norm:n}}decompress(t){if(!this.codebook)throw new Error("Codebook not available");let e=new Float32Array(this.config.dimension),o=this.codebook.subvectorDim;for(let n=0;n<this.config.numSubvectors;n++){let r=t.codes[n],s=n*this.config.numCentroids,i=this.codebook.centroids[s+r],a=n*o;for(let c=0;c<o;c++)e[a+c]=i[c]}return e}asymmetricDistance(t,e){if(!this.codebook)throw new Error("Codebook not available");let o=0,n=this.codebook.subvectorDim;for(let r=0;r<this.config.numSubvectors;r++){let s=e.codes[r],i=r*this.config.numCentroids,a=this.codebook.centroids[i+s],c=r*n,u=t.slice(c,c+n);o+=this.squaredDistance(u,a)}return Math.sqrt(o)}batchCompress(t){return t.map(e=>this.compress(e))}getCompressionRatio(){let t=this.config.dimension*4,e=this.config.numSubvectors+4;return t/e}exportCodebook(){if(!this.codebook)throw new Error("No codebook to export");return JSON.stringify({config:this.config,codebook:{subvectorDim:this.codebook.subvectorDim,numSubvectors:this.codebook.numSubvectors,numCentroids:this.codebook.numCentroids,centroids:this.codebook.centroids.map(t=>Array.from(t))}})}importCodebook(t){let e=JSON.parse(t);this.config=e.config,this.codebook={subvectorDim:e.codebook.subvectorDim,numSubvectors:e.codebook.numSubvectors,numCentroids:e.codebook.numCentroids,centroids:e.codebook.centroids.map(o=>new Float32Array(o))},this.trained=!0}squaredDistance(t,e){let o=0;for(let n=0;n<t.length;n++){let r=t[n]-e[n];o+=r*r}return o}getStats(){let t=this.getCompressionRatio(),e=this.config.numSubvectors+4,o=this.codebook?this.config.numSubvectors*this.config.numCentroids*(this.config.dimension/this.config.numSubvectors)*4:0;return{trained:this.trained,compressionRatio:t,memoryPerVector:e,codebookSize:o}}};function B(h){return new y({dimension:h,numSubvectors:8,numCentroids:256,maxIterations:50})}function Q(h){return new y({dimension:h,numSubvectors:16,numCentroids:256,maxIterations:50})}function R(h){return new y({dimension:h,numSubvectors:32,numCentroids:256,maxIterations:50})}var S=class{items=[];push(t,e){this.items.push({item:t,priority:e}),this.bubbleUp(this.items.length-1)}pop(){if(this.items.length===0)return;let t=this.items[0].item,e=this.items.pop();return this.items.length>0&&(this.items[0]=e,this.bubbleDown(0)),t}peek(){var t;return(t=this.items[0])==null?void 0:t.item}size(){return this.items.length}bubbleUp(t){for(;t>0;){let e=Math.floor((t-1)/2);if(this.items[t].priority>=this.items[e].priority)break;[this.items[t],this.items[e]]=[this.items[e],this.items[t]],t=e}}bubbleDown(t){for(;;){let e=2*t+1,o=2*t+2,n=t;if(e<this.items.length&&this.items[e].priority<this.items[n].priority&&(n=e),o<this.items.length&&this.items[o].priority<this.items[n].priority&&(n=o),n===t)break;[this.items[t],this.items[n]]=[this.items[n],this.items[t]],t=n}}},A=class{config;nodes=new Map;entryPoint=null;currentId=0;ml;constructor(t={}){this.config={dimension:t.dimension||384,M:t.M||16,efConstruction:t.efConstruction||200,efSearch:t.efSearch||50,ml:t.ml||1/Math.log(2),maxLayers:t.maxLayers||16,distanceFunction:t.distanceFunction||"cosine"},this.ml=this.config.ml}add(t,e){let o=e!==void 0?e:this.currentId++,n=this.randomLevel(),r={id:o,vector:t,level:n,connections:new Map};for(let a=0;a<=n;a++)r.connections.set(a,[]);if(this.entryPoint===null)return this.entryPoint=o,this.nodes.set(o,r),o;let s=this.entryPoint,i=s;for(let a=this.nodes.get(s).level;a>n;a--)i=this.searchLayer(t,i,1,a)[0];for(let a=Math.min(n,this.nodes.get(s).level);a>=0;a--){let c=this.searchLayer(t,i,this.config.efConstruction,a),u=a===0?this.config.M*2:this.config.M,m=this.selectNeighbors(t,c,u);for(let d of m){this.connect(o,d,a),this.connect(d,o,a);let l=this.nodes.get(d),f=l.connections.get(a);if(f.length>u){let b=this.selectNeighbors(l.vector,f,u);l.connections.set(a,b)}}i=c[0]}return n>this.nodes.get(this.entryPoint).level&&(this.entryPoint=o),this.nodes.set(o,r),o}search(t,e,o){if(this.entryPoint===null)return[];o=o||Math.max(this.config.efSearch,e);let n=this.entryPoint,r=n;for(let i=this.nodes.get(n).level;i>0;i--)r=this.searchLayer(t,r,1,i)[0];return this.searchLayer(t,r,o,0).slice(0,e).map(i=>({id:i,distance:this.distance(t,this.nodes.get(i).vector),vector:this.nodes.get(i).vector}))}searchLayer(t,e,o,n){let r=new Set,s=new S,i=new S,a=this.distance(t,this.nodes.get(e).vector);for(s.push(e,a),i.push(e,-a),r.add(e);s.size()>0;){let u=s.pop(),m=-i.peek();if(this.distance(t,this.nodes.get(u).vector)>m)break;let l=this.nodes.get(u).connections.get(n)||[];for(let f of l){if(r.has(f))continue;r.add(f);let b=this.distance(t,this.nodes.get(f).vector),g=-i.peek();(b<g||i.size()<o)&&(s.push(f,b),i.push(f,-b),i.size()>o&&i.pop())}}let c=[];for(;i.size()>0;)c.unshift(i.pop());return c}selectNeighbors(t,e,o){return e.length<=o?e:e.map(r=>({id:r,distance:this.distance(t,this.nodes.get(r).vector)})).sort((r,s)=>r.distance-s.distance).slice(0,o).map(r=>r.id)}connect(t,e,o){let r=this.nodes.get(t).connections.get(o);r.includes(e)||r.push(e)}randomLevel(){let t=0;for(;Math.random()<this.ml&&t<this.config.maxLayers-1;)t++;return t}distance(t,e){switch(this.config.distanceFunction){case"cosine":return 1-this.cosineSimilarity(t,e);case"euclidean":return this.euclideanDistance(t,e);case"manhattan":return this.manhattanDistance(t,e);default:return 1-this.cosineSimilarity(t,e)}}cosineSimilarity(t,e){let o=0,n=0,r=0;for(let s=0;s<t.length;s++)o+=t[s]*e[s],n+=t[s]*t[s],r+=e[s]*e[s];return o/(Math.sqrt(n)*Math.sqrt(r))}euclideanDistance(t,e){let o=0;for(let n=0;n<t.length;n++){let r=t[n]-e[n];o+=r*r}return Math.sqrt(o)}manhattanDistance(t,e){let o=0;for(let n=0;n<t.length;n++)o+=Math.abs(t[n]-e[n]);return o}getStats(){if(this.nodes.size===0)return{numNodes:0,numLayers:0,avgConnections:0,entryPointLevel:0,memoryBytes:0};let t=Math.max(...Array.from(this.nodes.values()).map(a=>a.level)),e=0;for(let a of this.nodes.values())for(let c of a.connections.values())e+=c.length;let o=e/this.nodes.size,n=this.config.dimension*4,r=o*4,i=this.nodes.size*(n+r+100);return{numNodes:this.nodes.size,numLayers:t+1,avgConnections:o,entryPointLevel:this.entryPoint?this.nodes.get(this.entryPoint).level:0,memoryBytes:i}}export(){let t={config:this.config,entryPoint:this.entryPoint,currentId:this.currentId,nodes:Array.from(this.nodes.entries()).map(([e,o])=>({id:e,vector:Array.from(o.vector),level:o.level,connections:Array.from(o.connections.entries())}))};return JSON.stringify(t)}import(t){let e=JSON.parse(t);this.config=e.config,this.entryPoint=e.entryPoint,this.currentId=e.currentId,this.nodes.clear();for(let o of e.nodes){let n={id:o.id,vector:new Float32Array(o.vector),level:o.level,connections:new Map(o.connections)};this.nodes.set(o.id,n)}}clear(){this.nodes.clear(),this.entryPoint=null,this.currentId=0}size(){return this.nodes.size}};function q(h){return new A({dimension:h,M:16,efConstruction:200,efSearch:50})}function G(h){return new A({dimension:h,M:8,efConstruction:100,efSearch:30})}function O(h){return new A({dimension:h,M:32,efConstruction:400,efSearch:100})}var w=class{config;nodes=new Map;edges=[];attentionWeights=new Map;constructor(t={}){this.config={hiddenDim:t.hiddenDim||64,numHeads:t.numHeads||4,dropout:t.dropout||.1,learningRate:t.learningRate||.01,attentionType:t.attentionType||"gat"}}addNode(t,e){this.nodes.set(t,{id:t,features:e,neighbors:[]})}addEdge(t,e,o=1){this.edges.push({from:t,to:e,weight:o});let n=this.nodes.get(t),r=this.nodes.get(e);n&&!n.neighbors.includes(e)&&n.neighbors.push(e),r&&!r.neighbors.includes(t)&&r.neighbors.push(t)}graphAttention(t){let e=this.nodes.get(t);if(!e)throw new Error(`Node ${t} not found`);let o=e.neighbors;if(o.length===0)return e.features;let n=Math.floor(this.config.hiddenDim/this.config.numHeads),r=new Float32Array(this.config.hiddenDim);for(let s=0;s<this.config.numHeads;s++){let i=0,a=new Float32Array(n);for(let u of o){let m=this.nodes.get(u),d=this.computeAttentionScore(e.features,m.features,s);i+=d;for(let l=0;l<n&&l<m.features.length;l++)a[l]+=d*m.features[l]}if(i>0)for(let u=0;u<n;u++)a[u]/=i;let c=s*n;for(let u=0;u<n;u++)r[c+u]=a[u]}for(let s=0;s<r.length;s++)r[s]=r[s]>0?r[s]:.01*r[s];return r}computeAttentionScore(t,e,o){let n=0,r=Math.min(t.length,e.length);for(let s=0;s<r;s++)n+=t[s]*e[s];return Math.exp(n/Math.sqrt(r))}messagePass(){let t=new Map;for(let[e]of this.nodes)t.set(e,this.graphAttention(e));return t}update(t){for(let[e,o]of t){let n=this.nodes.get(e);n&&(n.features=o)}}computeGraphEmbedding(t,e=2){new Map().set(t,this.nodes.get(t).features);for(let n=0;n<e;n++){let r=this.messagePass();this.update(r)}return this.nodes.get(t).features}getStats(){return{numNodes:this.nodes.size,numEdges:this.edges.length,avgDegree:this.edges.length/Math.max(this.nodes.size,1),config:this.config}}},x=class{config;constructor(t={}){this.config={lambda:t.lambda||.7,metric:t.metric||"cosine"}}rerank(t,e,o){if(e.length===0)return[];let n=[],r=new Set(e.map((a,c)=>c)),s=0,i=-1/0;for(let a=0;a<e.length;a++)e[a].score>i&&(i=e[a].score,s=a);for(n.push(e[s].id),r.delete(s);n.length<o&&r.size>0;){let a=-1/0,c=-1;for(let u of r){let m=e[u],d=this.similarity(t,m.vector),l=-1/0;for(let b of n){let g=e.find(E=>E.id===b),T=this.similarity(m.vector,g.vector);l=Math.max(l,T)}let f=this.config.lambda*d-(1-this.config.lambda)*l;f>a&&(a=f,c=u)}if(c!==-1)n.push(e[c].id),r.delete(c);else break}return n}similarity(t,e){return this.config.metric==="cosine"?this.cosineSimilarity(t,e):1/(1+this.euclideanDistance(t,e))}cosineSimilarity(t,e){let o=0,n=0,r=0;for(let s=0;s<t.length;s++)o+=t[s]*e[s],n+=t[s]*t[s],r+=e[s]*e[s];return o/(Math.sqrt(n)*Math.sqrt(r))}euclideanDistance(t,e){let o=0;for(let n=0;n<t.length;n++){let r=t[n]-e[n];o+=r*r}return Math.sqrt(o)}setLambda(t){this.config.lambda=Math.max(0,Math.min(1,t))}},F=class{static compress(t,e){if(t.length===0)return[];let o=t[0].length;if(e>=o)return t;let n=t.map(u=>Array.from(u)),r=this.computeMean(n),s=n.map(u=>u.map((m,d)=>m-r[d])),i=this.computeCovariance(s),a=this.powerIteration(i,e);return s.map(u=>{let m=new Float32Array(e);for(let d=0;d<e;d++){let l=0;for(let f=0;f<o;f++)l+=u[f]*a[d][f];m[d]=l}return m})}static computeMean(t){let e=t.length,o=t[0].length,n=new Array(o).fill(0);for(let r of t)for(let s=0;s<o;s++)n[s]+=r[s];return n.map(r=>r/e)}static computeCovariance(t){let e=t.length,o=t[0].length,n=Array.from({length:o},()=>new Array(o).fill(0));for(let r=0;r<o;r++)for(let s=0;s<=r;s++){let i=0;for(let a of t)i+=a[r]*a[s];n[r][s]=n[s][r]=i/e}return n}static powerIteration(t,e,o=100){let n=t.length,r=[];for(let s=0;s<e;s++){let i=new Array(n).fill(0).map(()=>Math.random()-.5);for(let a=0;a<o;a++){let c=new Array(n).fill(0);for(let m=0;m<n;m++)for(let d=0;d<n;d++)c[m]+=t[m][d]*i[d];for(let m of r){let d=0;for(let l=0;l<n;l++)d+=c[l]*m[l];for(let l=0;l<n;l++)c[l]-=d*m[l]}let u=0;for(let m of c)u+=m*m;if(u=Math.sqrt(u),u<1e-10)break;i=c.map(m=>m/u)}r.push(i)}return r}},C=class{static batchCosineSimilarity(t,e){let o=new Float32Array(e.length),n=0;for(let r=0;r<t.length;r++)n+=t[r]*t[r];n=Math.sqrt(n);for(let r=0;r<e.length;r++){let s=e[r],i=0,a=0;for(let c=0;c<t.length;c++)i+=t[c]*s[c],a+=s[c]*s[c];a=Math.sqrt(a),o[r]=i/(n*a)}return o}static batchNormalize(t){return t.map(e=>{let o=0;for(let r=0;r<e.length;r++)o+=e[r]*e[r];o=Math.sqrt(o);let n=new Float32Array(e.length);for(let r=0;r<e.length;r++)n[r]=e[r]/o;return n})}};var v=class{wasmModule=null;loadingState="idle";loadError=null;config;constructor(t={}){this.config={dimension:384,numHeads:4,blockSize:64,curvature:-1,useWASM:!0,...t}}getLoadingState(){return this.loadingState}getError(){return this.loadError}async initialize(){if(this.loadingState!=="loaded"){if(this.loadingState==="loading"){for(;this.loadingState==="loading";)await new Promise(t=>setTimeout(t,50));return}this.loadingState="loading";try{if(!this.config.useWASM){this.loadingState="loaded";return}let t=await Promise.resolve().then(()=>(W(),I));this.wasmModule=await t.initWASM(),this.loadingState="loaded"}catch(t){this.loadError=t instanceof Error?t:new Error(String(t)),this.loadingState="error",console.warn("WASM initialization failed, using fallback:",this.loadError.message)}}}async flashAttention(t,e,o){var n;if(await this.initialize(),(n=this.wasmModule)!=null&&n.flashAttention)try{return this.wasmModule.flashAttention(t,e,o,this.config)}catch(r){console.warn("WASM flash attention failed, using fallback:",r)}return this.flashAttentionFallback(t,e,o)}async hyperbolicAttention(t,e){var o;if(await this.initialize(),(o=this.wasmModule)!=null&&o.hyperbolicAttention)try{return this.wasmModule.hyperbolicAttention(t,e,this.config)}catch(n){console.warn("WASM hyperbolic attention failed, using fallback:",n)}return this.hyperbolicAttentionFallback(t,e)}async consolidateMemories(t,e={}){var n;await this.initialize();let o={threshold:.8,maxClusters:10,minClusterSize:1,...e};if((n=this.wasmModule)!=null&&n.memoryConsolidation)try{return this.wasmModule.memoryConsolidation(t,o)}catch(r){console.warn("WASM memory consolidation failed, using fallback:",r)}return this.consolidateMemoriesFallback(t,o)}dispose(){this.wasmModule=null,this.loadingState="idle",this.loadError=null}flashAttentionFallback(t,e,o){let{dimension:n=384}=this.config,r=e.length/n,s=new Float32Array(t.length);for(let i=0;i<t.length;i+=n){let a=t.slice(i,i+n),c=0,u=new Float32Array(r);for(let m=0;m<r;m++){let d=e.slice(m*n,(m+1)*n),l=0;for(let f=0;f<n;f++)l+=a[f]*d[f];u[m]=Math.exp(l/Math.sqrt(n)),c+=u[m]}for(let m=0;m<r;m++){u[m]/=c||1;let d=o.slice(m*n,(m+1)*n);for(let l=0;l<n;l++)s[i+l]+=u[m]*d[l]}}return s}hyperbolicAttentionFallback(t,e){let{curvature:o=-1}=this.config,n=Math.abs(o),r=new Float32Array(e.length/t.length);for(let s=0;s<r.length;s++){let i=s*t.length,a=0,c=0,u=0;for(let l=0;l<t.length;l++)a+=t[l]*e[i+l],c+=t[l]*t[l],u+=e[i+l]*e[i+l];let m=Math.sqrt(c+u-2*a),d=Math.acosh(1+2*n*m*m);r[s]=1/(1+d)}return r}consolidateMemoriesFallback(t,e){let{threshold:o=.8,maxClusters:n=10,minClusterSize:r=1}=e,s=[],i=new Set;for(let a=0;a<t.length;a++){if(i.has(a))continue;let c=[t[a]];i.add(a);for(let u=a+1;u<t.length;u++){if(i.has(u))continue;this.cosineSimilarity(t[a],t[u])>o&&(c.push(t[u]),i.add(u))}if(c.length>=r){let u=new Float32Array(t[a].length);for(let d of c)for(let l=0;l<u.length;l++)u[l]+=d[l]/c.length;let m=0;for(let d=0;d<u.length;d++)m+=u[d]*u[d];if(m=Math.sqrt(m),m>0)for(let d=0;d<u.length;d++)u[d]/=m;s.push({memory:u,count:c.length,members:c})}if(s.length>=n)break}return s}cosineSimilarity(t,e){let o=0,n=0,r=0;for(let i=0;i<t.length;i++)o+=t[i]*e[i],n+=t[i]*t[i],r+=e[i]*e[i];let s=Math.sqrt(n*r);return s>0?o/s:0}};function U(h){return new v(h)}function $(){return new v({dimension:256,numHeads:2,blockSize:32,useWASM:!0})}function V(){return new v({dimension:768,numHeads:8,blockSize:128,useWASM:!0})}function ot(){return{indexedDB:"indexedDB"in globalThis,broadcastChannel:"BroadcastChannel"in globalThis,webWorkers:typeof globalThis.Worker<"u",wasmSIMD:J(),sharedArrayBuffer:typeof SharedArrayBuffer<"u"}}async function J(){try{if(typeof globalThis.WebAssembly>"u")return!1;let h=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,253,12,253,12,253,84,11]),t=globalThis.WebAssembly;return await t.instantiate(h)instanceof t.Instance}catch{return!1}}var Z={pq:{enabled:!1},hnsw:{enabled:!1},gnn:{enabled:!0,numHeads:2},mmr:{enabled:!0,lambda:.7},svd:{enabled:!1}},K={pq:{enabled:!0,subvectors:8},hnsw:{enabled:!0,M:16},gnn:{enabled:!0,numHeads:4},mmr:{enabled:!0,lambda:.7},svd:{enabled:!1}},Y={pq:{enabled:!0,subvectors:16},hnsw:{enabled:!0,M:32},gnn:{enabled:!0,numHeads:4},mmr:{enabled:!0,lambda:.7},svd:{enabled:!0,targetDim:128}},st={pq:{enabled:!0,subvectors:32},hnsw:{enabled:!0,M:8},gnn:{enabled:!1},mmr:{enabled:!1},svd:{enabled:!0,targetDim:64}},it={pq:{enabled:!1},hnsw:{enabled:!0,M:32,efSearch:100},gnn:{enabled:!1},mmr:{enabled:!1},svd:{enabled:!1}},at={pq:{enabled:!1},hnsw:{enabled:!0,M:48,efConstruction:400},gnn:{enabled:!0,numHeads:8},mmr:{enabled:!0,lambda:.8},svd:{enabled:!1}},ct={major:2,minor:0,patch:0,prerelease:"alpha.2",features:"advanced",full:"2.0.0-alpha.2+advanced"};function lt(h,t,e){var s,i,a;let o=h*t*4;if((s=e.pq)!=null&&s.enabled){let c=e.pq.subvectors||8;o=h*(c+4)}if((i=e.svd)!=null&&i.enabled){let c=e.svd.targetDim||t/2;o=h*c*4}let n=0;if((a=e.hnsw)!=null&&a.enabled){let u=(e.hnsw.M||16)*1.5;n=h*u*4}let r=o+n;return{vectors:o,index:n,total:r,totalMB:r/(1024*1024)}}function ut(h,t){return h<1e3?{name:"SMALL_DATASET",config:Z,reason:"Small dataset, linear search is fast enough"}:h<1e4?{name:"MEDIUM_DATASET",config:K,reason:"Medium dataset, HNSW + PQ8 recommended"}:{name:"LARGE_DATASET",config:Y,reason:"Large dataset, aggressive compression + HNSW recommended"}}async function mt(h,t=100,e=10,o=384){let n=[];for(let r=0;r<t;r++){let s=new Float32Array(o);for(let c=0;c<o;c++)s[c]=Math.random()-.5;let i=performance.now();h(s,e);let a=performance.now();n.push(a-i)}return n.sort((r,s)=>r-s),{avgTimeMs:n.reduce((r,s)=>r+s,0)/n.length,minTimeMs:n[0],maxTimeMs:n[n.length-1],p50Ms:n[Math.floor(n.length*.5)],p95Ms:n[Math.floor(n.length*.95)],p99Ms:n[Math.floor(n.length*.99)]}}export{v as AttentionBrowser,C as BatchProcessor,w as GraphNeuralNetwork,A as HNSWIndex,Y as LARGE_DATASET_CONFIG,K as MEDIUM_DATASET_CONFIG,st as MEMORY_OPTIMIZED_CONFIG,x as MaximalMarginalRelevance,y as ProductQuantization,at as QUALITY_OPTIMIZED_CONFIG,Z as SMALL_DATASET_CONFIG,it as SPEED_OPTIMIZED_CONFIG,F as TensorCompression,ct as VERSION,mt as benchmarkSearch,V as createAccurateAttention,O as createAccurateHNSW,U as createAttention,$ as createFastAttention,G as createFastHNSW,q as createHNSW,Q as createPQ16,R as createPQ32,B as createPQ8,ot as detectFeatures,lt as estimateMemoryUsage,ut as recommendConfig};
|
|
3
3
|
//# sourceMappingURL=agentdb.browser.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/backends/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/backends/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMtE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAC3C,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO,CAAC;QACd,GAAG,EAAE,OAAO,CAAC;QACb,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA6DhE;AAUD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,aAAa,CAAC,CA+ExB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAUlE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAIzE"}
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
* - Clear error messages for missing dependencies
|
|
13
13
|
*/
|
|
14
14
|
import { RuVectorBackend } from './ruvector/RuVectorBackend.js';
|
|
15
|
-
import { HNSWLibBackend } from './hnswlib/HNSWLibBackend.js';
|
|
16
15
|
/**
|
|
17
16
|
* Detect available vector backends
|
|
18
17
|
*/
|
|
@@ -77,6 +76,13 @@ export async function detectBackends() {
|
|
|
77
76
|
}
|
|
78
77
|
return result;
|
|
79
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Lazy-load HNSWLibBackend to avoid import failures on systems without build tools
|
|
81
|
+
*/
|
|
82
|
+
async function createHNSWLibBackend(config) {
|
|
83
|
+
const { HNSWLibBackend } = await import('./hnswlib/HNSWLibBackend.js');
|
|
84
|
+
return new HNSWLibBackend(config);
|
|
85
|
+
}
|
|
80
86
|
/**
|
|
81
87
|
* Create vector backend with automatic detection
|
|
82
88
|
*
|
|
@@ -102,7 +108,8 @@ export async function createBackend(type, config) {
|
|
|
102
108
|
throw new Error('HNSWLib not available.\n' +
|
|
103
109
|
'Install with: npm install hnswlib-node');
|
|
104
110
|
}
|
|
105
|
-
|
|
111
|
+
// Lazy-load HNSWLibBackend to avoid module-level import failures
|
|
112
|
+
backend = await createHNSWLibBackend(config);
|
|
106
113
|
}
|
|
107
114
|
else {
|
|
108
115
|
// Auto-detect best available backend
|
|
@@ -121,7 +128,8 @@ export async function createBackend(type, config) {
|
|
|
121
128
|
if (detection.hnswlib) {
|
|
122
129
|
console.log('[AgentDB] RuVector initialization failed, falling back to HNSWLib');
|
|
123
130
|
console.log(`[AgentDB] Reason: ${errorMessage.split('\n')[0]}`);
|
|
124
|
-
|
|
131
|
+
// Lazy-load HNSWLibBackend for fallback
|
|
132
|
+
backend = await createHNSWLibBackend(config);
|
|
125
133
|
console.log('[AgentDB] Using HNSWLib backend (fallback)');
|
|
126
134
|
}
|
|
127
135
|
else {
|
|
@@ -131,7 +139,8 @@ export async function createBackend(type, config) {
|
|
|
131
139
|
}
|
|
132
140
|
}
|
|
133
141
|
else if (detection.hnswlib) {
|
|
134
|
-
|
|
142
|
+
// Lazy-load HNSWLibBackend when it's the only option
|
|
143
|
+
backend = await createHNSWLibBackend(config);
|
|
135
144
|
console.log('[AgentDB] Using HNSWLib backend (fallback)');
|
|
136
145
|
}
|
|
137
146
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/backends/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/backends/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HNSWLibBackend.d.ts","sourceRoot":"","sources":["../../../../src/backends/hnswlib/HNSWLibBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"HNSWLibBackend.d.ts","sourceRoot":"","sources":["../../../../src/backends/hnswlib/HNSWLibBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,qBAAqB,CAAC;AA2C7B,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAEnC,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,MAAM,CAAe;IAG7B,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,SAAS,CAAa;IAG9B,OAAO,CAAC,UAAU,CAA0B;gBAEhC,MAAM,EAAE,YAAY;IAgBhC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA6BjF;;OAEG;IACH,WAAW,CACT,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,YAAY,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,CAAC,GACD,IAAI;IAMP;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,EAAE;IAuD/E;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAgB3B;;OAEG;IACH,QAAQ,IAAI,WAAW;IAYvB;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC3C;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD3C;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;;OAGG;IACH,YAAY,CAAC,eAAe,GAAE,MAAY,GAAG,OAAO;IAOpD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ7B;;OAEG;IACH,OAAO,IAAI,OAAO;CAGnB"}
|
|
@@ -13,11 +13,36 @@
|
|
|
13
13
|
* Note: hnswlib-node doesn't support true deletion - removed IDs are
|
|
14
14
|
* tracked but vectors remain until rebuild.
|
|
15
15
|
*/
|
|
16
|
-
import hnswlibNode from 'hnswlib-node';
|
|
17
16
|
import * as fs from 'fs/promises';
|
|
18
17
|
import * as fsSync from 'fs';
|
|
19
18
|
import * as path from 'path';
|
|
20
|
-
|
|
19
|
+
// Lazy-loaded hnswlib-node to avoid import failures on systems without build tools
|
|
20
|
+
let HierarchicalNSW = null;
|
|
21
|
+
let hnswlibLoadAttempted = false;
|
|
22
|
+
let hnswlibLoadError = null;
|
|
23
|
+
async function loadHnswlib() {
|
|
24
|
+
if (hnswlibLoadAttempted) {
|
|
25
|
+
if (hnswlibLoadError)
|
|
26
|
+
throw hnswlibLoadError;
|
|
27
|
+
return HierarchicalNSW !== null;
|
|
28
|
+
}
|
|
29
|
+
hnswlibLoadAttempted = true;
|
|
30
|
+
try {
|
|
31
|
+
const hnswlibNode = await import('hnswlib-node');
|
|
32
|
+
HierarchicalNSW = hnswlibNode.default?.HierarchicalNSW
|
|
33
|
+
|| hnswlibNode.HierarchicalNSW;
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
hnswlibLoadError = new Error(`hnswlib-node failed to load: ${error.message}\n` +
|
|
38
|
+
'This usually means native dependencies are missing.\n' +
|
|
39
|
+
'Either:\n' +
|
|
40
|
+
' 1. Install build tools and run npm rebuild\n' +
|
|
41
|
+
' 2. Use forceWasm: true to skip hnswlib entirely\n' +
|
|
42
|
+
' 3. Install agentdb/wasm for WASM-only mode');
|
|
43
|
+
throw hnswlibLoadError;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
21
46
|
export class HNSWLibBackend {
|
|
22
47
|
name = 'hnswlib';
|
|
23
48
|
index = null;
|
|
@@ -49,6 +74,8 @@ export class HNSWLibBackend {
|
|
|
49
74
|
* Must be called after construction
|
|
50
75
|
*/
|
|
51
76
|
async initialize() {
|
|
77
|
+
// Lazy load hnswlib-node (avoids import failures on systems without build tools)
|
|
78
|
+
await loadHnswlib();
|
|
52
79
|
// Map metric names to hnswlib format
|
|
53
80
|
const metricMap = {
|
|
54
81
|
cosine: 'cosine',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HNSWLibBackend.js","sourceRoot":"","sources":["../../../../src/backends/hnswlib/HNSWLibBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,
|
|
1
|
+
{"version":3,"file":"HNSWLibBackend.js","sourceRoot":"","sources":["../../../../src/backends/hnswlib/HNSWLibBackend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentDB Benchmark Suite
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive benchmarking framework for measuring:
|
|
5
|
+
* - Vector insert performance (batch and single)
|
|
6
|
+
* - Vector search latency (p50, p95, p99)
|
|
7
|
+
* - Memory consumption
|
|
8
|
+
* - Concurrent read/write performance
|
|
9
|
+
* - Quantization performance comparison
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* import { BenchmarkSuite, runBenchmarks } from './benchmark/BenchmarkSuite';
|
|
13
|
+
*
|
|
14
|
+
* const suite = new BenchmarkSuite();
|
|
15
|
+
* const report = await suite.runAll();
|
|
16
|
+
* console.log(JSON.stringify(report, null, 2));
|
|
17
|
+
*
|
|
18
|
+
* CLI integration:
|
|
19
|
+
* npx tsx packages/agentdb/src/benchmark/BenchmarkSuite.ts
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Latency statistics with percentiles
|
|
23
|
+
*/
|
|
24
|
+
export interface LatencyStats {
|
|
25
|
+
/** 50th percentile (median) in milliseconds */
|
|
26
|
+
p50: number;
|
|
27
|
+
/** 95th percentile in milliseconds */
|
|
28
|
+
p95: number;
|
|
29
|
+
/** 99th percentile in milliseconds */
|
|
30
|
+
p99: number;
|
|
31
|
+
/** Mean latency in milliseconds */
|
|
32
|
+
mean: number;
|
|
33
|
+
/** Maximum latency in milliseconds */
|
|
34
|
+
max: number;
|
|
35
|
+
/** Minimum latency in milliseconds */
|
|
36
|
+
min: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Result from a single benchmark run
|
|
40
|
+
*/
|
|
41
|
+
export interface BenchmarkResult {
|
|
42
|
+
/** Benchmark name */
|
|
43
|
+
name: string;
|
|
44
|
+
/** Operations per second */
|
|
45
|
+
opsPerSecond: number;
|
|
46
|
+
/** Latency statistics */
|
|
47
|
+
latencyMs: LatencyStats;
|
|
48
|
+
/** Memory usage in megabytes */
|
|
49
|
+
memoryMB: number;
|
|
50
|
+
/** Total benchmark duration in milliseconds */
|
|
51
|
+
duration: number;
|
|
52
|
+
/** Total operations performed */
|
|
53
|
+
operations: number;
|
|
54
|
+
/** Optional additional metrics */
|
|
55
|
+
metadata?: Record<string, unknown>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Complete benchmark report
|
|
59
|
+
*/
|
|
60
|
+
export interface BenchmarkReport {
|
|
61
|
+
/** Timestamp of the benchmark run */
|
|
62
|
+
timestamp: string;
|
|
63
|
+
/** Platform information */
|
|
64
|
+
platform: {
|
|
65
|
+
os: string;
|
|
66
|
+
arch: string;
|
|
67
|
+
nodeVersion: string;
|
|
68
|
+
};
|
|
69
|
+
/** Backend information */
|
|
70
|
+
backend: {
|
|
71
|
+
name: string;
|
|
72
|
+
isNative?: boolean;
|
|
73
|
+
};
|
|
74
|
+
/** Configuration used for benchmarks */
|
|
75
|
+
config: {
|
|
76
|
+
vectorDimension: number;
|
|
77
|
+
warmupIterations: number;
|
|
78
|
+
};
|
|
79
|
+
/** Individual benchmark results */
|
|
80
|
+
results: BenchmarkResult[];
|
|
81
|
+
/** Summary statistics */
|
|
82
|
+
summary: {
|
|
83
|
+
totalDuration: number;
|
|
84
|
+
benchmarksRun: number;
|
|
85
|
+
benchmarksPassed: number;
|
|
86
|
+
peakMemoryMB: number;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Comparison between two benchmark runs
|
|
91
|
+
*/
|
|
92
|
+
export interface ComparisonReport {
|
|
93
|
+
/** Baseline report timestamp */
|
|
94
|
+
baselineTimestamp: string;
|
|
95
|
+
/** Current report timestamp */
|
|
96
|
+
currentTimestamp: string;
|
|
97
|
+
/** Comparison for each benchmark */
|
|
98
|
+
comparisons: Array<{
|
|
99
|
+
name: string;
|
|
100
|
+
baseline: BenchmarkResult | null;
|
|
101
|
+
current: BenchmarkResult | null;
|
|
102
|
+
/** Percentage change in ops/sec (positive = improvement) */
|
|
103
|
+
opsPerSecondChange: number | null;
|
|
104
|
+
/** Percentage change in p99 latency (negative = improvement) */
|
|
105
|
+
p99LatencyChange: number | null;
|
|
106
|
+
/** Percentage change in memory (negative = improvement) */
|
|
107
|
+
memoryChange: number | null;
|
|
108
|
+
/** Overall assessment */
|
|
109
|
+
status: 'improved' | 'regressed' | 'unchanged' | 'new' | 'removed';
|
|
110
|
+
}>;
|
|
111
|
+
/** Summary of changes */
|
|
112
|
+
summary: {
|
|
113
|
+
improved: number;
|
|
114
|
+
regressed: number;
|
|
115
|
+
unchanged: number;
|
|
116
|
+
new: number;
|
|
117
|
+
removed: number;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Benchmark configuration options
|
|
122
|
+
*/
|
|
123
|
+
export interface BenchmarkConfig {
|
|
124
|
+
/** Vector dimension for tests (default: 384) */
|
|
125
|
+
vectorDimension?: number;
|
|
126
|
+
/** Number of warmup iterations before measuring (default: 100) */
|
|
127
|
+
warmupIterations?: number;
|
|
128
|
+
/** Vector counts for insert benchmarks (default: [1000, 10000, 100000]) */
|
|
129
|
+
insertCounts?: number[];
|
|
130
|
+
/** Number of search queries to measure (default: 1000) */
|
|
131
|
+
searchQueries?: number;
|
|
132
|
+
/** k value for k-NN search (default: 10) */
|
|
133
|
+
searchK?: number;
|
|
134
|
+
/** Concurrency levels to test (default: [1, 4, 8, 16]) */
|
|
135
|
+
concurrencyLevels?: number[];
|
|
136
|
+
/** Whether to run memory-intensive tests (default: true) */
|
|
137
|
+
runMemoryTests?: boolean;
|
|
138
|
+
/** Whether to run quantization tests (default: true) */
|
|
139
|
+
runQuantizationTests?: boolean;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Abstract base class for benchmarks
|
|
143
|
+
*/
|
|
144
|
+
export declare abstract class Benchmark {
|
|
145
|
+
/** Unique benchmark name */
|
|
146
|
+
abstract readonly name: string;
|
|
147
|
+
/** Description of what this benchmark measures */
|
|
148
|
+
abstract readonly description: string;
|
|
149
|
+
/**
|
|
150
|
+
* Setup phase - prepare resources before benchmarking
|
|
151
|
+
*/
|
|
152
|
+
abstract setup(): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* Run the benchmark and return results
|
|
155
|
+
*/
|
|
156
|
+
abstract run(): Promise<BenchmarkResult>;
|
|
157
|
+
/**
|
|
158
|
+
* Cleanup phase - release resources after benchmarking
|
|
159
|
+
*/
|
|
160
|
+
abstract teardown(): Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Generate a random normalized vector
|
|
163
|
+
*/
|
|
164
|
+
protected generateRandomVector(dimension: number): Float32Array;
|
|
165
|
+
/**
|
|
166
|
+
* Generate multiple random vectors
|
|
167
|
+
*/
|
|
168
|
+
protected generateRandomVectors(count: number, dimension: number): Float32Array[];
|
|
169
|
+
/**
|
|
170
|
+
* Calculate latency statistics from measurements
|
|
171
|
+
*/
|
|
172
|
+
protected calculateLatencyStats(measurements: number[]): LatencyStats;
|
|
173
|
+
/**
|
|
174
|
+
* Get current memory usage in MB
|
|
175
|
+
*/
|
|
176
|
+
protected getMemoryUsageMB(): number;
|
|
177
|
+
/**
|
|
178
|
+
* Force garbage collection if available
|
|
179
|
+
*/
|
|
180
|
+
protected forceGC(): void;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Vector Insert Benchmark
|
|
184
|
+
*
|
|
185
|
+
* Tests batch insert performance at different scales:
|
|
186
|
+
* - 1K vectors (warm cache scenarios)
|
|
187
|
+
* - 10K vectors (typical use case)
|
|
188
|
+
* - 100K vectors (stress test)
|
|
189
|
+
*/
|
|
190
|
+
export declare class VectorInsertBenchmark extends Benchmark {
|
|
191
|
+
readonly name = "VectorInsert";
|
|
192
|
+
readonly description = "Batch insert performance at different scales";
|
|
193
|
+
private backend;
|
|
194
|
+
private config;
|
|
195
|
+
private vectors1K;
|
|
196
|
+
private vectors10K;
|
|
197
|
+
private vectors100K;
|
|
198
|
+
constructor(config?: BenchmarkConfig);
|
|
199
|
+
setup(): Promise<void>;
|
|
200
|
+
run(): Promise<BenchmarkResult>;
|
|
201
|
+
teardown(): Promise<void>;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Vector Search Benchmark
|
|
205
|
+
*
|
|
206
|
+
* Tests k-NN search latency with percentile measurements
|
|
207
|
+
*/
|
|
208
|
+
export declare class VectorSearchBenchmark extends Benchmark {
|
|
209
|
+
readonly name = "VectorSearch";
|
|
210
|
+
readonly description = "k-NN search latency (p50, p95, p99)";
|
|
211
|
+
private backend;
|
|
212
|
+
private config;
|
|
213
|
+
private queryVectors;
|
|
214
|
+
constructor(config?: BenchmarkConfig);
|
|
215
|
+
setup(): Promise<void>;
|
|
216
|
+
run(): Promise<BenchmarkResult>;
|
|
217
|
+
teardown(): Promise<void>;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Memory Usage Benchmark
|
|
221
|
+
*
|
|
222
|
+
* Tracks memory consumption at different scales
|
|
223
|
+
*/
|
|
224
|
+
export declare class MemoryUsageBenchmark extends Benchmark {
|
|
225
|
+
readonly name = "MemoryUsage";
|
|
226
|
+
readonly description = "Memory consumption tracking";
|
|
227
|
+
private backend;
|
|
228
|
+
private config;
|
|
229
|
+
constructor(config?: BenchmarkConfig);
|
|
230
|
+
setup(): Promise<void>;
|
|
231
|
+
run(): Promise<BenchmarkResult>;
|
|
232
|
+
teardown(): Promise<void>;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Concurrency Benchmark
|
|
236
|
+
*
|
|
237
|
+
* Tests concurrent read/write performance
|
|
238
|
+
*/
|
|
239
|
+
export declare class ConcurrencyBenchmark extends Benchmark {
|
|
240
|
+
readonly name = "Concurrency";
|
|
241
|
+
readonly description = "Concurrent read/write performance";
|
|
242
|
+
private backend;
|
|
243
|
+
private config;
|
|
244
|
+
constructor(config?: BenchmarkConfig);
|
|
245
|
+
setup(): Promise<void>;
|
|
246
|
+
run(): Promise<BenchmarkResult>;
|
|
247
|
+
teardown(): Promise<void>;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Quantization Benchmark
|
|
251
|
+
*
|
|
252
|
+
* Compares quantized vs unquantized performance
|
|
253
|
+
*/
|
|
254
|
+
export declare class QuantizationBenchmark extends Benchmark {
|
|
255
|
+
readonly name = "Quantization";
|
|
256
|
+
readonly description = "Quantized vs unquantized performance comparison";
|
|
257
|
+
private config;
|
|
258
|
+
constructor(config?: BenchmarkConfig);
|
|
259
|
+
setup(): Promise<void>;
|
|
260
|
+
run(): Promise<BenchmarkResult>;
|
|
261
|
+
teardown(): Promise<void>;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* BenchmarkSuite - Orchestrates benchmark execution and reporting
|
|
265
|
+
*/
|
|
266
|
+
export declare class BenchmarkSuite {
|
|
267
|
+
private benchmarks;
|
|
268
|
+
private config;
|
|
269
|
+
constructor(config?: BenchmarkConfig);
|
|
270
|
+
/**
|
|
271
|
+
* Register a benchmark to the suite
|
|
272
|
+
*/
|
|
273
|
+
register(benchmark: Benchmark): void;
|
|
274
|
+
/**
|
|
275
|
+
* Unregister a benchmark from the suite
|
|
276
|
+
*/
|
|
277
|
+
unregister(name: string): boolean;
|
|
278
|
+
/**
|
|
279
|
+
* Get list of registered benchmark names
|
|
280
|
+
*/
|
|
281
|
+
listBenchmarks(): string[];
|
|
282
|
+
/**
|
|
283
|
+
* Run all registered benchmarks
|
|
284
|
+
*/
|
|
285
|
+
runAll(): Promise<BenchmarkReport>;
|
|
286
|
+
/**
|
|
287
|
+
* Run a specific benchmark by name
|
|
288
|
+
*/
|
|
289
|
+
runByName(name: string): Promise<BenchmarkResult>;
|
|
290
|
+
/**
|
|
291
|
+
* Compare two benchmark reports
|
|
292
|
+
*/
|
|
293
|
+
compare(baseline: BenchmarkReport, current: BenchmarkReport): ComparisonReport;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Run benchmarks and return results as JSON
|
|
297
|
+
*
|
|
298
|
+
* @param config - Benchmark configuration
|
|
299
|
+
* @returns Promise<BenchmarkReport>
|
|
300
|
+
*/
|
|
301
|
+
export declare function runBenchmarks(config?: BenchmarkConfig): Promise<BenchmarkReport>;
|
|
302
|
+
/**
|
|
303
|
+
* Run benchmarks with a specific subset
|
|
304
|
+
*
|
|
305
|
+
* @param names - Names of benchmarks to run
|
|
306
|
+
* @param config - Benchmark configuration
|
|
307
|
+
* @returns Promise<BenchmarkResult[]>
|
|
308
|
+
*/
|
|
309
|
+
export declare function runSelectedBenchmarks(names: string[], config?: BenchmarkConfig): Promise<BenchmarkResult[]>;
|
|
310
|
+
/**
|
|
311
|
+
* Format benchmark report as markdown
|
|
312
|
+
*/
|
|
313
|
+
export declare function formatReportAsMarkdown(report: BenchmarkReport): string;
|
|
314
|
+
/**
|
|
315
|
+
* Format comparison report as markdown
|
|
316
|
+
*/
|
|
317
|
+
export declare function formatComparisonAsMarkdown(comparison: ComparisonReport): string;
|
|
318
|
+
//# sourceMappingURL=BenchmarkSuite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BenchmarkSuite.d.ts","sourceRoot":"","sources":["../../../src/benchmark/BenchmarkSuite.ts"],"names":[],"mappings":"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"}
|