@soulcraft/brainy 0.40.0 → 0.43.0
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/README.md +605 -194
- package/dist/augmentations/conduitAugmentations.js +1158 -0
- package/dist/augmentations/conduitAugmentations.js.map +1 -0
- package/dist/augmentations/memoryAugmentations.d.ts +2 -0
- package/dist/augmentations/memoryAugmentations.d.ts.map +1 -1
- package/dist/augmentations/memoryAugmentations.js +270 -0
- package/dist/augmentations/memoryAugmentations.js.map +1 -0
- package/dist/augmentations/serverSearchAugmentations.js +531 -0
- package/dist/augmentations/serverSearchAugmentations.js.map +1 -0
- package/dist/browserFramework.d.ts +15 -0
- package/dist/demo.d.ts +106 -0
- package/dist/examples/basicUsage.js +118 -0
- package/dist/examples/basicUsage.js.map +1 -0
- package/dist/hnsw/distributedSearch.js +452 -0
- package/dist/hnsw/distributedSearch.js.map +1 -0
- package/dist/hnsw/hnswIndex.js +602 -0
- package/dist/hnsw/hnswIndex.js.map +1 -0
- package/dist/hnsw/hnswIndexOptimized.js +471 -0
- package/dist/hnsw/hnswIndexOptimized.js.map +1 -0
- package/dist/hnsw/optimizedHNSWIndex.js +313 -0
- package/dist/hnsw/optimizedHNSWIndex.js.map +1 -0
- package/dist/hnsw/partitionedHNSWIndex.js +304 -0
- package/dist/hnsw/partitionedHNSWIndex.js.map +1 -0
- package/dist/hnsw/scaledHNSWSystem.js +559 -0
- package/dist/hnsw/scaledHNSWSystem.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.js +81 -0
- package/dist/mcp/brainyMCPAdapter.js +142 -0
- package/dist/mcp/brainyMCPAdapter.js.map +1 -0
- package/dist/mcp/brainyMCPService.js +248 -0
- package/dist/mcp/brainyMCPService.js.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcpAugmentationToolset.js +180 -0
- package/dist/mcp/mcpAugmentationToolset.js.map +1 -0
- package/dist/storage/adapters/baseStorageAdapter.js +349 -0
- package/dist/storage/adapters/baseStorageAdapter.js.map +1 -0
- package/dist/storage/adapters/batchS3Operations.js +287 -0
- package/dist/storage/adapters/batchS3Operations.js.map +1 -0
- package/dist/storage/adapters/fileSystemStorage.js +846 -0
- package/dist/storage/adapters/fileSystemStorage.js.map +1 -0
- package/dist/storage/adapters/memoryStorage.js +532 -0
- package/dist/storage/adapters/memoryStorage.js.map +1 -0
- package/dist/storage/adapters/opfsStorage.d.ts.map +1 -1
- package/dist/storage/adapters/opfsStorage.js +1118 -0
- package/dist/storage/adapters/opfsStorage.js.map +1 -0
- package/dist/storage/adapters/optimizedS3Search.d.ts +79 -0
- package/dist/storage/adapters/optimizedS3Search.d.ts.map +1 -0
- package/dist/storage/adapters/optimizedS3Search.js +248 -0
- package/dist/storage/adapters/optimizedS3Search.js.map +1 -0
- package/dist/storage/adapters/s3CompatibleStorage.d.ts +21 -0
- package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +1 -1
- package/dist/storage/adapters/s3CompatibleStorage.js +2026 -0
- package/dist/storage/adapters/s3CompatibleStorage.js.map +1 -0
- package/dist/storage/baseStorage.d.ts +1 -0
- package/dist/storage/baseStorage.d.ts.map +1 -1
- package/dist/storage/baseStorage.js +603 -0
- package/dist/storage/baseStorage.js.map +1 -0
- package/dist/storage/cacheManager.js +1306 -0
- package/dist/storage/cacheManager.js.map +1 -0
- package/dist/storage/enhancedCacheManager.js +520 -0
- package/dist/storage/enhancedCacheManager.js.map +1 -0
- package/dist/storage/readOnlyOptimizations.js +425 -0
- package/dist/storage/readOnlyOptimizations.js.map +1 -0
- package/dist/storage/storageFactory.d.ts +0 -1
- package/dist/storage/storageFactory.d.ts.map +1 -1
- package/dist/storage/storageFactory.js +227 -0
- package/dist/storage/storageFactory.js.map +1 -0
- package/dist/types/augmentations.js +16 -0
- package/dist/types/augmentations.js.map +1 -0
- package/dist/types/brainyDataInterface.js +8 -0
- package/dist/types/brainyDataInterface.js.map +1 -0
- package/dist/types/distributedTypes.js +6 -0
- package/dist/types/distributedTypes.js.map +1 -0
- package/dist/types/fileSystemTypes.js +8 -0
- package/dist/types/fileSystemTypes.js.map +1 -0
- package/dist/types/graphTypes.js +247 -0
- package/dist/types/graphTypes.js.map +1 -0
- package/dist/types/mcpTypes.js +22 -0
- package/dist/types/mcpTypes.js.map +1 -0
- package/dist/types/paginationTypes.js +5 -0
- package/dist/types/paginationTypes.js.map +1 -0
- package/dist/types/pipelineTypes.js +7 -0
- package/dist/types/pipelineTypes.js.map +1 -0
- package/dist/types/tensorflowTypes.js +6 -0
- package/dist/types/tensorflowTypes.js.map +1 -0
- package/dist/unified.js +52 -128048
- package/dist/utils/autoConfiguration.js +341 -0
- package/dist/utils/autoConfiguration.js.map +1 -0
- package/dist/utils/cacheAutoConfig.js +261 -0
- package/dist/utils/cacheAutoConfig.js.map +1 -0
- package/dist/utils/crypto.js +45 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/distance.js +239 -0
- package/dist/utils/distance.js.map +1 -0
- package/dist/utils/embedding.d.ts.map +1 -1
- package/dist/utils/embedding.js +702 -0
- package/dist/utils/embedding.js.map +1 -0
- package/dist/utils/environment.js +75 -0
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/fieldNameTracking.js +90 -0
- package/dist/utils/fieldNameTracking.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/jsonProcessing.js +179 -0
- package/dist/utils/jsonProcessing.js.map +1 -0
- package/dist/utils/logger.d.ts +45 -92
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +129 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/operationUtils.js +126 -0
- package/dist/utils/operationUtils.js.map +1 -0
- package/dist/utils/robustModelLoader.d.ts +14 -0
- package/dist/utils/robustModelLoader.d.ts.map +1 -1
- package/dist/utils/robustModelLoader.js +537 -0
- package/dist/utils/robustModelLoader.js.map +1 -0
- package/dist/utils/searchCache.js +248 -0
- package/dist/utils/searchCache.js.map +1 -0
- package/dist/utils/statistics.js +25 -0
- package/dist/utils/statistics.js.map +1 -0
- package/dist/utils/statisticsCollector.js +224 -0
- package/dist/utils/statisticsCollector.js.map +1 -0
- package/dist/utils/textEncoding.js +309 -0
- package/dist/utils/textEncoding.js.map +1 -0
- package/dist/utils/typeUtils.js +40 -0
- package/dist/utils/typeUtils.js.map +1 -0
- package/dist/utils/version.d.ts +15 -3
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +24 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/utils/workerUtils.js +458 -0
- package/dist/utils/workerUtils.js.map +1 -0
- package/package.json +23 -15
- package/dist/brainy.js +0 -90220
- package/dist/brainy.min.js +0 -12511
- package/dist/patched-platform-node.d.ts +0 -17
- package/dist/statistics/statisticsManager.d.ts +0 -121
- package/dist/storage/fileSystemStorage.d.ts +0 -73
- package/dist/storage/fileSystemStorage.d.ts.map +0 -1
- package/dist/storage/opfsStorage.d.ts +0 -236
- package/dist/storage/opfsStorage.d.ts.map +0 -1
- package/dist/storage/s3CompatibleStorage.d.ts +0 -157
- package/dist/storage/s3CompatibleStorage.d.ts.map +0 -1
- package/dist/testing/prettyReporter.d.ts +0 -23
- package/dist/testing/prettySummaryReporter.d.ts +0 -22
- package/dist/unified.min.js +0 -16153
- package/dist/utils/environmentDetection.d.ts +0 -47
- package/dist/utils/environmentDetection.d.ts.map +0 -1
- package/dist/utils/tensorflowUtils.d.ts +0 -17
- package/dist/utils/tensorflowUtils.d.ts.map +0 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform crypto utilities
|
|
3
|
+
* Provides hashing functions that work in both Node.js and browser environments
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Simple string hash function that works in all environments
|
|
7
|
+
* Uses djb2 algorithm - fast and good distribution
|
|
8
|
+
* @param str - String to hash
|
|
9
|
+
* @returns Positive integer hash
|
|
10
|
+
*/
|
|
11
|
+
export function hashString(str) {
|
|
12
|
+
let hash = 5381;
|
|
13
|
+
for (let i = 0; i < str.length; i++) {
|
|
14
|
+
const char = str.charCodeAt(i);
|
|
15
|
+
hash = ((hash << 5) + hash) + char; // hash * 33 + char
|
|
16
|
+
}
|
|
17
|
+
// Ensure positive number
|
|
18
|
+
return Math.abs(hash);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Alternative: FNV-1a hash algorithm
|
|
22
|
+
* Good distribution and fast
|
|
23
|
+
* @param str - String to hash
|
|
24
|
+
* @returns Positive integer hash
|
|
25
|
+
*/
|
|
26
|
+
export function fnv1aHash(str) {
|
|
27
|
+
let hash = 2166136261;
|
|
28
|
+
for (let i = 0; i < str.length; i++) {
|
|
29
|
+
hash ^= str.charCodeAt(i);
|
|
30
|
+
hash = (hash * 16777619) >>> 0;
|
|
31
|
+
}
|
|
32
|
+
return hash;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Generate a deterministic hash for partitioning
|
|
36
|
+
* Uses the most appropriate algorithm for the environment
|
|
37
|
+
* @param input - Input string to hash
|
|
38
|
+
* @returns Positive integer hash suitable for modulo operations
|
|
39
|
+
*/
|
|
40
|
+
export function getPartitionHash(input) {
|
|
41
|
+
// Use djb2 by default as it's fast and has good distribution
|
|
42
|
+
// This ensures consistent partitioning across all environments
|
|
43
|
+
return hashString(input);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/utils/crypto.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA,CAAC,mBAAmB;IACxD,CAAC;IACD,yBAAyB;IACzB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,IAAI,GAAG,UAAU,CAAA;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,6DAA6D;IAC7D,+DAA+D;IAC/D,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Distance functions for vector similarity calculations
|
|
3
|
+
* Optimized for Node.js 23.11+ using enhanced array methods
|
|
4
|
+
* GPU-accelerated versions available for high-performance computing
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Calculates the Euclidean distance between two vectors
|
|
8
|
+
* Lower values indicate higher similarity
|
|
9
|
+
* Optimized using array methods for Node.js 23.11+
|
|
10
|
+
*/
|
|
11
|
+
export const euclideanDistance = (a, b) => {
|
|
12
|
+
if (a.length !== b.length) {
|
|
13
|
+
throw new Error('Vectors must have the same dimensions');
|
|
14
|
+
}
|
|
15
|
+
// Use array.reduce for better performance in Node.js 23.11+
|
|
16
|
+
const sum = a.reduce((acc, val, i) => {
|
|
17
|
+
const diff = val - b[i];
|
|
18
|
+
return acc + diff * diff;
|
|
19
|
+
}, 0);
|
|
20
|
+
return Math.sqrt(sum);
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Calculates the cosine distance between two vectors
|
|
24
|
+
* Lower values indicate higher similarity
|
|
25
|
+
* Range: 0 (identical) to 2 (opposite)
|
|
26
|
+
* Optimized using array methods for Node.js 23.11+
|
|
27
|
+
*/
|
|
28
|
+
export const cosineDistance = (a, b) => {
|
|
29
|
+
if (a.length !== b.length) {
|
|
30
|
+
throw new Error('Vectors must have the same dimensions');
|
|
31
|
+
}
|
|
32
|
+
// Use array.reduce to calculate all values in a single pass
|
|
33
|
+
const { dotProduct, normA, normB } = a.reduce((acc, val, i) => {
|
|
34
|
+
return {
|
|
35
|
+
dotProduct: acc.dotProduct + val * b[i],
|
|
36
|
+
normA: acc.normA + val * val,
|
|
37
|
+
normB: acc.normB + b[i] * b[i]
|
|
38
|
+
};
|
|
39
|
+
}, { dotProduct: 0, normA: 0, normB: 0 });
|
|
40
|
+
if (normA === 0 || normB === 0) {
|
|
41
|
+
return 2; // Maximum distance for zero vectors
|
|
42
|
+
}
|
|
43
|
+
const similarity = dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
44
|
+
// Convert cosine similarity (-1 to 1) to distance (0 to 2)
|
|
45
|
+
return 1 - similarity;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Calculates the Manhattan (L1) distance between two vectors
|
|
49
|
+
* Lower values indicate higher similarity
|
|
50
|
+
* Optimized using array methods for Node.js 23.11+
|
|
51
|
+
*/
|
|
52
|
+
export const manhattanDistance = (a, b) => {
|
|
53
|
+
if (a.length !== b.length) {
|
|
54
|
+
throw new Error('Vectors must have the same dimensions');
|
|
55
|
+
}
|
|
56
|
+
// Use array.reduce for better performance in Node.js 23.11+
|
|
57
|
+
return a.reduce((sum, val, i) => sum + Math.abs(val - b[i]), 0);
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Calculates the dot product similarity between two vectors
|
|
61
|
+
* Higher values indicate higher similarity
|
|
62
|
+
* Converted to a distance metric (lower is better)
|
|
63
|
+
* Optimized using array methods for Node.js 23.11+
|
|
64
|
+
*/
|
|
65
|
+
export const dotProductDistance = (a, b) => {
|
|
66
|
+
if (a.length !== b.length) {
|
|
67
|
+
throw new Error('Vectors must have the same dimensions');
|
|
68
|
+
}
|
|
69
|
+
// Use array.reduce for better performance in Node.js 23.11+
|
|
70
|
+
const dotProduct = a.reduce((sum, val, i) => sum + val * b[i], 0);
|
|
71
|
+
// Convert to a distance metric (lower is better)
|
|
72
|
+
return -dotProduct;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Batch distance calculation
|
|
76
|
+
* Uses TensorFlow.js with CPU backend for optimized performance
|
|
77
|
+
*
|
|
78
|
+
* @param queryVector The query vector to compare against all vectors
|
|
79
|
+
* @param vectors Array of vectors to compare against
|
|
80
|
+
* @param distanceFunction The distance function to use
|
|
81
|
+
* @returns Promise resolving to array of distances
|
|
82
|
+
*/
|
|
83
|
+
export async function calculateDistancesBatch(queryVector, vectors, distanceFunction = euclideanDistance) {
|
|
84
|
+
// For small batches, use the standard distance function
|
|
85
|
+
if (vectors.length < 10) {
|
|
86
|
+
return vectors.map((vector) => distanceFunction(queryVector, vector));
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
// Function to be executed in a worker thread
|
|
90
|
+
const distanceCalculator = async (args) => {
|
|
91
|
+
const { queryVector, vectors, distanceFnString } = args;
|
|
92
|
+
// Use TensorFlow.js with CPU processing
|
|
93
|
+
const useTensorFlow = async () => {
|
|
94
|
+
// TensorFlow.js will use its default EPSILON value
|
|
95
|
+
// Use the importTensorFlow function if available (in worker context)
|
|
96
|
+
// or directly import TensorFlow.js (in main thread)
|
|
97
|
+
let tf;
|
|
98
|
+
if (typeof self !== 'undefined' &&
|
|
99
|
+
typeof self.importTensorFlow === 'function') {
|
|
100
|
+
// In worker context, use the importTensorFlow function
|
|
101
|
+
tf = await self.importTensorFlow();
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// CRITICAL: Ensure TextEncoder/TextDecoder are available before TensorFlow.js loads
|
|
105
|
+
try {
|
|
106
|
+
// Use dynamic imports for all environments to ensure TensorFlow loads after patch
|
|
107
|
+
if (typeof process !== 'undefined' && process.versions && process.versions.node) {
|
|
108
|
+
// Ensure TextEncoder/TextDecoder are globally available in Node.js
|
|
109
|
+
const util = await import('util');
|
|
110
|
+
if (typeof global.TextEncoder === 'undefined') {
|
|
111
|
+
global.TextEncoder = util.TextEncoder;
|
|
112
|
+
}
|
|
113
|
+
if (typeof global.TextDecoder === 'undefined') {
|
|
114
|
+
global.TextDecoder = util.TextDecoder;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Apply the TensorFlow.js patch
|
|
118
|
+
const { applyTensorFlowPatch } = await import('./textEncoding.js');
|
|
119
|
+
await applyTensorFlowPatch();
|
|
120
|
+
// Now load TensorFlow.js core module using dynamic imports
|
|
121
|
+
tf = await import('@tensorflow/tfjs-core');
|
|
122
|
+
await import('@tensorflow/tfjs-backend-cpu');
|
|
123
|
+
await tf.setBackend('cpu');
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
console.error('Failed to initialize TensorFlow.js:', error);
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Convert vectors to tensors
|
|
131
|
+
const queryTensor = tf.tensor2d([queryVector]);
|
|
132
|
+
const vectorsTensor = tf.tensor2d(vectors);
|
|
133
|
+
let distances;
|
|
134
|
+
// Calculate distances based on the distance function type
|
|
135
|
+
if (distanceFnString.includes('euclideanDistance')) {
|
|
136
|
+
// Euclidean distance using GPU-optimized operations
|
|
137
|
+
// Formula: sqrt(sum((a - b)^2))
|
|
138
|
+
const expanded = tf.sub(queryTensor.expandDims(1), vectorsTensor.expandDims(0));
|
|
139
|
+
const squaredDiff = tf.square(expanded);
|
|
140
|
+
const sumSquaredDiff = tf.sum(squaredDiff, -1);
|
|
141
|
+
const distancesTensor = tf.sqrt(sumSquaredDiff);
|
|
142
|
+
distances = (await distancesTensor
|
|
143
|
+
.squeeze()
|
|
144
|
+
.array());
|
|
145
|
+
// Clean up tensors
|
|
146
|
+
queryTensor.dispose();
|
|
147
|
+
vectorsTensor.dispose();
|
|
148
|
+
expanded.dispose();
|
|
149
|
+
squaredDiff.dispose();
|
|
150
|
+
sumSquaredDiff.dispose();
|
|
151
|
+
distancesTensor.dispose();
|
|
152
|
+
}
|
|
153
|
+
else if (distanceFnString.includes('cosineDistance')) {
|
|
154
|
+
// Cosine distance using GPU-optimized operations
|
|
155
|
+
// Formula: 1 - (a·b / (||a|| * ||b||))
|
|
156
|
+
const dotProduct = tf.matMul(queryTensor, vectorsTensor.transpose());
|
|
157
|
+
const queryNorm = tf.norm(queryTensor, 2, 1);
|
|
158
|
+
const vectorsNorm = tf.norm(vectorsTensor, 2, 1);
|
|
159
|
+
const normProduct = tf.outerProduct(queryNorm, vectorsNorm);
|
|
160
|
+
const cosineSimilarity = tf.div(dotProduct, normProduct);
|
|
161
|
+
const distancesTensor = tf.sub(tf.scalar(1), cosineSimilarity);
|
|
162
|
+
distances = (await distancesTensor
|
|
163
|
+
.squeeze()
|
|
164
|
+
.array());
|
|
165
|
+
// Clean up tensors
|
|
166
|
+
queryTensor.dispose();
|
|
167
|
+
vectorsTensor.dispose();
|
|
168
|
+
dotProduct.dispose();
|
|
169
|
+
queryNorm.dispose();
|
|
170
|
+
vectorsNorm.dispose();
|
|
171
|
+
normProduct.dispose();
|
|
172
|
+
cosineSimilarity.dispose();
|
|
173
|
+
distancesTensor.dispose();
|
|
174
|
+
}
|
|
175
|
+
else if (distanceFnString.includes('manhattanDistance')) {
|
|
176
|
+
// Manhattan distance using GPU-optimized operations
|
|
177
|
+
// Formula: sum(|a - b|)
|
|
178
|
+
const diff = tf.sub(queryTensor.expandDims(1), vectorsTensor.expandDims(0));
|
|
179
|
+
const absDiff = tf.abs(diff);
|
|
180
|
+
const distancesTensor = tf.sum(absDiff, -1);
|
|
181
|
+
distances = (await distancesTensor
|
|
182
|
+
.squeeze()
|
|
183
|
+
.array());
|
|
184
|
+
// Clean up tensors
|
|
185
|
+
queryTensor.dispose();
|
|
186
|
+
vectorsTensor.dispose();
|
|
187
|
+
diff.dispose();
|
|
188
|
+
absDiff.dispose();
|
|
189
|
+
distancesTensor.dispose();
|
|
190
|
+
}
|
|
191
|
+
else if (distanceFnString.includes('dotProductDistance')) {
|
|
192
|
+
// Dot product distance using GPU-optimized operations
|
|
193
|
+
// Formula: -sum(a * b)
|
|
194
|
+
const dotProduct = tf.matMul(queryTensor, vectorsTensor.transpose());
|
|
195
|
+
const distancesTensor = tf.neg(dotProduct);
|
|
196
|
+
distances = (await distancesTensor
|
|
197
|
+
.squeeze()
|
|
198
|
+
.array());
|
|
199
|
+
// Clean up tensors
|
|
200
|
+
queryTensor.dispose();
|
|
201
|
+
vectorsTensor.dispose();
|
|
202
|
+
dotProduct.dispose();
|
|
203
|
+
distancesTensor.dispose();
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
// For unknown distance functions, fall back to direct CPU implementation
|
|
207
|
+
throw new Error('Unsupported distance function for TensorFlow optimization');
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
distances
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
// Try to use TensorFlow.js with CPU optimization
|
|
214
|
+
try {
|
|
215
|
+
return await useTensorFlow();
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
// Fall back to direct CPU implementation if TensorFlow.js fails
|
|
219
|
+
// Recreate the distance function from its string representation
|
|
220
|
+
const distanceFunction = new Function('return ' + distanceFnString)();
|
|
221
|
+
// Calculate distances for all vectors
|
|
222
|
+
const distances = vectors.map((vector) => distanceFunction(queryVector, vector));
|
|
223
|
+
return {
|
|
224
|
+
distances
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
// Threading is not available, so we'll always use the main thread implementation
|
|
229
|
+
// This comment is kept for clarity about the removed code
|
|
230
|
+
// If threading is not available or failed, calculate distances in the main thread
|
|
231
|
+
return vectors.map((vector) => distanceFunction(queryVector, vector));
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
// If anything fails, fall back to the standard distance function
|
|
235
|
+
console.error('Batch distance calculation failed:', error);
|
|
236
|
+
return vectors.map((vector) => distanceFunction(queryVector, vector));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=distance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distance.js","sourceRoot":"","sources":["../../src/utils/distance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/utils/embedding.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAG3E,OAAO,EAEL,gBAAgB,EAGjB,MAAM,wBAAwB,CAAA;AAE/B;;;;;;;GAOG;AACH,MAAM,WAAW,+BAAgC,SAAQ,gBAAgB;IACvE,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,wBAAyB,YAAW,cAAc;IAC7D,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAmB;IAEvC;;;OAGG;gBACS,OAAO,GAAE,+BAAoC;IAiBzD;;;;;;;;OAQG;IACH,OAAO,CAAC,+BAA+B;IA4CvC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;OAGG;IACH,OAAO,CAAC,MAAM;IAWd;;;OAGG;YACW,kBAAkB;IAmChC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/utils/embedding.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAG3E,OAAO,EAEL,gBAAgB,EAGjB,MAAM,wBAAwB,CAAA;AAE/B;;;;;;;GAOG;AACH,MAAM,WAAW,+BAAgC,SAAQ,gBAAgB;IACvE,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,wBAAyB,YAAW,cAAc;IAC7D,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAmB;IAEvC;;;OAGG;gBACS,OAAO,GAAE,+BAAoC;IAiBzD;;;;;;;;OAQG;IACH,OAAO,CAAC,+BAA+B;IA4CvC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;OAGG;IACH,OAAO,CAAC,MAAM;IAWd;;;OAGG;YACW,kBAAkB;IAmChC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+LlC;;;OAGG;IACU,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAmF5D;;;;;OAKG;IACU,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwF/D;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAiBtC;AAsID;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,CAAC,EAAE,cAAc,GACrB,iBAAiB,CASnB;AAcD,wBAAgB,iCAAiC,CAC/C,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,iBAAiB,CAuCnB;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,iBAAiB,CAEnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBACR,CAAA;AAe/B,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAyC5C;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAE5C;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,cAV3B,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAUmC,CAAA;AAE/E;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,cAAc,GACpB,iBAAiB,CAUnB"}
|