46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
/**
|
|
* Embedding Service Interface
|
|
*/
|
|
export interface IEmbeddingService {
|
|
/**
|
|
* Embed a single text string
|
|
*/
|
|
embed(text: string): Promise<number[]>;
|
|
/**
|
|
* Embed multiple text strings in batch (performance optimized)
|
|
*/
|
|
embedBatch(texts: string[]): Promise<number[][]>;
|
|
/**
|
|
* Get the dimensions of the embedding model
|
|
*/
|
|
getDimensions(): number;
|
|
/**
|
|
* Get model information
|
|
*/
|
|
getModelInfo(): ModelInfo;
|
|
}
|
|
export interface ModelInfo {
|
|
name: string;
|
|
version: string;
|
|
dimensions: number;
|
|
maxTokens: number;
|
|
}
|
|
export declare class XenovaEmbeddingService implements IEmbeddingService {
|
|
private extractor;
|
|
private readonly modelId;
|
|
private initPromise;
|
|
/**
|
|
* Lazy load the model (initialize on first call)
|
|
*/
|
|
private ensureInitialized;
|
|
private initialize;
|
|
embed(text: string): Promise<number[]>;
|
|
embedBatch(texts: string[]): Promise<number[][]>;
|
|
getDimensions(): number;
|
|
getModelInfo(): ModelInfo;
|
|
/**
|
|
* Text cleaning (remove noise, improve quality)
|
|
*/
|
|
private cleanText;
|
|
}
|