UNPKG

@codai/memorai-core

Version:

Simplified advanced memory engine - no tiers, just powerful semantic search with persistence

106 lines 3.17 kB
/** * Advanced Semantic Search Engine for Memorai * Provides fuzzy matching, semantic similarity, and intelligent query understanding */ import type { MemoryMetadata, MemoryResult } from '../types/index.js'; import { EmbeddingService } from '../embedding/EmbeddingService.js'; export interface SemanticSearchOptions { enableFuzzyMatching?: boolean; fuzzyThreshold?: number; enableSemanticExpansion?: boolean; enableTypoTolerance?: boolean; weightFactors?: { semantic: number; fuzzy: number; recency: number; frequency: number; importance: number; }; contextWindow?: number; diversityFactor?: number; limit?: number; } export interface SearchContext { recentQueries: string[]; userPreferences: Record<string, unknown>; sessionContext: string[]; timeContext: { timeOfDay: 'morning' | 'afternoon' | 'evening' | 'night'; dayOfWeek: string; season: string; }; } export interface EnhancedMemoryResult extends MemoryResult { searchScore: number; fuzzyScore: number; semanticScore: number; recencyScore: number; frequencyScore: number; contextRelevance: number; explanation: string; relatedConcepts: string[]; } /** * Advanced semantic search with fuzzy matching and intelligent ranking */ export declare class SemanticSearchEngine { private embeddingService; private queryCache; private conceptCache; constructor(embeddingService: EmbeddingService); /** * Perform advanced semantic search with multiple ranking factors */ search(query: string, memories: MemoryMetadata[], options?: SemanticSearchOptions, context?: SearchContext): Promise<EnhancedMemoryResult[]>; /** * Preprocess query to handle typos and normalize text */ private preprocessQuery; /** * Get or generate embedding for query with caching */ private getQueryEmbedding; /** * Expand query with semantically related concepts */ private expandQuery; /** * Score a single memory against the query */ private scoreMemory; /** * Calculate semantic similarity score using embeddings */ private calculateSemanticScore; /** * Calculate fuzzy matching score */ private calculateFuzzyScore; /** * Calculate recency score (more recent = higher score) */ private calculateRecencyScore; /** * Calculate frequency score based on access count */ private calculateFrequencyScore; /** * Calculate context relevance score */ private calculateContextRelevance; /** * Apply diversity ranking to avoid too similar results */ private applyDiversityRanking; private cosineSimilarity; private fuzzyMatch; private jaroWinklerDistance; private correctTypos; private generateRelatedConcepts; private generateExplanation; private extractRelatedConcepts; private checkPreferenceMatch; private calculateTimeRelevance; private getTimeOfDayScore; private calculateContentSimilarity; } //# sourceMappingURL=SemanticSearchEngine.d.ts.map