ir-studio / src /types.ts
Natnael B. Haile
Cursor
feat: complete IR Studio with Git LFS tracking for all binary assets and NFCorpus index
fbad523
Raw History Blame Contribute Delete
2.25 kB
export type Paradigm = 'bm25' | 'dense' | 'splade' | 'rerank';
// Re-export corpus domain types
export type * from './types/corpus';
export interface Document {
id: string;
title?: string;
text: string;
goldRelevance: number; // 0 = not relevant, 1 = relevant, 2 = highly relevant
// Optional pre-computed or derived fields
length?: number;
termFreqs?: Record<string, number>;
denseVector?: number[];
spladeTokens?: Record<string, number>;
}
export interface Query {
id: string;
text: string;
dataset: 'MS MARCO Passage' | 'NFCorpus' | 'Custom';
denseVector?: number[];
spladeTokens?: Record<string, number>;
relevantDocIds?: string[];
}
export interface ScoredDoc {
doc: Document;
score: number;
rank: number;
scoreBreakdown?: {
termContributions?: {
term: string;
tf: number;
idf: number;
numerator?: number;
denominator?: number;
contribution: number;
}[];
vectorDotProduct?: {
querySlice: number[];
docSlice: number[];
terms: number[];
dotProduct: number;
model?: string;
dim?: number;
querySource?: string;
docSource?: string;
topDimensions?: { dim: number; q_val: number; d_val: number; product: number }[];
latencyMs?: number;
positiveCount?: number;
negativeCount?: number;
positiveSum?: number;
negativeSum?: number;
};
spladeOverlap?: {
term: string;
qWeight: number;
dWeight: number;
product: number;
}[];
spladeMeta?: {
model?: string;
totalActivatedDocTokens?: number;
docMlmExpansionsCount?: number;
docSource?: string;
latencyMs?: number;
};
rerankDelta?: number;
rerankDetails?: {
baseScore: number;
baseRank?: number;
crossAttentionLogit: number;
relevanceProbability: number;
rationale: string;
jointTokens: { term: string; contextualRole: string; impact: 'positive' | 'neutral' | 'negative' }[];
scoringFormula?: string;
};
explanation?: string;
};
}
export interface EvaluationMetrics {
mrr10: number;
ndcg10: number;
precision1: number;
recall10: number;
reciprocalRank: number;
firstRelevantRank?: number;
}