UNPKG

@astermind/astermind-elm

Version:

JavaScript Extreme Learning Machine (ELM) library for browser and Node.js.

64 lines (63 loc) 2.19 kB
import { ELMChain } from "./ELMChain"; /** Minimal record shape for this evaluation (kept independent of the store). */ export interface EmbeddingRecord { id?: string; embedding: number[] | Float32Array; metadata: { label?: string; [k: string]: any; }; } export type EnsembleMetric = "cosine" | "dot"; export type ScoreAgg = "mean" | "sum" | "max" | "weighted"; export interface EnsembleEvalOptions { /** Similarity metric across chain embeddings (default: 'cosine') */ metric?: EnsembleMetric; /** How to aggregate scores across chains (default: 'mean') */ aggregate?: ScoreAgg; /** Per-chain weights (only used when aggregate='weighted'). Length must equal chains.length. */ weights?: number[]; /** K for Recall@K and Top-K lists (default: 5) */ k?: number; /** If true, drop queries with missing/empty label from metrics (default: true) */ ignoreUnlabeledQueries?: boolean; /** If true, also return per-label stats (slower) */ reportPerLabel?: boolean; /** If true, attach top-K rankings per query to result (slower) */ returnRankings?: boolean; /** Progress callback every N queries (default: 10) */ logEvery?: number; } export interface PerLabelStats { count: number; hitsAt1: number; hitsAtK: number; mrrSum: number; } export interface QueryRanking { queryIndex: number; queryId?: string; label: string; topK: Array<{ label: string; score: number; }>; correctRank: number; } export interface EnsembleEvalResult { /** Queries that contributed to the metrics (after filtering) */ usedQueries: number; recallAt1: number; recallAtK: number; mrr: number; /** Optional breakdown by label */ perLabel?: Record<string, { support: number; recallAt1: number; recallAtK: number; mrr: number; }>; /** Optional top-K rankings per query (debug/inspection) */ rankings?: QueryRanking[]; } export declare function evaluateEnsembleRetrieval(queries: EmbeddingRecord[], reference: EmbeddingRecord[], chains: ELMChain[], k: number, options?: EnsembleEvalOptions): EnsembleEvalResult;