@astermind/astermind-elm
Version:
JavaScript Extreme Learning Machine (ELM) library for browser and Node.js.
64 lines (63 loc) • 2.19 kB
TypeScript
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;