brainy/dist/utils/embedding.d.ts
David Snelling f8c45f2d8d Initial commit: Brainy - Multi-Dimensional AI Database
Open source vector database with HNSW indexing, graph relationships,
and metadata facets. Features CLI with professional augmentation registry
integration for discovering extensions and capabilities.
2025-08-18 17:35:06 -07:00

102 lines
3.3 KiB
TypeScript

/**
* Embedding functions for converting data to vectors using Transformers.js
* Complete rewrite to eliminate TensorFlow.js and use ONNX-based models
*/
import { EmbeddingFunction, EmbeddingModel, Vector } from '../coreTypes.js';
/**
* Detect the best available GPU device for the current environment
*/
export declare function detectBestDevice(): Promise<'cpu' | 'webgpu' | 'cuda'>;
/**
* Resolve device string to actual device configuration
*/
export declare function resolveDevice(device?: string): Promise<string>;
/**
* Transformers.js Sentence Encoder embedding model
* Uses ONNX Runtime for fast, offline embeddings with smaller models
* Default model: all-MiniLM-L6-v2 (384 dimensions, ~90MB)
*/
export interface TransformerEmbeddingOptions {
/** Model name/path to use - defaults to all-MiniLM-L6-v2 */
model?: string;
/** Whether to enable verbose logging */
verbose?: boolean;
/** Custom cache directory for models */
cacheDir?: string;
/** Force local files only (no downloads) */
localFilesOnly?: boolean;
/** Quantization setting (fp32, fp16, q8, q4) */
dtype?: 'fp32' | 'fp16' | 'q8' | 'q4';
/** Device to run inference on - 'auto' detects best available */
device?: 'auto' | 'cpu' | 'webgpu' | 'cuda' | 'gpu';
}
export declare class TransformerEmbedding implements EmbeddingModel {
private extractor;
private initialized;
private verbose;
private options;
/**
* Create a new TransformerEmbedding instance
*/
constructor(options?: TransformerEmbeddingOptions);
/**
* Get the default cache directory for models
*/
private getDefaultCacheDir;
/**
* Check if we're running in a test environment
*/
private isTestEnvironment;
/**
* Log message only if verbose mode is enabled
*/
private logger;
/**
* Initialize the embedding model
*/
init(): Promise<void>;
/**
* Generate embeddings for text data
*/
embed(data: string | string[]): Promise<Vector>;
/**
* Dispose of the model and free resources
*/
dispose(): Promise<void>;
/**
* Get the dimension of embeddings produced by this model
*/
getDimension(): number;
/**
* Check if the model is initialized
*/
isInitialized(): boolean;
}
export declare const UniversalSentenceEncoder: typeof TransformerEmbedding;
/**
* Create a new embedding model instance
*/
export declare function createEmbeddingModel(options?: TransformerEmbeddingOptions): EmbeddingModel;
/**
* Default embedding function using the lightweight transformer model
*/
export declare const defaultEmbeddingFunction: EmbeddingFunction;
/**
* Create an embedding function with custom options
*/
export declare function createEmbeddingFunction(options?: TransformerEmbeddingOptions): EmbeddingFunction;
/**
* Batch embedding function for processing multiple texts efficiently
*/
export declare function batchEmbed(texts: string[], options?: TransformerEmbeddingOptions): Promise<Vector[]>;
/**
* Embedding functions for specific model types
*/
export declare const embeddingFunctions: {
/** Default lightweight model (all-MiniLM-L6-v2, 384 dimensions) */
default: EmbeddingFunction;
/** Create custom embedding function */
create: typeof createEmbeddingFunction;
/** Batch processing */
batch: typeof batchEmbed;
};