@vivantel/virage-core
    Preparing search index...

    Interface EmbeddingProvider

    interface EmbeddingProvider {
        dimensions: number;
        maxTokens?: number;
        model?: string;
        name: string;
        preferredBatchSize?: number;
        embed(text: string): Promise<number[]>;
        embedBatch?(texts: string[]): Promise<number[][]>;
        embedStream?(texts: string[]): AsyncIterable<number[]>;
        getMetrics?(embeddings: number[][]): Promise<EmbeddingMetrics>;
        healthCheck?(): Promise<boolean>;
        preWarm?(
            onProgress?: (loaded: number, total: number) => void,
        ): Promise<void>;
    }
    Index
    dimensions: number

    Embedding vector dimensions

    maxTokens?: number

    Maximum tokens per request (optional)

    model?: string

    The specific model identifier (e.g., 'text-embedding-3-small', 'BAAI/bge-small-en-v1.5'). Used for cache invalidation: changing the model always triggers a full re-embed, regardless of provider name. Same model via different providers (OpenAI vs Azure vs GitHub Models) produces identical vectors — no invalidation in that case.

    name: string

    Provider name (e.g., 'github-models', 'openai')

    preferredBatchSize?: number

    Suggested batch size for this provider (used as default when batchSize is not explicitly configured)

    • Stream embeddings one-by-one as they arrive (optional, for large batches)

      Parameters

      • texts: string[]

      Returns AsyncIterable<number[]>

    • Pre-load the model before the main pipeline loop begins. Implement this on local/ONNX-based providers to surface loading progress. API-backed providers can omit it — the first embed() call is already fast.

      Parameters

      • OptionalonProgress: (loaded: number, total: number) => void

      Returns Promise<void>