Session 2 — Concept Clusters & Context Boost
What We Built
Fixed the sparsity ceiling by introducing ConceptCluster — groups of related nodes that activate together. Added context boost (Les's idea) which temporarily lowers thresholds for active clusters.
Key Concepts
Concept Cluster
A group of related ResonanceNodes that activate together. Built automatically using k-means clustering — nodes with similar signatures end up in the same cluster.
Analogy
When someone says "home networking" your brain doesn't think of one thing — router, firewall, DNS, subnet all light up together. Same section of the library.
Context Boost
When a cluster is active, its member nodes get their thresholds temporarily lowered. Related knowledge becomes easier to activate — like your brain being primed for networking concepts after thinking about routers all day.
Analogy
You've been studying Spanish all week. Someone says "banco" and you instantly think "bank" in Spanish — not a park bench. Your Spanish cluster is context-boosted.
Centroid
The average signature of all nodes in a cluster — its center of gravity. Used as a fast relevance check: compare a query against 32 centroids instead of 100,000 individual nodes.
Analogy
A section label in a library. "SCIENCE" tells you what's inside without reading every spine.
Cluster-Aware Search
Search that finds the most relevant cluster first, then checks ALL member nodes — not just nodes in one LSH bucket. This is what broke through the sparsity ceiling.
The Sparsity Fix
| Method | Sparsity | Notes |
|---|---|---|
| Bucket-only search | 0.48% | Hit the bucket ceiling |
| Cluster-aware search | 2.43% ✅ | Searches whole clusters |
| Target | 1–4% | Brain-like sparsity |
Benchmarks Achieved
| Metric | Target | Result |
|---|---|---|
| Sparsity | 1–4% | 2.43% ✅ |
| Clustering (100k → 32) | < 30 sec | 4.4s ✅ |
| Cluster search speed | < 50ms | 30.9ms ✅ |
| Context boost | boosted > unboosted | 3431→3506 ✅ |
Key Files
index.py— ConceptCluster, auto_cluster(), activate_cluster()
Key Methods
index.auto_cluster(num_clusters=32) # k-means clustering
index.activate_cluster(cluster_id) # context boost a cluster
index.deactivate_cluster(cluster_id) # reset thresholds
cluster.relevance(query) # centroid similarity check