UNPKG

@codai/memorai-core

Version:

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

90 lines 2.81 kB
/** * Relationship Extraction Engine * Automatically identifies and extracts relationships between memory entities */ import { MemoryMetadata } from '../types/index.js'; export interface AIMemoryRelationship { id: string; sourceMemoryId: string; targetMemoryId: string; relationshipType: RelationshipType; strength: number; confidence: number; description: string; extractedAt: Date; metadata: { keywords?: string[]; context?: string; evidence?: string[]; }; } export type RelationshipType = 'causal' | 'temporal' | 'semantic' | 'hierarchical' | 'contradictory' | 'supportive' | 'contextual' | 'sequential' | 'associative' | 'comparative'; export interface RelationshipExtractionConfig { openaiApiKey?: string; model: string; minConfidence: number; maxRelationshipsPerMemory: number; enableSemanticAnalysis: boolean; enableTemporalAnalysis: boolean; semanticThreshold: number; } export declare class RelationshipExtractor { private openai?; private config; constructor(config?: Partial<RelationshipExtractionConfig>); /** * Extract relationships from a set of memories */ extractRelationships(memories: MemoryMetadata[]): Promise<AIMemoryRelationship[]>; /** * Extract semantic relationships based on content similarity and tags */ private extractSemanticRelationships; /** * Extract temporal relationships based on timestamps */ private extractTemporalRelationships; /** * Extract relationships using AI analysis */ private extractAIRelationships; /** * Build prompt for AI relationship extraction */ private buildRelationshipPrompt; /** * Parse AI response into relationships */ private parseAIRelationships; /** * Calculate basic content similarity using keyword overlap */ private calculateContentSimilarity; /** * Check if two memory types are related */ private areTypesRelated; /** * Remove duplicate relationships */ private deduplicateRelationships; /** * Get relationships for a specific memory */ getRelationshipsForMemory(memoryId: string, allRelationships: AIMemoryRelationship[]): Promise<{ outgoing: AIMemoryRelationship[]; incoming: AIMemoryRelationship[]; total: number; }>; /** * Analyze relationship network metrics */ analyzeNetworkMetrics(relationships: AIMemoryRelationship[]): Promise<{ totalRelationships: number; averageRelationshipsPerMemory: number; strongestRelationshipType: RelationshipType; networkDensity: number; centralMemories: string[]; }>; } //# sourceMappingURL=RelationshipExtractor.d.ts.map