@ruvector/ruvllm 3.0.0 → 4.0.0
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.
- package/GPU-LOOP.md +229 -0
- package/LICENSE +201 -0
- package/NOTICE +9 -0
- package/README.md +157 -362
- package/examples/gpu-loop.example.json +26 -0
- package/package.json +50 -121
- package/src/adapters-cli.mjs +23 -0
- package/src/adapters.mjs +91 -0
- package/src/cli.mjs +30 -0
- package/src/engine.mjs +238 -0
- package/src/fixture.mjs +38 -0
- package/src/gpu-host.mjs +47 -0
- package/src/gpu-loop-cli.mjs +67 -0
- package/src/gpu-loop.mjs +184 -0
- package/src/gpu-spool-adapter.mjs +80 -0
- package/src/vast-host-adapter.mjs +274 -0
- package/bin/cli.js +0 -1040
- package/dist/cjs/benchmarks/embedding-benchmark.d.ts +0 -102
- package/dist/cjs/benchmarks/embedding-benchmark.d.ts.map +0 -1
- package/dist/cjs/benchmarks/embedding-benchmark.js +0 -436
- package/dist/cjs/benchmarks/index.d.ts +0 -34
- package/dist/cjs/benchmarks/index.d.ts.map +0 -1
- package/dist/cjs/benchmarks/index.js +0 -132
- package/dist/cjs/benchmarks/model-comparison.d.ts +0 -71
- package/dist/cjs/benchmarks/model-comparison.d.ts.map +0 -1
- package/dist/cjs/benchmarks/model-comparison.js +0 -476
- package/dist/cjs/benchmarks/routing-benchmark.d.ts +0 -70
- package/dist/cjs/benchmarks/routing-benchmark.d.ts.map +0 -1
- package/dist/cjs/benchmarks/routing-benchmark.js +0 -289
- package/dist/cjs/contrastive.d.ts +0 -229
- package/dist/cjs/contrastive.d.ts.map +0 -1
- package/dist/cjs/contrastive.js +0 -589
- package/dist/cjs/engine.d.ts +0 -160
- package/dist/cjs/engine.d.ts.map +0 -1
- package/dist/cjs/engine.js +0 -552
- package/dist/cjs/export.d.ts +0 -182
- package/dist/cjs/export.d.ts.map +0 -1
- package/dist/cjs/export.js +0 -422
- package/dist/cjs/federated.d.ts +0 -233
- package/dist/cjs/federated.d.ts.map +0 -1
- package/dist/cjs/federated.js +0 -525
- package/dist/cjs/index.d.ts +0 -68
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -104
- package/dist/cjs/intelligence.d.ts +0 -136
- package/dist/cjs/intelligence.d.ts.map +0 -1
- package/dist/cjs/intelligence.js +0 -226
- package/dist/cjs/lora.d.ts +0 -251
- package/dist/cjs/lora.d.ts.map +0 -1
- package/dist/cjs/lora.js +0 -509
- package/dist/cjs/models.d.ts +0 -129
- package/dist/cjs/models.d.ts.map +0 -1
- package/dist/cjs/models.js +0 -323
- package/dist/cjs/native.d.ts +0 -140
- package/dist/cjs/native.d.ts.map +0 -1
- package/dist/cjs/native.js +0 -98
- package/dist/cjs/session.d.ts +0 -80
- package/dist/cjs/session.d.ts.map +0 -1
- package/dist/cjs/session.js +0 -203
- package/dist/cjs/simd.d.ts +0 -90
- package/dist/cjs/simd.d.ts.map +0 -1
- package/dist/cjs/simd.js +0 -209
- package/dist/cjs/sona.d.ts +0 -223
- package/dist/cjs/sona.d.ts.map +0 -1
- package/dist/cjs/sona.js +0 -562
- package/dist/cjs/streaming.d.ts +0 -55
- package/dist/cjs/streaming.d.ts.map +0 -1
- package/dist/cjs/streaming.js +0 -131
- package/dist/cjs/training.d.ts +0 -312
- package/dist/cjs/training.d.ts.map +0 -1
- package/dist/cjs/training.js +0 -610
- package/dist/cjs/types.d.ts +0 -696
- package/dist/cjs/types.d.ts.map +0 -1
- package/dist/cjs/types.js +0 -6
- package/dist/esm/benchmarks/embedding-benchmark.d.ts +0 -102
- package/dist/esm/benchmarks/embedding-benchmark.d.ts.map +0 -1
- package/dist/esm/benchmarks/embedding-benchmark.js +0 -427
- package/dist/esm/benchmarks/index.d.ts +0 -34
- package/dist/esm/benchmarks/index.d.ts.map +0 -1
- package/dist/esm/benchmarks/index.js +0 -110
- package/dist/esm/benchmarks/model-comparison.d.ts +0 -71
- package/dist/esm/benchmarks/model-comparison.d.ts.map +0 -1
- package/dist/esm/benchmarks/model-comparison.js +0 -434
- package/dist/esm/benchmarks/routing-benchmark.d.ts +0 -70
- package/dist/esm/benchmarks/routing-benchmark.d.ts.map +0 -1
- package/dist/esm/benchmarks/routing-benchmark.js +0 -283
- package/dist/esm/contrastive.d.ts +0 -229
- package/dist/esm/contrastive.d.ts.map +0 -1
- package/dist/esm/contrastive.js +0 -578
- package/dist/esm/engine.d.ts +0 -160
- package/dist/esm/engine.d.ts.map +0 -1
- package/dist/esm/engine.js +0 -548
- package/dist/esm/export.d.ts +0 -182
- package/dist/esm/export.d.ts.map +0 -1
- package/dist/esm/export.js +0 -414
- package/dist/esm/federated.d.ts +0 -233
- package/dist/esm/federated.d.ts.map +0 -1
- package/dist/esm/federated.js +0 -520
- package/dist/esm/index.d.ts +0 -68
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js +0 -84
- package/dist/esm/intelligence.d.ts +0 -136
- package/dist/esm/intelligence.d.ts.map +0 -1
- package/dist/esm/intelligence.js +0 -188
- package/dist/esm/lora.d.ts +0 -251
- package/dist/esm/lora.d.ts.map +0 -1
- package/dist/esm/lora.js +0 -504
- package/dist/esm/models.d.ts +0 -129
- package/dist/esm/models.d.ts.map +0 -1
- package/dist/esm/models.js +0 -282
- package/dist/esm/native.d.ts +0 -140
- package/dist/esm/native.d.ts.map +0 -1
- package/dist/esm/native.js +0 -93
- package/dist/esm/session.d.ts +0 -80
- package/dist/esm/session.d.ts.map +0 -1
- package/dist/esm/session.js +0 -199
- package/dist/esm/simd.d.ts +0 -90
- package/dist/esm/simd.d.ts.map +0 -1
- package/dist/esm/simd.js +0 -205
- package/dist/esm/sona.d.ts +0 -223
- package/dist/esm/sona.d.ts.map +0 -1
- package/dist/esm/sona.js +0 -556
- package/dist/esm/streaming.d.ts +0 -55
- package/dist/esm/streaming.d.ts.map +0 -1
- package/dist/esm/streaming.js +0 -126
- package/dist/esm/training.d.ts +0 -312
- package/dist/esm/training.d.ts.map +0 -1
- package/dist/esm/training.js +0 -603
- package/dist/esm/types.d.ts +0 -696
- package/dist/esm/types.d.ts.map +0 -1
- package/dist/esm/types.js +0 -5
- package/scripts/ensemble-model-compare.js +0 -287
- package/scripts/fix-esm-extensions.mjs +0 -181
- package/scripts/huggingface/README.md +0 -537
- package/scripts/huggingface/publish.sh +0 -112
- package/scripts/hybrid-model-compare.js +0 -373
- package/scripts/improved-model-compare.js +0 -288
- package/scripts/optimized-model-compare.js +0 -364
- package/scripts/real-model-compare.js +0 -280
- package/scripts/smoke-esm.mjs +0 -82
- package/scripts/training/agentic-flow-capabilities.json +0 -329
- package/scripts/training/claude-code-synth.js +0 -505
- package/scripts/training/claude-flow-capabilities.json +0 -1322
- package/scripts/training/claude-hard-negatives.js +0 -222
- package/scripts/training/contrastive-finetune.js +0 -517
- package/scripts/training/ecosystem-triplets.jsonl +0 -1467
- package/scripts/training/generate-ecosystem-triplets.js +0 -1324
- package/scripts/training/routing-dataset.js +0 -634
- package/scripts/training/ruvector-capabilities.json +0 -798
- package/scripts/training/validate-ecosystem.js +0 -381
- package/scripts/training/validation-results.json +0 -23
|
@@ -1,537 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
license: apache-2.0
|
|
3
|
-
language:
|
|
4
|
-
- en
|
|
5
|
-
tags:
|
|
6
|
-
- llm
|
|
7
|
-
- code-generation
|
|
8
|
-
- claude-code
|
|
9
|
-
- sona
|
|
10
|
-
- swarm
|
|
11
|
-
- multi-agent
|
|
12
|
-
- gguf
|
|
13
|
-
- quantized
|
|
14
|
-
- edge-ai
|
|
15
|
-
- self-learning
|
|
16
|
-
- ruvector
|
|
17
|
-
- embeddings
|
|
18
|
-
- routing
|
|
19
|
-
- cost-optimization
|
|
20
|
-
- contrastive-learning
|
|
21
|
-
- triplet-loss
|
|
22
|
-
- infonce
|
|
23
|
-
- agent-routing
|
|
24
|
-
- sota
|
|
25
|
-
- task-routing
|
|
26
|
-
- semantic-search
|
|
27
|
-
library_name: ruvllm
|
|
28
|
-
pipeline_tag: text-classification
|
|
29
|
-
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
|
30
|
-
datasets:
|
|
31
|
-
- custom
|
|
32
|
-
model-index:
|
|
33
|
-
- name: RuvLTRA Claude Code 0.5B
|
|
34
|
-
results:
|
|
35
|
-
- task:
|
|
36
|
-
type: text-classification
|
|
37
|
-
name: Agent Routing
|
|
38
|
-
dataset:
|
|
39
|
-
type: custom
|
|
40
|
-
name: Claude Flow Routing Triplets
|
|
41
|
-
metrics:
|
|
42
|
-
- type: accuracy
|
|
43
|
-
value: 0.882
|
|
44
|
-
name: Embedding-Only Accuracy
|
|
45
|
-
- type: accuracy
|
|
46
|
-
value: 1.0
|
|
47
|
-
name: Hybrid Routing Accuracy
|
|
48
|
-
- type: accuracy
|
|
49
|
-
value: 0.812
|
|
50
|
-
name: Hard Negative Accuracy
|
|
51
|
-
widget:
|
|
52
|
-
- text: "Route: Implement authentication\nAgent:"
|
|
53
|
-
example_title: Code Task
|
|
54
|
-
- text: "Route: Review the pull request\nAgent:"
|
|
55
|
-
example_title: Review Task
|
|
56
|
-
- text: "Route: Fix the null pointer bug\nAgent:"
|
|
57
|
-
example_title: Debug Task
|
|
58
|
-
- text: "Route: Design database schema\nAgent:"
|
|
59
|
-
example_title: Architecture Task
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
# RuvLTRA
|
|
63
|
-
|
|
64
|
-
<p align="center">
|
|
65
|
-
<img src="https://img.shields.io/badge/Hybrid_Routing-100%25-brightgreen" alt="Hybrid Accuracy">
|
|
66
|
-
<img src="https://img.shields.io/badge/Embedding-88.2%25-green" alt="Embedding Accuracy">
|
|
67
|
-
<img src="https://img.shields.io/badge/GGUF-Q4__K__M-blue" alt="GGUF">
|
|
68
|
-
<img src="https://img.shields.io/badge/Latency-<10ms-orange" alt="Latency">
|
|
69
|
-
<img src="https://img.shields.io/badge/Capabilities-388-cyan" alt="Capabilities">
|
|
70
|
-
<img src="https://img.shields.io/badge/License-Apache%202.0-green" alt="License">
|
|
71
|
-
</p>
|
|
72
|
-
|
|
73
|
-
**RuvLTRA** is a collection of optimized models designed for **local routing, embeddings, and task classification** in Claude Code workflows—not for general code generation.
|
|
74
|
-
|
|
75
|
-
## 🎯 Key Philosophy
|
|
76
|
-
|
|
77
|
-
> **Benchmark Note:** HumanEval/MBPP don't apply here. RuvLTRA isn't designed to compete with Claude for code generation from scratch.
|
|
78
|
-
|
|
79
|
-
### Use Case Comparison
|
|
80
|
-
|
|
81
|
-
| Task | RuvLTRA | Claude API |
|
|
82
|
-
|------|---------|------------|
|
|
83
|
-
| Route task to correct agent | ✅ Local, fast, **100% accuracy** | Overkill |
|
|
84
|
-
| Generate embeddings for HNSW | ✅ Purpose-built | No embedding API |
|
|
85
|
-
| Quick classification/routing | ✅ <10ms local | ~500ms+ API |
|
|
86
|
-
| Memory retrieval scoring | ✅ Integrated | Not designed for |
|
|
87
|
-
| Complex code generation | ❌ Use Claude | ✅ |
|
|
88
|
-
| Multi-step reasoning | ❌ Use Claude | ✅ |
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## 🚀 SOTA: 100% Routing Accuracy + Enhanced Embeddings
|
|
93
|
-
|
|
94
|
-
Using **hybrid keyword+embedding strategy** plus **contrastive fine-tuning**, RuvLTRA now achieves:
|
|
95
|
-
|
|
96
|
-
### SOTA Benchmark Results
|
|
97
|
-
|
|
98
|
-
| Metric | Before | After | Method |
|
|
99
|
-
|--------|--------|-------|--------|
|
|
100
|
-
| **Hybrid Routing** | 95% | **100%** | Keyword-First + Embedding Fallback |
|
|
101
|
-
| **Embedding-Only** | 45% | **88.2%** | Contrastive Learning (Triplet + InfoNCE) |
|
|
102
|
-
| **Hard Negatives** | N/A | **81.2%** | Claude Opus 4.5 Generated Pairs |
|
|
103
|
-
|
|
104
|
-
### Strategy Comparison (20 test cases)
|
|
105
|
-
|
|
106
|
-
| Strategy | RuvLTRA | Qwen Base | Improvement |
|
|
107
|
-
|----------|---------|-----------|-------------|
|
|
108
|
-
| Embedding Only | 88.2% | 40.0% | +48.2 pts |
|
|
109
|
-
| **Keyword-First Hybrid** | **100.0%** | 95.0% | +5 pts |
|
|
110
|
-
|
|
111
|
-
### Training Enhancements (v2.4 - Ecosystem Edition)
|
|
112
|
-
|
|
113
|
-
- **2,545 training triplets** (1,078 SOTA + 1,467 ecosystem)
|
|
114
|
-
- **Full ecosystem coverage**: claude-flow, agentic-flow, ruvector
|
|
115
|
-
- **388 total capabilities** across all tools
|
|
116
|
-
- **62 validation tests** with 100% accuracy
|
|
117
|
-
- **Claude Opus 4.5** used for generating confusing pairs
|
|
118
|
-
- **Triplet + InfoNCE loss** for contrastive learning
|
|
119
|
-
- **Real Candle training** with gradient-based weight updates
|
|
120
|
-
|
|
121
|
-
### Ecosystem Coverage (v2.4)
|
|
122
|
-
|
|
123
|
-
| Tool | CLI Commands | Agents | Special Features |
|
|
124
|
-
|------|--------------|--------|------------------|
|
|
125
|
-
| **claude-flow** | 26 (179 subcommands) | 58 types | 27 hooks, 12 workers, 29 skills |
|
|
126
|
-
| **agentic-flow** | 17 commands | 33 types | 32 MCP tools, 9 RL algorithms |
|
|
127
|
-
| **ruvector** | 6 CLI, 22 Rust crates | 12 NPM | 6 attention, 4 graph algorithms |
|
|
128
|
-
|
|
129
|
-
### Supported Agent Types (58+)
|
|
130
|
-
|
|
131
|
-
| Agent | Keywords | Use Cases |
|
|
132
|
-
|-------|----------|-----------|
|
|
133
|
-
| `coder` | implement, build, create | Code implementation |
|
|
134
|
-
| `researcher` | research, investigate, explore | Information gathering |
|
|
135
|
-
| `reviewer` | review, pull request, quality | Code review |
|
|
136
|
-
| `tester` | test, unit, integration | Testing |
|
|
137
|
-
| `architect` | design, architecture, schema | System design |
|
|
138
|
-
| `security-architect` | security, vulnerability, xss | Security analysis |
|
|
139
|
-
| `debugger` | debug, fix, bug, error | Bug fixing |
|
|
140
|
-
| `documenter` | jsdoc, comment, readme | Documentation |
|
|
141
|
-
| `refactorer` | refactor, async/await | Code refactoring |
|
|
142
|
-
| `optimizer` | optimize, cache, performance | Performance |
|
|
143
|
-
| `devops` | deploy, ci/cd, kubernetes | DevOps |
|
|
144
|
-
| `api-docs` | openapi, swagger, api spec | API documentation |
|
|
145
|
-
| `planner` | sprint, plan, roadmap | Project planning |
|
|
146
|
-
|
|
147
|
-
### Extended Capabilities (v2.4)
|
|
148
|
-
|
|
149
|
-
| Category | Examples |
|
|
150
|
-
|----------|----------|
|
|
151
|
-
| **MCP Tools** | memory_store, agent_spawn, swarm_init, hooks_pre-task |
|
|
152
|
-
| **Swarm Topologies** | hierarchical, mesh, ring, star, adaptive |
|
|
153
|
-
| **Consensus** | byzantine, raft, gossip, crdt, quorum |
|
|
154
|
-
| **Learning** | SONA train, LoRA finetune, EWC++ consolidate, GRPO optimize |
|
|
155
|
-
| **Attention** | flash, multi-head, linear, hyperbolic, MoE |
|
|
156
|
-
| **Graph** | mincut, GNN embed, spectral, pagerank |
|
|
157
|
-
| **Hardware** | Metal GPU, NEON SIMD, ANE neural engine |
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## 💰 Cost Savings
|
|
162
|
-
|
|
163
|
-
| Operation | Claude API | RuvLTRA Local | Savings |
|
|
164
|
-
|-----------|------------|---------------|---------|
|
|
165
|
-
| Task routing | $0.003 / call | $0 | **100%** |
|
|
166
|
-
| Embedding generation | $0.0001 / call | $0 | **100%** |
|
|
167
|
-
| Latency | ~500ms | <10ms | **50x faster** |
|
|
168
|
-
|
|
169
|
-
**Monthly example:** ~$250/month savings (50K routing calls + 100K embeddings)
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## 📦 Available Models
|
|
174
|
-
|
|
175
|
-
| Model | Size | RAM | Latency |
|
|
176
|
-
|-------|------|-----|---------|
|
|
177
|
-
| `ruvltra-claude-code-0.5b-q4_k_m.gguf` | 398 MB | ~500 MB | <10ms |
|
|
178
|
-
| `ruvltra-small-0.5b-q4_k_m.gguf` | 398 MB | ~500 MB | <10ms |
|
|
179
|
-
| `ruvltra-medium-1.1b-q4_k_m.gguf` | 800 MB | ~1 GB | <20ms |
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
## 🛠️ Quick Start
|
|
184
|
-
|
|
185
|
-
### Installation
|
|
186
|
-
```bash
|
|
187
|
-
npx ruvector install
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
### Download Models
|
|
191
|
-
```bash
|
|
192
|
-
wget https://huggingface.co/ruv/ruvltra/resolve/main/ruvltra-claude-code-0.5b-q4_k_m.gguf
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
### Python Example
|
|
196
|
-
```python
|
|
197
|
-
from llama_cpp import Llama
|
|
198
|
-
|
|
199
|
-
router = Llama(model_path="ruvltra-claude-code-0.5b-q4_k_m.gguf", n_ctx=512)
|
|
200
|
-
result = router("Route: Add validation\nAgent:", max_tokens=8)
|
|
201
|
-
print(result['choices'][0]['text']) # -> "coder"
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
### Rust Example
|
|
205
|
-
```rust
|
|
206
|
-
use ruvllm::backends::{create_backend, GenerateParams};
|
|
207
|
-
|
|
208
|
-
let mut llm = create_backend();
|
|
209
|
-
llm.load_model("ruvltra-claude-code-0.5b-q4_k_m.gguf", Default::default())?;
|
|
210
|
-
|
|
211
|
-
let agent = llm.generate("Route: fix bug\nAgent:", GenerateParams::default().with_max_tokens(8))?;
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
### Node.js Example (Hybrid Routing)
|
|
215
|
-
```javascript
|
|
216
|
-
const { SemanticRouter } = require('@ruvector/ruvllm');
|
|
217
|
-
|
|
218
|
-
const router = new SemanticRouter({
|
|
219
|
-
modelPath: 'ruvltra-claude-code-0.5b-q4_k_m.gguf',
|
|
220
|
-
strategy: 'keyword-first' // 100% accuracy
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
const result = await router.route('Implement authentication system');
|
|
224
|
-
// { agent: 'coder', confidence: 0.92 }
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## 🔧 Hybrid Routing Algorithm
|
|
230
|
-
|
|
231
|
-
The model achieves 100% accuracy using a two-stage routing strategy:
|
|
232
|
-
|
|
233
|
-
```
|
|
234
|
-
1. KEYWORD MATCHING (Primary)
|
|
235
|
-
- Check task for trigger keywords
|
|
236
|
-
- Priority ordering resolves conflicts
|
|
237
|
-
- "investigate" → researcher (priority)
|
|
238
|
-
- "optimize queries" → optimizer
|
|
239
|
-
|
|
240
|
-
2. EMBEDDING FALLBACK (Secondary)
|
|
241
|
-
- If no keywords match, use embeddings
|
|
242
|
-
- Compare task embedding vs agent descriptions
|
|
243
|
-
- Cosine similarity for ranking
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
## 📊 Technical Specifications
|
|
249
|
-
|
|
250
|
-
| Specification | Value |
|
|
251
|
-
|--------------|-------|
|
|
252
|
-
| Base Model | Qwen2.5-0.5B-Instruct |
|
|
253
|
-
| Parameters | 494M |
|
|
254
|
-
| Embedding Dimensions | 896 |
|
|
255
|
-
| Quantization | Q4_K_M |
|
|
256
|
-
| File Size | 398 MB |
|
|
257
|
-
| Context Length | 32768 tokens |
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
## 📦 Rust Crates
|
|
262
|
-
|
|
263
|
-
| Crate | Description |
|
|
264
|
-
|-------|-------------|
|
|
265
|
-
| **ruvllm** | LLM runtime with SONA learning |
|
|
266
|
-
| **ruvector-core** | HNSW vector database |
|
|
267
|
-
| **ruvector-sona** | Self-optimizing neural architecture |
|
|
268
|
-
| **ruvector-attention** | Attention mechanisms |
|
|
269
|
-
| **ruvector-gnn** | Graph neural network on HNSW |
|
|
270
|
-
| **ruvector-graph** | Distributed hypergraph database |
|
|
271
|
-
|
|
272
|
-
```toml
|
|
273
|
-
[dependencies]
|
|
274
|
-
ruvllm = "0.1"
|
|
275
|
-
ruvector-core = { version = "0.1", features = ["hnsw", "simd"] }
|
|
276
|
-
ruvector-sona = { version = "0.1", features = ["serde-support"] }
|
|
277
|
-
```
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
## 💻 Requirements
|
|
282
|
-
|
|
283
|
-
| Component | Minimum |
|
|
284
|
-
|-----------|---------|
|
|
285
|
-
| RAM | 500 MB |
|
|
286
|
-
| Storage | 400 MB |
|
|
287
|
-
| Rust | 1.70+ |
|
|
288
|
-
| Node | 18+ |
|
|
289
|
-
|
|
290
|
-
---
|
|
291
|
-
|
|
292
|
-
## 🏗️ Architecture
|
|
293
|
-
|
|
294
|
-
```
|
|
295
|
-
Task ──► RuvLTRA ──► Agent Type ──► Claude API
|
|
296
|
-
(free) (100% acc) (pay here)
|
|
297
|
-
|
|
298
|
-
Query ──► RuvLTRA ──► Embedding ──► HNSW ──► Context
|
|
299
|
-
(free) (free) (free) (free)
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
**Philosophy:** Simple, frequent decisions → RuvLTRA (free, <10ms, 100% accurate). Complex reasoning → Claude API (worth the cost).
|
|
303
|
-
|
|
304
|
-
---
|
|
305
|
-
|
|
306
|
-
---
|
|
307
|
-
|
|
308
|
-
<details>
|
|
309
|
-
<summary><b>📋 Training Details</b></summary>
|
|
310
|
-
|
|
311
|
-
### Training Data
|
|
312
|
-
|
|
313
|
-
| Dataset | Count | Description |
|
|
314
|
-
|---------|-------|-------------|
|
|
315
|
-
| Base Triplets | 578 | Claude Code routing examples |
|
|
316
|
-
| Claude Hard Negatives (Batch 1) | 100 | Opus 4.5 generated confusing pairs |
|
|
317
|
-
| Claude Hard Negatives (Batch 2) | 400 | Additional confusing pairs |
|
|
318
|
-
| **Total** | **1,078** | Combined training set |
|
|
319
|
-
|
|
320
|
-
### Training Procedure
|
|
321
|
-
|
|
322
|
-
```
|
|
323
|
-
Pipeline: Hard Negative Generation → Contrastive Training → GRPO Feedback → GGUF Export
|
|
324
|
-
|
|
325
|
-
1. Generate confusing agent pairs using Claude Opus 4.5
|
|
326
|
-
2. Train with Triplet Loss + InfoNCE Loss
|
|
327
|
-
3. Apply GRPO reward scaling from Claude judgments
|
|
328
|
-
4. Export adapter weights for GGUF merging
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
### Hyperparameters
|
|
332
|
-
|
|
333
|
-
| Parameter | Value |
|
|
334
|
-
|-----------|-------|
|
|
335
|
-
| Learning Rate | 2e-5 |
|
|
336
|
-
| Batch Size | 32 |
|
|
337
|
-
| Epochs | 30 |
|
|
338
|
-
| Triplet Margin | 0.5 |
|
|
339
|
-
| InfoNCE Temperature | 0.07 |
|
|
340
|
-
| Weight Decay | 0.01 |
|
|
341
|
-
| Optimizer | AdamW |
|
|
342
|
-
|
|
343
|
-
### Training Infrastructure
|
|
344
|
-
|
|
345
|
-
- **Hardware**: Apple Silicon (Metal GPU)
|
|
346
|
-
- **Framework**: Candle (Rust ML)
|
|
347
|
-
- **Training Time**: ~30 seconds for 30 epochs
|
|
348
|
-
- **Final Loss**: 0.168
|
|
349
|
-
|
|
350
|
-
</details>
|
|
351
|
-
|
|
352
|
-
<details>
|
|
353
|
-
<summary><b>📊 Evaluation Results</b></summary>
|
|
354
|
-
|
|
355
|
-
### Benchmark: Claude Flow Agent Routing (20 test cases)
|
|
356
|
-
|
|
357
|
-
| Strategy | RuvLTRA | Qwen Base | Improvement |
|
|
358
|
-
|----------|---------|-----------|-------------|
|
|
359
|
-
| Embedding Only | 88.2% | 40.0% | **+48.2 pts** |
|
|
360
|
-
| Keyword Only | 100.0% | 100.0% | same |
|
|
361
|
-
| Hybrid 60/40 | 100.0% | 95.0% | +5.0 pts |
|
|
362
|
-
| **Keyword-First** | **100.0%** | 95.0% | **+5.0 pts** |
|
|
363
|
-
|
|
364
|
-
### Per-Agent Accuracy
|
|
365
|
-
|
|
366
|
-
| Agent | Accuracy | Test Cases |
|
|
367
|
-
|-------|----------|------------|
|
|
368
|
-
| coder | 100% | 3 |
|
|
369
|
-
| researcher | 100% | 2 |
|
|
370
|
-
| reviewer | 100% | 2 |
|
|
371
|
-
| tester | 100% | 2 |
|
|
372
|
-
| architect | 100% | 2 |
|
|
373
|
-
| security-architect | 100% | 2 |
|
|
374
|
-
| debugger | 100% | 2 |
|
|
375
|
-
| documenter | 100% | 1 |
|
|
376
|
-
| refactorer | 100% | 1 |
|
|
377
|
-
| optimizer | 100% | 1 |
|
|
378
|
-
| devops | 100% | 1 |
|
|
379
|
-
| api-docs | 100% | 1 |
|
|
380
|
-
|
|
381
|
-
### Hard Negative Performance
|
|
382
|
-
|
|
383
|
-
| Confusing Pair | Accuracy |
|
|
384
|
-
|----------------|----------|
|
|
385
|
-
| coder vs refactorer | 82% |
|
|
386
|
-
| researcher vs architect | 79% |
|
|
387
|
-
| reviewer vs tester | 84% |
|
|
388
|
-
| debugger vs optimizer | 78% |
|
|
389
|
-
| documenter vs api-docs | 85% |
|
|
390
|
-
|
|
391
|
-
</details>
|
|
392
|
-
|
|
393
|
-
<details>
|
|
394
|
-
<summary><b>⚠️ Limitations & Intended Use</b></summary>
|
|
395
|
-
|
|
396
|
-
### Intended Use
|
|
397
|
-
|
|
398
|
-
✅ **Designed For:**
|
|
399
|
-
- Task routing in Claude Code workflows
|
|
400
|
-
- Agent classification (13 types)
|
|
401
|
-
- Semantic embedding for HNSW search
|
|
402
|
-
- Local inference (<10ms latency)
|
|
403
|
-
- Cost optimization (avoid API calls for routing)
|
|
404
|
-
|
|
405
|
-
❌ **NOT Designed For:**
|
|
406
|
-
- General code generation
|
|
407
|
-
- Multi-step reasoning
|
|
408
|
-
- Chat/conversation
|
|
409
|
-
- Languages other than English
|
|
410
|
-
- Agent types beyond the 13 supported
|
|
411
|
-
|
|
412
|
-
### Known Limitations
|
|
413
|
-
|
|
414
|
-
1. **Fixed Agent Types**: Only routes to 13 predefined agents
|
|
415
|
-
2. **English Only**: Training data is English-only
|
|
416
|
-
3. **Domain Specific**: Optimized for software development tasks
|
|
417
|
-
4. **Embedding Fallback**: 88.2% accuracy when keywords don't match
|
|
418
|
-
5. **Context Length**: Optimal for short task descriptions (<100 tokens)
|
|
419
|
-
|
|
420
|
-
### Bias Considerations
|
|
421
|
-
|
|
422
|
-
- Training data generated from Claude Opus 4.5 may inherit biases
|
|
423
|
-
- Agent keywords favor common software terminology
|
|
424
|
-
- Security-related tasks may be over-classified to security-architect
|
|
425
|
-
|
|
426
|
-
</details>
|
|
427
|
-
|
|
428
|
-
<details>
|
|
429
|
-
<summary><b>🔧 Model Files & Checksums</b></summary>
|
|
430
|
-
|
|
431
|
-
### Available Files
|
|
432
|
-
|
|
433
|
-
| File | Size | Format | Use Case |
|
|
434
|
-
|------|------|--------|----------|
|
|
435
|
-
| `ruvltra-claude-code-0.5b-q4_k_m.gguf` | 398 MB | GGUF Q4_K_M | Production routing |
|
|
436
|
-
| `ruvltra-small-0.5b-q4_k_m.gguf` | 398 MB | GGUF Q4_K_M | General embeddings |
|
|
437
|
-
| `ruvltra-medium-1.1b-q4_k_m.gguf` | 800 MB | GGUF Q4_K_M | Higher accuracy |
|
|
438
|
-
| `training/v2.3-sota-stats.json` | 1 KB | JSON | Training metrics |
|
|
439
|
-
| `training/v2.3-info.json` | 2 KB | JSON | Training config |
|
|
440
|
-
|
|
441
|
-
### Version History
|
|
442
|
-
|
|
443
|
-
| Version | Date | Changes |
|
|
444
|
-
|---------|------|---------|
|
|
445
|
-
| v2.3 | 2025-01-20 | 500+ hard negatives, 48% ratio, GRPO feedback |
|
|
446
|
-
| v2.2 | 2025-01-15 | 100 hard negatives, 18% ratio |
|
|
447
|
-
| v2.1 | 2025-01-10 | Contrastive learning, triplet loss |
|
|
448
|
-
| v2.0 | 2025-01-05 | Hybrid routing strategy |
|
|
449
|
-
| v1.0 | 2024-12-20 | Initial release |
|
|
450
|
-
|
|
451
|
-
</details>
|
|
452
|
-
|
|
453
|
-
<details>
|
|
454
|
-
<summary><b>📖 Citation</b></summary>
|
|
455
|
-
|
|
456
|
-
### BibTeX
|
|
457
|
-
|
|
458
|
-
```bibtex
|
|
459
|
-
@software{ruvltra2025,
|
|
460
|
-
title = {RuvLTRA: Local Task Routing for Claude Code Workflows},
|
|
461
|
-
author = {ruv},
|
|
462
|
-
year = {2025},
|
|
463
|
-
url = {https://huggingface.co/ruv/ruvltra},
|
|
464
|
-
version = {2.3},
|
|
465
|
-
license = {Apache-2.0},
|
|
466
|
-
keywords = {agent-routing, embeddings, claude-code, contrastive-learning}
|
|
467
|
-
}
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
### Plain Text
|
|
471
|
-
|
|
472
|
-
```
|
|
473
|
-
ruv. (2025). RuvLTRA: Local Task Routing for Claude Code Workflows (Version 2.3).
|
|
474
|
-
https://huggingface.co/ruv/ruvltra
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
</details>
|
|
478
|
-
|
|
479
|
-
<details>
|
|
480
|
-
<summary><b>❓ FAQ & Troubleshooting</b></summary>
|
|
481
|
-
|
|
482
|
-
### Common Questions
|
|
483
|
-
|
|
484
|
-
**Q: Why use this instead of Claude API for routing?**
|
|
485
|
-
A: RuvLTRA is free, runs locally in <10ms, and achieves 100% accuracy with hybrid strategy. Claude API adds latency (~500ms) and costs ~$0.003 per call.
|
|
486
|
-
|
|
487
|
-
**Q: Can I add custom agent types?**
|
|
488
|
-
A: Not with the current model. You'd need to fine-tune with triplets including your custom agents.
|
|
489
|
-
|
|
490
|
-
**Q: Does it work offline?**
|
|
491
|
-
A: Yes, fully offline after downloading the GGUF model.
|
|
492
|
-
|
|
493
|
-
**Q: What's the difference between embedding-only and hybrid?**
|
|
494
|
-
A: Embedding-only uses semantic similarity (88.2% accuracy). Hybrid checks keywords first, then falls back to embeddings (100% accuracy).
|
|
495
|
-
|
|
496
|
-
### Troubleshooting
|
|
497
|
-
|
|
498
|
-
**Model loading fails:**
|
|
499
|
-
```bash
|
|
500
|
-
# Ensure you have enough RAM (500MB+)
|
|
501
|
-
# Check file integrity
|
|
502
|
-
sha256sum ruvltra-claude-code-0.5b-q4_k_m.gguf
|
|
503
|
-
```
|
|
504
|
-
|
|
505
|
-
**Low accuracy:**
|
|
506
|
-
```javascript
|
|
507
|
-
// Use keyword-first strategy for 100% accuracy
|
|
508
|
-
const router = new SemanticRouter({
|
|
509
|
-
strategy: 'keyword-first' // Not 'embedding-only'
|
|
510
|
-
});
|
|
511
|
-
```
|
|
512
|
-
|
|
513
|
-
**Slow inference:**
|
|
514
|
-
```bash
|
|
515
|
-
# Enable Metal GPU on Apple Silicon
|
|
516
|
-
export GGML_METAL=1
|
|
517
|
-
```
|
|
518
|
-
|
|
519
|
-
</details>
|
|
520
|
-
|
|
521
|
-
---
|
|
522
|
-
|
|
523
|
-
## 📄 License
|
|
524
|
-
|
|
525
|
-
Apache 2.0 - Free for commercial and personal use.
|
|
526
|
-
|
|
527
|
-
## 🔗 Links
|
|
528
|
-
|
|
529
|
-
- [GitHub Repository](https://github.com/ruvnet/ruvector)
|
|
530
|
-
- [Claude Flow](https://github.com/ruvnet/claude-flow)
|
|
531
|
-
- [Documentation](https://github.com/ruvnet/ruvector/tree/main/docs)
|
|
532
|
-
- [Training Code](https://github.com/ruvnet/ruvector/tree/main/crates/ruvllm/src/training)
|
|
533
|
-
- [NPM Package](https://www.npmjs.com/package/@ruvector/ruvllm)
|
|
534
|
-
|
|
535
|
-
## 🏷️ Keywords
|
|
536
|
-
|
|
537
|
-
`agent-routing` `task-classification` `claude-code` `embeddings` `semantic-search` `gguf` `quantized` `edge-ai` `local-inference` `contrastive-learning` `triplet-loss` `infonce` `qwen` `llm` `mlops` `cost-optimization` `multi-agent` `swarm` `ruvector` `sona`
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# RuvLTRA HuggingFace Publishing Script
|
|
3
|
-
#
|
|
4
|
-
# Prerequisites:
|
|
5
|
-
# pip install huggingface_hub
|
|
6
|
-
# huggingface-cli login
|
|
7
|
-
#
|
|
8
|
-
# Environment:
|
|
9
|
-
# HF_TOKEN or HUGGING_FACE_HUB_TOKEN must be set
|
|
10
|
-
|
|
11
|
-
set -e
|
|
12
|
-
|
|
13
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
14
|
-
MODELS_DIR="${HOME}/.ruvllm/models"
|
|
15
|
-
REPO_ID="ruv/ruvltra"
|
|
16
|
-
|
|
17
|
-
# Colors
|
|
18
|
-
RED='\033[0;31m'
|
|
19
|
-
GREEN='\033[0;32m'
|
|
20
|
-
YELLOW='\033[1;33m'
|
|
21
|
-
NC='\033[0m'
|
|
22
|
-
|
|
23
|
-
echo "╔═══════════════════════════════════════════════════════════════════════════════════╗"
|
|
24
|
-
echo "║ RuvLTRA HuggingFace Publishing ║"
|
|
25
|
-
echo "╚═══════════════════════════════════════════════════════════════════════════════════╝"
|
|
26
|
-
echo ""
|
|
27
|
-
|
|
28
|
-
# Check for HuggingFace token
|
|
29
|
-
HF_TOKEN="${HF_TOKEN:-${HUGGING_FACE_HUB_TOKEN:-${HUGGINGFACE_API_KEY:-}}}"
|
|
30
|
-
if [ -z "$HF_TOKEN" ]; then
|
|
31
|
-
echo -e "${RED}Error: No HuggingFace token found.${NC}"
|
|
32
|
-
echo "Set one of: HF_TOKEN, HUGGING_FACE_HUB_TOKEN, or HUGGINGFACE_API_KEY"
|
|
33
|
-
exit 1
|
|
34
|
-
fi
|
|
35
|
-
|
|
36
|
-
echo -e "${GREEN}✓ HuggingFace token found${NC}"
|
|
37
|
-
|
|
38
|
-
# Check for huggingface-cli
|
|
39
|
-
if ! command -v huggingface-cli &> /dev/null; then
|
|
40
|
-
echo -e "${YELLOW}Installing huggingface_hub...${NC}"
|
|
41
|
-
pip install huggingface_hub
|
|
42
|
-
fi
|
|
43
|
-
|
|
44
|
-
echo -e "${GREEN}✓ huggingface-cli available${NC}"
|
|
45
|
-
|
|
46
|
-
# List available models
|
|
47
|
-
echo ""
|
|
48
|
-
echo "Available models in ${MODELS_DIR}:"
|
|
49
|
-
ls -lh "${MODELS_DIR}"/*.gguf 2>/dev/null || echo " (no models found)"
|
|
50
|
-
echo ""
|
|
51
|
-
|
|
52
|
-
# Define models to upload
|
|
53
|
-
MODELS=(
|
|
54
|
-
"ruvltra-claude-code-0.5b-q4_k_m.gguf:Claude Code Router - 100% routing accuracy"
|
|
55
|
-
"ruvltra-0.5b-q4_k_m.gguf:General embeddings model"
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
# Upload README first
|
|
59
|
-
echo "─────────────────────────────────────────────────────────────────"
|
|
60
|
-
echo " Uploading README.md"
|
|
61
|
-
echo "─────────────────────────────────────────────────────────────────"
|
|
62
|
-
|
|
63
|
-
if [ -f "${SCRIPT_DIR}/README.md" ]; then
|
|
64
|
-
echo "Uploading model card..."
|
|
65
|
-
huggingface-cli upload "${REPO_ID}" "${SCRIPT_DIR}/README.md" README.md \
|
|
66
|
-
--token "${HF_TOKEN}" \
|
|
67
|
-
--commit-message "Update model card with 100% routing accuracy benchmarks"
|
|
68
|
-
echo -e "${GREEN}✓ README.md uploaded${NC}"
|
|
69
|
-
else
|
|
70
|
-
echo -e "${YELLOW}Warning: README.md not found at ${SCRIPT_DIR}/README.md${NC}"
|
|
71
|
-
fi
|
|
72
|
-
|
|
73
|
-
# Upload each model
|
|
74
|
-
echo ""
|
|
75
|
-
echo "─────────────────────────────────────────────────────────────────"
|
|
76
|
-
echo " Uploading Models"
|
|
77
|
-
echo "─────────────────────────────────────────────────────────────────"
|
|
78
|
-
|
|
79
|
-
for model_entry in "${MODELS[@]}"; do
|
|
80
|
-
model_file="${model_entry%%:*}"
|
|
81
|
-
model_desc="${model_entry#*:}"
|
|
82
|
-
model_path="${MODELS_DIR}/${model_file}"
|
|
83
|
-
|
|
84
|
-
if [ -f "${model_path}" ]; then
|
|
85
|
-
echo ""
|
|
86
|
-
echo "Uploading: ${model_file}"
|
|
87
|
-
echo " Description: ${model_desc}"
|
|
88
|
-
echo " Size: $(du -h "${model_path}" | cut -f1)"
|
|
89
|
-
|
|
90
|
-
huggingface-cli upload "${REPO_ID}" "${model_path}" "${model_file}" \
|
|
91
|
-
--token "${HF_TOKEN}" \
|
|
92
|
-
--commit-message "Update ${model_file} - ${model_desc}"
|
|
93
|
-
|
|
94
|
-
echo -e "${GREEN}✓ ${model_file} uploaded${NC}"
|
|
95
|
-
else
|
|
96
|
-
echo -e "${YELLOW}Skipping ${model_file} (not found)${NC}"
|
|
97
|
-
fi
|
|
98
|
-
done
|
|
99
|
-
|
|
100
|
-
echo ""
|
|
101
|
-
echo "═══════════════════════════════════════════════════════════════════════════════════"
|
|
102
|
-
echo " PUBLISHING COMPLETE"
|
|
103
|
-
echo "═══════════════════════════════════════════════════════════════════════════════════"
|
|
104
|
-
echo ""
|
|
105
|
-
echo "Repository: https://huggingface.co/${REPO_ID}"
|
|
106
|
-
echo ""
|
|
107
|
-
echo "Models available:"
|
|
108
|
-
echo " - ruvltra-claude-code-0.5b-q4_k_m.gguf (Claude Code Router)"
|
|
109
|
-
echo " - ruvltra-0.5b-q4_k_m.gguf (General Embeddings)"
|
|
110
|
-
echo ""
|
|
111
|
-
echo "Key benchmark: 100% routing accuracy with hybrid keyword+embedding strategy"
|
|
112
|
-
echo ""
|