- Add @deprecated JSDoc tags to TypeScript definitions
- Update all documentation examples to use modern add() and relate() API
- Preserve batch operations (addNouns, addVerbs) as they remain current
- Mark deprecated methods in both source and compiled definitions
Migration guide:
- addNoun(data, type, metadata) → add(data, { nounType: type, ...metadata })
- addVerb(source, target, type, metadata) → relate(source, target, type, metadata)
11 KiB
🧠 Brainy Clustering Algorithms - Complete Analysis
🎯 Current State & Capabilities
✅ Existing Infrastructure (Excellent Foundation)
1. HNSW Hierarchical Clustering
// ALREADY IMPLEMENTED & OPTIMIZED
brain.neural.clusters({ algorithm: 'hierarchical', level: 2 })
How it works:
- Leverages HNSW natural hierarchy: Uses existing index levels as natural cluster boundaries
- O(n) performance: Much faster than O(n²) traditional clustering
- Multi-level granularity: Higher levels = fewer, broader clusters; Lower levels = more, specific clusters
- Representative sampling: Uses HNSW level nodes as natural cluster centers
Performance characteristics:
- Excellent for large datasets (millions of items)
- Preserves semantic relationships from vector space
- Automatic granularity control via level parameter
2. Distance-Based Algorithms
// COMPREHENSIVE DISTANCE FUNCTIONS AVAILABLE
euclideanDistance, cosineDistance, manhattanDistance, dotProductDistance
Optimized implementations:
- Batch processing:
calculateDistancesBatch()with parallelization - Multiple metrics: Choose optimal distance function per use case
- Performance optimized: Faster than GPU for small vectors due to no transfer overhead
3. Rich Semantic Taxonomy
// 25+ NOUN TYPES & 35+ VERB TYPES
NounType: Person, Organization, Document, Concept, Event, Media, etc.
VerbType: RelatedTo, Contains, PartOf, Causes, CreatedBy, etc.
Semantic clustering capabilities:
- Type-based clustering: Group by semantic categories
- Cross-type relationships: Use verb types to find semantic bridges
- Hierarchical taxonomies: Natural clustering within and across types
4. Graph Structure
// VERB RELATIONSHIPS CREATE RICH GRAPH
await brain.relate(sourceId, targetId, VerbType.Causes, { strength: 0.8 })
Graph-based clustering potential:
- Connected components: Find strongly connected groups
- Community detection: Use relationship strength for clustering
- Multi-modal clustering: Combine graph + vector + taxonomy
🚀 Advanced Clustering Algorithms We Can Implement
1. ✅ Already Implemented: HNSW Hierarchical
// PRODUCTION READY - Uses existing HNSW levels
const clusters = await brain.neural.clusters({
algorithm: 'hierarchical',
level: 2, // Control granularity
maxClusters: 15
})
Performance: A+ - O(n) leveraging existing index structure
2. 🔥 Semantic Taxonomy Clustering
// IMPLEMENT: Fast type-based clustering with cross-type bridges
const clusters = await brain.neural.clusterByDomain('nounType', {
preserveTypeBoundaries: false, // Allow cross-type clusters
bridgeStrength: 0.8, // Minimum relationship strength for bridges
hybridWeighting: {
taxonomy: 0.4, // 40% weight to type similarity
vector: 0.4, // 40% weight to vector similarity
graph: 0.2 // 20% weight to relationship strength
}
})
Algorithm approach:
- Primary clustering by taxonomy: Group by NounType/VerbType first
- Vector refinement: Sub-cluster within types using vector similarity
- Cross-type bridging: Find relationships that bridge type boundaries
- Weighted fusion: Combine taxonomy + vector + graph signals
Performance: A+ - O(n log n) - taxonomy grouping is O(n), refinement is HNSW-accelerated
3. 🔥 Graph Community Detection
// IMPLEMENT: Relationship-based clustering
const clusters = await brain.neural.clusterByConnections({
algorithm: 'modularity', // or 'louvain', 'leiden'
minCommunitySize: 3,
relationshipWeights: {
[VerbType.Creates]: 1.0,
[VerbType.PartOf]: 0.8,
[VerbType.RelatedTo]: 0.5
}
})
Algorithm approach:
- Build weighted graph: Use verbs as edges, weights from relationship types + metadata
- Community detection: Apply Louvain or Leiden algorithm for modularity optimization
- Semantic enhancement: Use vector similarity to refine community boundaries
Performance: A - O(n log n) for sparse graphs, handles millions of relationships efficiently
4. 🔥 Multi-Modal Fusion Clustering
// IMPLEMENT: Best of all worlds
const clusters = await brain.neural.clusters({
algorithm: 'multimodal',
signals: {
vector: { weight: 0.5, metric: 'cosine' },
graph: { weight: 0.3, algorithm: 'modularity' },
taxonomy: { weight: 0.2, crossTypeThreshold: 0.8 }
},
fusion: 'weighted_ensemble' // or 'consensus', 'hierarchical'
})
Algorithm approach:
- Independent clustering: Run HNSW, graph, and taxonomy clustering separately
- Consensus building: Find agreement between different clustering results
- Conflict resolution: Use weighted voting or hierarchical merging for disagreements
- Quality optimization: Iteratively refine based on silhouette scores
Performance: A - O(n log n) - parallel execution of component algorithms
5. 💎 Temporal Pattern Clustering
// IMPLEMENT: Time-aware clustering using existing infrastructure
const clusters = await brain.neural.clusterByTime('createdAt', [
{ start: new Date('2024-01-01'), end: new Date('2024-06-30'), label: 'H1 2024' },
{ start: new Date('2024-07-01'), end: new Date('2024-12-31'), label: 'H2 2024' }
], {
evolution: 'track', // Track how clusters evolve over time
stability: 0.7, // Minimum stability threshold
trendAnalysis: true // Include trend detection
})
Algorithm approach:
- Time window clustering: Apply HNSW clustering within each time window
- Cluster evolution tracking: Match clusters across time windows using vector similarity
- Trend analysis: Detect growing, shrinking, merging, splitting patterns
- Stability scoring: Measure cluster consistency over time
Performance: A+ - O(k*n log n) where k = number of time windows
6. 💎 DBSCAN with Adaptive Parameters
// IMPLEMENT: Density-based clustering with smart parameter selection
const clusters = await brain.neural.clusters({
algorithm: 'dbscan',
autoParams: true, // Automatically select eps and minPts
distanceMetric: 'cosine',
outlierHandling: 'soft' // Soft assignment instead of hard outliers
})
Algorithm approach:
- Adaptive parameter selection: Use HNSW k-NN distances to estimate optimal eps
- Multi-scale analysis: Run DBSCAN at multiple scales and merge results
- Soft outlier assignment: Assign outliers to nearest clusters with confidence scores
Performance: A - O(n log n) using HNSW for neighbor queries
📊 Performance Comparison Matrix
| Algorithm | Time Complexity | Space | Large Scale | Semantic Quality | Graph Aware |
|---|---|---|---|---|---|
| HNSW Hierarchical | O(n) | O(n) | ✅ Excellent | ✅ Very Good | ❌ No |
| Taxonomy Fusion | O(n log n) | O(n) | ✅ Excellent | 🔥 Exceptional | ⚡ Partial |
| Graph Communities | O(n log n) | O(e) | ✅ Very Good | ✅ Very Good | 🔥 Exceptional |
| Multi-Modal | O(n log n) | O(n) | ✅ Very Good | 🔥 Exceptional | 🔥 Exceptional |
| Temporal Patterns | O(k*n log n) | O(n) | ⚡ Good | ✅ Very Good | ⚡ Partial |
| Adaptive DBSCAN | O(n log n) | O(n) | ✅ Very Good | ✅ Very Good | ❌ No |
🎯 Specific Improvements Using Existing Capabilities
1. Enhanced HNSW Clustering (Easy Win)
// IMPROVE EXISTING: Add semantic post-processing
private async enhanceHNSWClusters(clusters: SemanticCluster[]): Promise<SemanticCluster[]> {
return Promise.all(clusters.map(async cluster => {
// Get actual metadata for cluster members
const members = await this.brain.getNouns(cluster.members.map(id => ({ id })))
// Analyze semantic characteristics
const semanticProfile = this.analyzeSemanticProfile(members)
// Generate meaningful cluster labels
const label = await this.generateClusterLabel(members, semanticProfile)
// Calculate cluster coherence using multiple signals
const coherence = this.calculateMultiModalCoherence(members)
return {
...cluster,
label,
semanticProfile,
coherence,
quality: coherence.overall
}
}))
}
2. Intelligent Algorithm Selection
// IMPLEMENT: Smart routing based on data characteristics
private selectOptimalAlgorithm(dataCharacteristics: {
size: number,
dimensionality: number,
graphDensity: number,
typeDistribution: Record<string, number>
}): string {
if (dataCharacteristics.size > 100000) {
return 'hierarchical' // HNSW scales best
}
if (dataCharacteristics.graphDensity > 0.1) {
return 'multimodal' // Rich graph structure
}
if (Object.keys(dataCharacteristics.typeDistribution).length > 10) {
return 'taxonomy' // Diverse semantic types
}
return 'hierarchical' // Safe default
}
3. Streaming Cluster Updates
// IMPLEMENT: Incremental clustering using existing infrastructure
public async updateClusters(newItems: string[]): Promise<SemanticCluster[]> {
// Use HNSW nearest neighbor for fast cluster assignment
const assignments = await Promise.all(
newItems.map(async itemId => {
const neighbors = await this.brain.neural.neighbors(itemId, { limit: 5 })
return this.assignToNearestCluster(itemId, neighbors, this.existingClusters)
})
)
// Incrementally update cluster centroids and boundaries
return this.updateClusterBoundaries(assignments)
}
🏆 Recommended Implementation Priority
🔥 Phase 1: High Impact, Easy Implementation
- Enhanced HNSW Clustering: Add semantic post-processing to existing algorithm
- Taxonomy-Aware Clustering: Leverage existing NounType/VerbType enums
- Intelligent Algorithm Selection: Route based on data characteristics
⚡ Phase 2: Advanced Features
- Graph Community Detection: Use existing verb relationships
- Multi-Modal Fusion: Combine all signals intelligently
- Streaming Updates: Incremental cluster maintenance
💎 Phase 3: Cutting Edge
- Temporal Pattern Analysis: Track cluster evolution over time
- Adaptive DBSCAN: Dynamic parameter selection
- Explainable Clustering: Generate cluster explanations and reasoning
🎯 Key Advantages of Our Approach
✅ Leverages Existing Infrastructure
- HNSW index: Already optimized for large-scale vector operations
- Distance functions: Battle-tested and performance-optimized
- Semantic taxonomy: Rich type system with 60+ semantic categories
- Graph structure: Relationship network from verb connections
✅ Multiple Clustering Paradigms
- Vector similarity: Traditional embedding-based clustering
- Graph structure: Relationship-based community detection
- Semantic taxonomy: Type-aware intelligent grouping
- Temporal patterns: Time-aware cluster evolution
- Multi-modal fusion: Best of all worlds
✅ Scalability & Performance
- O(n) hierarchical clustering: Leveraging HNSW levels
- Parallel processing: Batch distance calculations optimized
- Streaming support: Real-time cluster updates
- Memory efficient: Existing index structures reused
Our clustering algorithms are not just competitive - they're architecturally superior by leveraging Brainy's unique multi-modal semantic infrastructure.