import type { CachedDocument, OfflineVectorExport } from './types.js'; interface LocalRAGResult { answer: string; sources: Array<{ title: string; snippet: string; score: number; }>; topScore: number; } /** * Local RAG engine using TF-IDF similarity * * Provides offline fallback when backend is unavailable. * Uses simple TF-IDF for document matching (no vector embeddings). */ export interface ExportStatus { loaded: boolean; loadedFromExport: boolean; documentCount: number; chunkCount: number; exportVersion?: string; exportedAt?: string; } export declare class CyberneticLocalRAG { private documents; private idf; private indexed; private loadedFromExport; private exportVersion?; private exportedAt?; private vocabulary; /** * Check if documents are indexed */ isIndexed(): boolean; /** * Index documents for local search */ index(documents: CachedDocument[]): Promise; /** * Process query and generate response */ ask(query: string): Promise; /** * Reset the index */ reset(): void; /** * Load pre-computed vectors from an export file * This skips client-side TF-IDF computation by using pre-computed values * * @param exportData - The offline vector export data */ loadFromExport(exportData: OfflineVectorExport): Promise; /** * Get export status information */ getExportStatus(): ExportStatus; /** * Tokenize text into words */ private tokenize; /** * Compute term frequency */ private computeTermFrequency; /** * Compute cosine similarity between two TF-IDF vectors */ private cosineSimilarity; /** * Extract most relevant snippet from content */ private extractRelevantSnippet; /** * Check if word is a stop word */ private isStopWord; } export {}; //# sourceMappingURL=CyberneticLocalRAG.d.ts.map