Converge Knowledge
A self-learning knowledge base built in pure Rust, inspired by ruvector. The system gets smarter the more you use it through GNN-inspired learning, meta-learning, and agent memory patterns.
When to Use This
| Use Case | Capability | Module |
|---|---|---|
| Building an AI agent with memory | Store past actions, learn from mistakes | AgenticDB |
| Semantic search over documents | Vector similarity + learning | KnowledgeBase |
| Ingesting markdown/PDF files | Chunking, metadata extraction | ingest |
| Claude Desktop integration | Natural language knowledge access | MCP Server |
| Microservice knowledge store | High-performance RPC | gRPC Server |
| Detecting recurring patterns | Time-based activity analysis | TimeCrystal |
| Quick adaptation to new tasks | Few-shot learning | MetaLearner |
| Preventing model forgetting | EWC, experience replay | OnlineLearner |
Capabilities
1. Core Knowledge Base
When useful: You need semantic search over text with learning from user feedback.
use ;
let kb = open.await?;
// Add knowledge
kb.add_entry.await?;
// Search (learns from usage)
let results = kb.search.await?;
// Feedback improves future searches
kb.record_feedback.await?;
2. AgenticDB - Agent Memory System
When useful: Building AI agents that need to remember, learn, and improve over time.
Reflexion Episodes (Self-Critique)
When useful: Agent should learn from its mistakes and not repeat them.
use ;
let db = new;
// Agent failed - record what went wrong
let episode = new
.with_critique;
db.add_reflexion.await;
// Later: check past failures before attempting similar task
let past_failures = db.query_similar_failures.await;
Skill Library
When useful: Agent should consolidate successful patterns for reuse.
use ;
let skill = new
.with_preconditions
.with_postconditions;
db.register_skill.await;
Causal Memory
When useful: Agent should understand cause-effect relationships.
use ;
// Build knowledge: "Using unwrap() causes panics"
let unwrap_id = memory.add_node;
let panic_id = memory.add_node;
memory.add_edge;
// Query: What causes panics?
let causes = memory.find_causes;
// Trace causal chain
let chain = memory.trace_chain;
Learning Sessions (RL)
When useful: Training agent behavior with rewards.
use ;
let session_id = db.start_session.await;
db.record_turn.await;
db.record_turn.await;
db.record_turn.await;
// Get trajectory for training
let trajectory = session.to_trajectory;
let discounted_return = session.discounted_return;
3. Time Crystals - Temporal Patterns
When useful: Detecting periodic behavior patterns (daily coding hours, weekly deploys, etc.)
use ;
let mut memory = new;
// Track daily coding activity
memory.record;
// Predict activity at current time
let expected = memory.predict;
// Detect anomalies (unusual 3am activity)
let crystal = memory.get.unwrap;
if crystal.is_anomalous
// Find best time for an activity
let best_hour = crystal.best_time; // Returns hour with highest activity
4. Online Learning - Continual Adaptation
When useful: Model should adapt to new data without forgetting previous knowledge.
EWC (Elastic Weight Consolidation)
use OnlineLearner;
let mut learner = new
.with_learning_rate
.with_ewc_lambda; // Forgetting prevention strength
// Train on Task A
for in task_a_data
// Consolidate - remember what was important for Task A
learner.consolidate;
// Train on Task B - EWC prevents forgetting Task A
for in task_b_data
Distribution Drift Detection
use DriftDetector;
let mut detector = new.with_threshold;
// Monitor incoming features
if detector.update
if detector.is_drifting
Experience Replay
use ExperienceWindow;
let mut window = new;
// Store experiences
window.add;
// Sample for rehearsal (prevents forgetting)
let batch = window.sample;
for exp in batch
5. Meta-Learning - Learning to Learn
When useful: Agent faces many similar tasks and should learn to adapt quickly.
MAML/Reptile-Style Meta-Learning
use ;
let mut meta = new
.with_meta_lr
.with_inner_lr;
// After completing each task, update meta-learner
meta.meta_update;
meta.meta_update;
// For a new task: get good initialization
let init_params = meta.initialize_for_task;
Few-Shot Learning
// Quick adaptation with few examples
let mut few_shot = from_meta
.with_adapt_steps;
// Add just a few examples
few_shot.add_example;
few_shot.add_example;
// Adapt and predict
few_shot.adapt;
let prediction = few_shot.predict;
Learning Strategy Selection
use ;
// Register strategies that worked
let strategy = new
.with_description
.with_hyperparam
.with_preferred_features;
meta.register_strategy;
// Select best strategy for new task
let task = new.with_data_size.with_noise;
let selected = db.select_strategy.await;
6. Document Ingestion
When useful: Importing documents from files into the knowledge base.
Markdown Files
use ;
let ingester = new;
// Ingest single file (extracts front-matter, chunks by headers)
let doc = ingester.ingest_file.await?;
// Ingest directory recursively
let docs = ingester.ingest_directory.await?;
for chunk in &doc.chunks
PDF Files
use ;
let ingester = new;
let doc = ingester.ingest_file?;
println!;
println!;
for chunk in &doc.chunks
Knowledge Classification (Case vs Background)
use ;
let mut router = new;
// Project docs are "case knowledge" (high priority, context-specific)
router.add_rule;
// Reference docs are "background knowledge" (supporting context)
router.add_rule;
// Classify incoming content
let knowledge_type = router.classify;
7. Interfaces
gRPC Server
When useful: Microservice integration, high-performance RPC.
# Start server
# Or with cargo
service KnowledgeService {
rpc AddEntry(AddEntryRequest) returns (AddEntryResponse);
rpc Search(SearchRequest) returns (SearchResponse);
rpc SearchStream(SearchRequest) returns (stream SearchResult);
rpc RecordFeedback(FeedbackRequest) returns (FeedbackResponse);
// ... 12 methods total
}
MCP Server (Claude Desktop)
When useful: Using the knowledge base directly from Claude Desktop.
Tools available in Claude:
knowledge_search- Semantic searchknowledge_add- Add entriesknowledge_get- Get by IDknowledge_feedback- Improve searchknowledge_stats- Statistics
CLI
# Add knowledge
# Search
# Import files
# Stats
Architecture
┌─────────────────────────────────────────────────────────────────────┐
│ Converge Knowledge │
├─────────────────────────────────────────────────────────────────────┤
│ Interfaces │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────────────────┐ │
│ │ CLI │ │ gRPC │ │ MCP │ │ Library API │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────────────┬────────────┘ │
│ └────────────┴────────────┴────────────────────┘ │
│ │ │
├──────────────────────────────┼───────────────────────────────────────┤
│ Core │ │
│ ┌───────────────────────────┴────────────────────────────────────┐ │
│ │ KnowledgeBase │ │
│ │ ┌─────────────┐ ┌───────────────┐ ┌──────────────────────┐ │ │
│ │ │ Embedding │ │ Learning │ │ Storage │ │ │
│ │ │ Engine │ │ Engine │ │ Backend │ │ │
│ │ │ Hash/OpenAI │ │ GNN + EWC │ │ Bincode │ │ │
│ │ └─────────────┘ └───────────────┘ └──────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
├───────────────────────────────────────────────────────────────────────┤
│ AgenticDB (Agent Memory) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Reflexion │ │ Skill │ │ Causal │ │ Learning │ │
│ │ Episodes │ │ Library │ │ Memory │ │ Sessions │ │
│ │ Self-critique│ │ Patterns │ │ Hypergraph │ │ RL Rewards │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
├───────────────────────────────────────────────────────────────────────┤
│ Advanced Learning │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Time │ │ Online │ │ Meta │ │ Drift │ │
│ │ Crystals │ │ Learner │ │ Learner │ │ Detector │ │
│ │ Temporal │ │ EWC+Replay │ │ MAML-style │ │ Shift Alert │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
├───────────────────────────────────────────────────────────────────────┤
│ Ingestion │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Markdown │ │ PDF │ │ Knowledge │ │
│ │ Ingester │ │ Ingester │ │ Router │ │
│ │ Chunks/YAML │ │ Pages/Meta │ │ Case vs Bkgd │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└───────────────────────────────────────────────────────────────────────┘
Quick Start
# Build
# Run tests
# Start gRPC server
# Start MCP server (for Claude Desktop)
# Use CLI
Dependencies
- Rust 2024 Edition (1.85+)
- tokio - Async runtime
- tonic - gRPC
- serde - Serialization
- pulldown-cmark - Markdown parsing
- pdf-extract - PDF text extraction
- OpenAI API (optional) - Production embeddings
License
MIT