esfiles / frontend /src /types.ts
Besjon Cifliku
feat: initial project setup
db764ae
// ---- API Request types ----
export interface InitRequest {
model_name: string;
chunk_size: number;
chunk_overlap: number;
batch_size: number;
}
export interface DocumentRequest {
doc_id: string;
text: string;
}
export interface QueryRequest {
text: string;
top_k: number;
}
export interface CompareRequest {
text_a: string;
text_b: string;
}
export interface KeywordAnalysisRequest {
keyword: string;
top_k: number;
cluster_threshold: number;
}
export interface KeywordMatchRequest {
keyword: string;
candidate_meanings: string[];
}
export interface BatchAnalysisRequest {
keywords: string[];
top_k: number;
cluster_threshold: number;
compare_across: boolean;
}
// ---- API Response types ----
export interface ChunkPreview {
index: number;
text: string;
}
export interface InitResponse {
status: string;
model: string;
load_time_seconds: number;
}
export interface AddDocResponse {
status: string;
doc_id: string;
num_chunks: number;
chunks_preview: ChunkPreview[];
}
export interface BuildIndexResponse {
status: string;
total_chunks: number;
embedding_dim: number;
build_time_seconds: number;
}
export interface QueryResultItem {
rank: number;
score: number;
doc_id: string;
chunk_index: number;
text: string;
}
export interface QueryResponse {
query: string;
results: QueryResultItem[];
}
export interface CompareResponse {
text_a: string;
text_b: string;
similarity: number;
}
export interface ClusterContext {
doc_id: string;
chunk_index: number;
text: string;
highlight_positions: [number, number][];
}
export interface SimilarPassage {
rank: number;
score: number;
doc_id: string;
text: string;
}
export interface MeaningCluster {
cluster_id: number;
size: number;
representative_text: string;
contexts: ClusterContext[];
similar_passages: SimilarPassage[];
}
export interface KeywordAnalysisResponse {
keyword: string;
total_occurrences: number;
meaning_clusters: MeaningCluster[];
cross_keyword_similarities: Record<string, number>;
}
export interface MatchResult {
doc_id: string;
chunk_index: number;
text: string;
best_match: string;
best_score: number;
all_scores: Record<string, number>;
}
export interface MatchResponse {
keyword: string;
candidate_meanings: string[];
matches: MatchResult[];
}
export interface CorpusStats {
total_chunks: number;
total_documents: number;
document_ids: string[];
index_built: boolean;
embedding_dim: number;
model_name: string;
}
export interface SimilarityDistribution {
sample_size: number;
mean: number;
std: number;
min: number;
max: number;
percentiles: Record<string, number>;
histogram: { bin_start: number; bin_end: number; count: number }[];
}
export interface DisambiguationMetric {
keyword: string;
accuracy: number;
weighted_f1: number;
per_meaning_precision: Record<string, number>;
per_meaning_recall: Record<string, number>;
per_meaning_f1: Record<string, number>;
confusion_matrix: number[][];
total_samples: number;
}
export interface RetrievalMetric {
query: string;
mrr: number;
precision_at_k: Record<string, number>;
recall_at_k: Record<string, number>;
ndcg_at_k: Record<string, number>;
avg_similarity: number;
top_score: number;
}
// ---- Training types ----
export interface TrainResponse {
strategy: string;
model_path: string;
training_pairs: number;
epochs: number;
seconds: number;
keywords?: string[];
}
export interface TrainEvalResponse {
pairs: {
text_a: string;
text_b: string;
expected: number;
base_score: number;
trained_score: number;
base_error: number;
trained_error: number;
}[];
summary: {
avg_base_error: number;
avg_trained_error: number;
error_reduction_pct: number;
improved: number;
degraded: number;
total: number;
};
}
// ---- Word2Vec types ----
export interface W2VInitResponse {
vocab_size: number;
sentences: number;
vector_size: number;
seconds: number;
}
export interface W2VQueryResult {
rank: number;
score: number;
doc_id: string;
text: string;
}
export interface W2VSimilarWord {
word: string;
score: number;
}
// ---- Dataset types ----
export interface DatasetSourceInfo {
dataset_id: string;
url: string;
description: string;
columns?: string[];
size_mb?: number;
model?: string;
vector_dim?: number;
}
export interface DatasetInfo {
raw_texts: DatasetSourceInfo;
embeddings: DatasetSourceInfo;
}
export interface DatasetLoadRequest {
source: "raw" | "embeddings";
max_docs: number;
min_text_length: number;
source_filter?: string;
build_index: boolean;
}
export interface DatasetLoadResponse {
documents_loaded?: number;
documents_skipped?: number;
documents_created?: number;
total_chunks?: number;
chunks_indexed?: number;
chromadb_vectors?: number;
index_built: boolean;
seconds: number;
source?: string;
}
export interface DatasetPreviewDoc {
doc_id: string;
filename: string;
text_preview: string;
text_length: number;
}
export interface DatasetPreviewResponse {
count: number;
documents: DatasetPreviewDoc[];
}
// ---- Context Analysis types ----
export interface ContextAssociatedWord {
word: string;
score: number;
}
export interface ContextExample {
doc_id: string;
snippet: string;
}
export interface ContextMeaning {
cluster_id: number;
occurrences: number;
confidence: number;
associated_words: ContextAssociatedWord[];
example_contexts: ContextExample[];
}
export interface ContextAnalysisResponse {
keyword: string;
total_occurrences: number;
meanings: ContextMeaning[];
}
// ---- UI State ----
export type EvalSection = "distribution" | "disambiguation" | "retrieval";