rust-kgdb 0.3.9 → 0.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +116 -15
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -581,42 +581,143 @@ HyperMind is a **production-grade neuro-symbolic agentic framework** built on ru
581
581
  - **Neural Planning**: LLM-based planning (Claude, GPT-4o)
582
582
  - **Symbolic Execution**: rust-kgdb knowledge graph operations
583
583
 
584
- ### Quick Start: Create an Agent in 3 Lines
584
+ ### How It Works: Two Modes
585
+
586
+ ```
587
+ ┌─────────────────────────────────────────────────────────────────────────────┐
588
+ │ HyperMind Agent Flow │
589
+ ├─────────────────────────────────────────────────────────────────────────────┤
590
+ │ │
591
+ │ User: "Find all professors" │
592
+ │ │ │
593
+ │ ▼ │
594
+ │ ┌─────────────────────────────────────────────────────────────────────┐ │
595
+ │ │ MODE 1: Mock (No API Keys) MODE 2: LLM (With API Keys) │ │
596
+ │ │ ───────────────────────────── ─────────────────────────── │ │
597
+ │ │ • Pattern matches question • Sends to Claude/GPT-4o │ │
598
+ │ │ • Returns pre-defined SPARQL • LLM generates SPARQL │ │
599
+ │ │ • Instant (~6ms latency) • ~2-6 second latency │ │
600
+ │ │ • For testing/benchmarks • For production use │ │
601
+ │ └─────────────────────────────────────────────────────────────────────┘ │
602
+ │ │ │
603
+ │ ▼ │
604
+ │ SPARQL Query: "SELECT ?x WHERE { ?x a ub:Professor }" │
605
+ │ │ │
606
+ │ ▼ │
607
+ │ rust-kgdb Cluster: Executes query, returns results │
608
+ │ │ │
609
+ │ ▼ │
610
+ │ Results: [{ bindings: { x: "http://..." } }, ...] │
611
+ │ │
612
+ └─────────────────────────────────────────────────────────────────────────────┘
613
+ ```
614
+
615
+ ### Mode 1: Mock Mode (No API Keys Required)
616
+
617
+ Use this for **testing, benchmarking, and development**. The mock model pattern-matches your question against 12 pre-defined LUBM queries:
585
618
 
586
619
  ```typescript
587
620
  const { HyperMindAgent } = require('rust-kgdb')
588
621
 
589
- // 1. Spawn an agent
622
+ // Spawn agent with mock model - NO API KEYS NEEDED
590
623
  const agent = await HyperMindAgent.spawn({
591
- name: 'university-explorer',
592
- model: 'mock', // 'mock' | 'claude-sonnet-4' | 'gpt-4o'
593
- tools: ['kg.sparql.query'], // Available tools
594
- endpoint: 'http://localhost:30080' // rust-kgdb cluster endpoint
624
+ name: 'test-agent',
625
+ model: 'mock', // Uses pattern matching, not LLM
626
+ tools: ['kg.sparql.query'],
627
+ endpoint: 'http://localhost:30080' // Your rust-kgdb endpoint
595
628
  })
596
629
 
597
- // 2. Ask natural language questions
630
+ // Ask a question (pattern-matched to LUBM queries)
598
631
  const result = await agent.call('Find all professors in the database')
599
632
 
600
- // 3. Get results
601
- console.log(result.sparql) // "PREFIX ub: <...> SELECT ?x WHERE { ?x a ub:Professor }"
602
- console.log(result.results) // [{ bindings: { x: 'http://...' } }, ...]
603
633
  console.log(result.success) // true
634
+ console.log(result.sparql) // "PREFIX ub: <...> SELECT ?x WHERE { ?x a ub:Professor }"
635
+ console.log(result.results) // Query results from your database
636
+ ```
637
+
638
+ **Supported Mock Questions (12 LUBM patterns):**
639
+ | Question Pattern | Generated SPARQL |
640
+ |-----------------|------------------|
641
+ | "Find all professors..." | `SELECT ?x WHERE { ?x a ub:Professor }` |
642
+ | "List all graduate students" | `SELECT ?x WHERE { ?x a ub:GraduateStudent }` |
643
+ | "How many courses..." | `SELECT (COUNT(?x) AS ?count) WHERE { ?x a ub:Course }` |
644
+ | "Find students and their advisors" | `SELECT ?student ?advisor WHERE { ?student ub:advisor ?advisor }` |
645
+
646
+ ### Mode 2: LLM Mode (Requires API Keys)
647
+
648
+ Use this for **production** with real LLM-powered query generation:
649
+
650
+ ```bash
651
+ # Set environment variables BEFORE running your code
652
+ export ANTHROPIC_API_KEY="sk-ant-api03-..." # For Claude
653
+ export OPENAI_API_KEY="sk-proj-..." # For GPT-4o
654
+ ```
655
+
656
+ ```typescript
657
+ const { HyperMindAgent } = require('rust-kgdb')
658
+
659
+ // Spawn agent with Claude (requires ANTHROPIC_API_KEY)
660
+ const agent = await HyperMindAgent.spawn({
661
+ name: 'prod-agent',
662
+ model: 'claude-sonnet-4', // Real LLM - generates dynamic SPARQL
663
+ tools: ['kg.sparql.query', 'kg.motif.find'],
664
+ endpoint: 'http://localhost:30080'
665
+ })
666
+
667
+ // Any natural language question works (not limited to patterns)
668
+ const result = await agent.call('Find professors who teach AI and have more than 5 publications')
669
+
670
+ // LLM generates appropriate SPARQL dynamically
671
+ console.log(result.sparql) // Complex query generated by Claude
604
672
  ```
