[](../LICENSE)
[](https://nodejs.org/)
[](https://www.typescriptlang.org/)
[](../CONTRIBUTING.md)
**Pre-bundled TensorFlow models for maximum reliability with Brainy vector database**
## ✨ Overview
This package provides offline access to the Universal Sentence Encoder model, eliminating network dependencies and ensuring consistent performance. It's designed as an optional companion to the main `@soulcraft/brainy` package for applications requiring maximum reliability.
### 🚀 Key Features
- 🔒 **Maximum Reliability**: Fully offline model loading with zero network dependencies
- 📦 **Pre-bundled Models**: Complete Universal Sentence Encoder model (~25MB) included
- 🗜️ **Model Compression**: Multiple optimized variants (float16, int8) for different use cases
- ⚡ **Performance Optimized**: Use case-specific optimizations for memory and speed
- 🛠️ **Easy Integration**: Drop-in replacement for online model loading
- 📊 **Comprehensive Metrics**: Detailed model information and performance statistics
## 🔧 Installation
```bash
npm install @soulcraft/brainy-models
```
### Prerequisites
- Node.js >= 18.0.0
- `@soulcraft/brainy` >= 0.33.0
## 🏁 Quick Start
### Basic Usage
```typescript
import { BundledUniversalSentenceEncoder } from '@soulcraft/brainy-models'
// Create encoder instance
const encoder = new BundledUniversalSentenceEncoder({
verbose: true,
preferCompressed: false
})
// Load the bundled model
await encoder.load()
// Generate embeddings
const texts = ['Hello world', 'How are you?', 'Machine learning is amazing']
const embeddings = await encoder.embedToArrays(texts)
console.log(`Generated ${embeddings.length} embeddings of ${embeddings[0].length} dimensions`)
// Clean up
encoder.dispose()
```
### Integration with Brainy
```typescript
import Brainy from '@soulcraft/brainy'
import { BundledUniversalSentenceEncoder } from '@soulcraft/brainy-models'
// Create bundled encoder
const bundledEncoder = new BundledUniversalSentenceEncoder({ verbose: true })
await bundledEncoder.load()
// Use with Brainy (custom integration)
const brainy = new Brainy({
// Configure Brainy to use the bundled encoder
customEmbedding: async (texts) => {
return await bundledEncoder.embedToArrays(texts)
}
})
```
### Using Compressed Models
```typescript
import { BundledUniversalSentenceEncoder } from '@soulcraft/brainy-models'
// Use compressed model for memory-constrained environments
const encoder = new BundledUniversalSentenceEncoder({
preferCompressed: true,
verbose: true
})
await encoder.load()
// The encoder will automatically use the most appropriate compressed variant
const embeddings = await encoder.embedToArrays(['Sample text'])
```
## 📚 API Reference
### BundledUniversalSentenceEncoder
Main class for loading and using bundled models.
#### Constructor
```typescript
new BundledUniversalSentenceEncoder(options)
```
**Options:**
- `verbose?: boolean` - Enable detailed logging (default: false)
- `preferCompressed?: boolean` - Prefer compressed model variants (default: false)
#### Methods
##### `load(): Promise