- **Vector Handling Updates**: - Added a `dimensions` property to `BrainyDataConfig` for specifying vector dimensions. - Introduced validation for vector dimensions during database creation and insertion to ensure consistency. - Enhanced error handling and logging for dimension mismatches. - **Model Loading Improvements**: - Implemented retry logic for Universal Sentence Encoder model loading to handle network instability and JSON parsing errors gracefully. - Improved logging and debugging support for failures during model initialization and embedding operations. - **Compatibility Enhancements**: - Updated polyfills to support TensorFlow.js compatibility across diverse server environments (Node.js, serverless, etc.). - Introduced and refactored global `TextEncoder`/`TextDecoder` definitions for seamless operation in non-browser environments. - Simplified TensorFlow.js backend setup with streamlined imports and logging for GPU/WebGL fallback. - **Purpose**: - These updates improve BrainyData's robustness, enforce correct vector usage, and extend compatibility with varied runtime environments. The changes enhance the usability, reliability, and cross-platform readiness of core functionalities.
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
/**
|
|
* Custom patched implementation of TensorFlow.js PlatformNode class
|
|
* This resolves the TextEncoder/TextDecoder constructor issues
|
|
*/
|
|
|
|
export class PatchedPlatformNode {
|
|
util: {
|
|
TextEncoder: typeof TextEncoder
|
|
TextDecoder: typeof TextDecoder
|
|
isFloat32Array: (arr: any) => boolean
|
|
isTypedArray: (arr: any) => boolean
|
|
}
|
|
textEncoder: TextEncoder
|
|
textDecoder: TextDecoder
|
|
|
|
constructor() {
|
|
// Create a util object with necessary methods
|
|
this.util = {
|
|
// Add isFloat32Array and isTypedArray directly to util
|
|
isFloat32Array: (arr) => {
|
|
return !!(
|
|
arr instanceof Float32Array ||
|
|
(arr &&
|
|
Object.prototype.toString.call(arr) === '[object Float32Array]')
|
|
)
|
|
},
|
|
isTypedArray: (arr) => {
|
|
return !!(ArrayBuffer.isView(arr) && !(arr instanceof DataView))
|
|
},
|
|
// Provide constructor references directly
|
|
TextEncoder,
|
|
TextDecoder
|
|
}
|
|
|
|
// Initialize TextEncoder/TextDecoder instances
|
|
this.textEncoder = new TextEncoder()
|
|
this.textDecoder = new TextDecoder()
|
|
}
|
|
|
|
// Define isFloat32Array directly on the instance
|
|
isFloat32Array(arr: any) {
|
|
return !!(
|
|
arr instanceof Float32Array ||
|
|
(arr && Object.prototype.toString.call(arr) === '[object Float32Array]')
|
|
)
|
|
}
|
|
|
|
// Define isTypedArray directly on the instance
|
|
isTypedArray(arr: any) {
|
|
return !!(ArrayBuffer.isView(arr) && !(arr instanceof DataView))
|
|
}
|
|
}
|