605
673
 
606
- ### Run the Benchmark Suite
674
+ **Supported LLM Models:**
675
+ | Model | Environment Variable | Use Case |
676
+ |-------|---------------------|----------|
677
+ | `claude-sonnet-4` | `ANTHROPIC_API_KEY` | Best accuracy |
678
+ | `gpt-4o` | `OPENAI_API_KEY` | Alternative |
679
+ | `mock` | None | Testing only |
680
+
681
+ ### Run the Benchmark
607
682
 
608
683
  ```typescript
609
684
  const { runHyperMindBenchmark } = require('rust-kgdb')
610
685
 
611
- // Run 12 LUBM benchmark tests
686
+ // Test with mock model (no API keys)
612
687
  const stats = await runHyperMindBenchmark('http://localhost:30080', 'mock', {
613
- saveResults: true // Saves to hypermind_benchmark_*.json
688
+ saveResults: true // Saves JSON file with results
614
689
  })
615
690
 
616
- console.log(`Success Rate: ${stats.hypermindSyntaxRate}%`) // 100%
617
- console.log(`Avg Latency: ${stats.avgLatencyMs}ms`) // ~6.58ms
691
+ console.log(`Success: ${stats.syntaxSuccess}/${stats.totalTests}`) // 12/12
692
+ console.log(`Latency: ${stats.avgLatencyMs.toFixed(1)}ms`) // ~6.58ms
693
+ ```
694
+
695
+ ### Important: Embeddings Are Separate
696
+
697
+ **HyperMind agents do NOT use embeddings for query generation.** Embeddings are a separate feature for semantic similarity search:
698
+
699
+ ```typescript
700
+ const { EmbeddingService, GraphDB } = require('rust-kgdb')
701
+
702
+ // Embeddings: For semantic similarity search (SEPARATE from HyperMind)
703
+ const embeddings = new EmbeddingService({ provider: 'mock', dimensions: 384 })
704
+ embeddings.addText('professor', 'A teacher at a university')
705
+ embeddings.addText('student', 'Someone who studies at a university')
706
+ const similar = embeddings.findSimilar('teacher', 5) // Finds "professor"
707
+
708
+ // HyperMind: For natural language to SPARQL (NO embeddings used)
709
+ const agent = await HyperMindAgent.spawn({ model: 'mock', ... })
710
+ const result = await agent.call('Find professors') // Generates SPARQL query
618
711
  ```
619
712
 
713
+ | Feature | HyperMind Agent | Embedding Service |
714
+ |---------|-----------------|-------------------|
715
+ | **Purpose** | NL → SPARQL queries | Semantic similarity |
716
+ | **Input** | Natural language question | Text to embed |
717
+ | **Output** | SPARQL query + results | Similar items |
718
+ | **Uses embeddings?** | No | Yes |
719
+ | **Requires API key?** | Only for LLM mode | No (mock available) |
720
+
620
721
  ### Architecture Overview
621
722
 
622
723
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rust-kgdb",
3
- "version": "0.3.9",
3
+ "version": "0.3.10",
4
4
  "description": "High-performance RDF/SPARQL database with GraphFrames analytics, vector embeddings, Datalog reasoning, Pregel BSP processing, and HyperMind neuro-symbolic agentic framework",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",