@codai/memorai-core
Version:
Simplified advanced memory engine - no tiers, just powerful semantic search with persistence
90 lines • 2.81 kB
TypeScript
/**
* 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