@ruvector/ruvllm 0.2.3 → 2.4.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/README.md +379 -739
- package/bin/cli.js +619 -2
- package/dist/cjs/benchmarks/embedding-benchmark.d.ts +102 -0
- package/dist/cjs/benchmarks/embedding-benchmark.d.ts.map +1 -0
- package/dist/cjs/benchmarks/embedding-benchmark.js +436 -0
- package/dist/cjs/benchmarks/index.d.ts +34 -0
- package/dist/cjs/benchmarks/index.d.ts.map +1 -0
- package/dist/cjs/benchmarks/index.js +132 -0
- package/dist/cjs/benchmarks/model-comparison.d.ts +71 -0
- package/dist/cjs/benchmarks/model-comparison.d.ts.map +1 -0
- package/dist/cjs/benchmarks/model-comparison.js +476 -0
- package/dist/cjs/benchmarks/routing-benchmark.d.ts +70 -0
- package/dist/cjs/benchmarks/routing-benchmark.d.ts.map +1 -0
- package/dist/cjs/benchmarks/routing-benchmark.js +289 -0
- package/dist/cjs/contrastive.d.ts +229 -0
- package/dist/cjs/contrastive.d.ts.map +1 -0
- package/dist/cjs/contrastive.js +589 -0
- package/dist/cjs/engine.d.ts +3 -0
- package/dist/cjs/engine.d.ts.map +1 -1
- package/dist/cjs/engine.js +29 -9
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +9 -1
- package/dist/cjs/models.d.ts +129 -0
- package/dist/cjs/models.d.ts.map +1 -0
- package/dist/cjs/models.js +323 -0
- package/dist/cjs/rlm/controller.d.ts +245 -0
- package/dist/cjs/rlm/controller.d.ts.map +1 -0
- package/dist/cjs/rlm/controller.js +554 -0
- package/dist/cjs/rlm/index.d.ts +62 -0
- package/dist/cjs/rlm/index.d.ts.map +1 -0
- package/dist/cjs/rlm/index.js +97 -0
- package/dist/cjs/rlm/training.d.ts +333 -0
- package/dist/cjs/rlm/training.d.ts.map +1 -0
- package/dist/cjs/rlm/training.js +680 -0
- package/dist/cjs/rlm/types.d.ts +189 -0
- package/dist/cjs/rlm/types.d.ts.map +1 -0
- package/dist/cjs/rlm/types.js +10 -0
- package/dist/esm/benchmarks/embedding-benchmark.d.ts +102 -0
- package/dist/esm/benchmarks/embedding-benchmark.d.ts.map +1 -0
- package/dist/esm/benchmarks/embedding-benchmark.js +427 -0
- package/dist/esm/benchmarks/index.d.ts +34 -0
- package/dist/esm/benchmarks/index.d.ts.map +1 -0
- package/dist/esm/benchmarks/index.js +110 -0
- package/dist/esm/benchmarks/model-comparison.d.ts +71 -0
- package/dist/esm/benchmarks/model-comparison.d.ts.map +1 -0
- package/dist/esm/benchmarks/model-comparison.js +434 -0
- package/dist/esm/benchmarks/routing-benchmark.d.ts +70 -0
- package/dist/esm/benchmarks/routing-benchmark.d.ts.map +1 -0
- package/dist/esm/benchmarks/routing-benchmark.js +283 -0
- package/dist/esm/contrastive.d.ts +229 -0
- package/dist/esm/contrastive.d.ts.map +1 -0
- package/dist/esm/contrastive.js +578 -0
- package/dist/esm/engine.d.ts +3 -0
- package/dist/esm/engine.d.ts.map +1 -1
- package/dist/esm/engine.js +29 -9
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +9 -1
- package/dist/esm/models.d.ts +129 -0
- package/dist/esm/models.d.ts.map +1 -0
- package/dist/esm/models.js +282 -0
- package/dist/esm/rlm/controller.d.ts +245 -0
- package/dist/esm/rlm/controller.d.ts.map +1 -0
- package/dist/esm/rlm/controller.js +550 -0
- package/dist/esm/rlm/index.d.ts +62 -0
- package/dist/esm/rlm/index.d.ts.map +1 -0
- package/dist/esm/rlm/index.js +71 -0
- package/dist/esm/rlm/training.d.ts +333 -0
- package/dist/esm/rlm/training.d.ts.map +1 -0
- package/dist/esm/rlm/training.js +672 -0
- package/dist/esm/rlm/types.d.ts +189 -0
- package/dist/esm/rlm/types.d.ts.map +1 -0
- package/dist/esm/rlm/types.js +9 -0
- package/package.json +13 -11
- package/scripts/ensemble-model-compare.js +287 -0
- package/scripts/huggingface/README.md +537 -0
- package/scripts/huggingface/publish.sh +112 -0
- package/scripts/hybrid-model-compare.js +373 -0
- package/scripts/improved-model-compare.js +288 -0
- package/scripts/optimized-model-compare.js +364 -0
- package/scripts/real-model-compare.js +280 -0
- package/scripts/training/agentic-flow-capabilities.json +329 -0
- package/scripts/training/claude-code-synth.js +505 -0
- package/scripts/training/claude-flow-capabilities.json +1322 -0
- package/scripts/training/claude-hard-negatives.js +222 -0
- package/scripts/training/contrastive-finetune.js +517 -0
- package/scripts/training/ecosystem-triplets.jsonl +1467 -0
- package/scripts/training/generate-ecosystem-triplets.js +1324 -0
- package/scripts/training/rlm-dataset.js +671 -0
- package/scripts/training/routing-dataset.js +634 -0
- package/scripts/training/ruvector-capabilities.json +798 -0
- package/scripts/training/validate-ecosystem.js +381 -0
- package/scripts/training/validation-results.json +23 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RLM - Retrieval Language Model
|
|
3
|
+
*
|
|
4
|
+
* A recursive retrieval-augmented generation system that combines
|
|
5
|
+
* memory search with intelligent query decomposition and synthesis.
|
|
6
|
+
*
|
|
7
|
+
* @example Basic Usage
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { RlmController } from '@ruvector/ruvllm';
|
|
10
|
+
*
|
|
11
|
+
* const rlm = new RlmController({
|
|
12
|
+
* maxDepth: 3,
|
|
13
|
+
* enableCache: true,
|
|
14
|
+
* retrievalTopK: 10,
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* // Add knowledge
|
|
18
|
+
* await rlm.addMemory('TypeScript adds static typing to JavaScript.');
|
|
19
|
+
* await rlm.addMemory('React is a library for building user interfaces.');
|
|
20
|
+
*
|
|
21
|
+
* // Query with retrieval
|
|
22
|
+
* const answer = await rlm.query('Compare TypeScript and JavaScript');
|
|
23
|
+
* console.log(answer.text);
|
|
24
|
+
* console.log('Confidence:', answer.confidence);
|
|
25
|
+
* console.log('Sources:', answer.sources.length);
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @example Streaming
|
|
29
|
+
* ```typescript
|
|
30
|
+
* import { RlmController } from '@ruvector/ruvllm';
|
|
31
|
+
*
|
|
32
|
+
* const rlm = new RlmController();
|
|
33
|
+
*
|
|
34
|
+
* for await (const event of rlm.queryStream('Explain machine learning')) {
|
|
35
|
+
* if (event.type === 'token') {
|
|
36
|
+
* process.stdout.write(event.text);
|
|
37
|
+
* } else {
|
|
38
|
+
* console.log('\n\nQuality:', event.answer.qualityScore);
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @example With Reflection
|
|
44
|
+
* ```typescript
|
|
45
|
+
* import { RlmController } from '@ruvector/ruvllm';
|
|
46
|
+
*
|
|
47
|
+
* const rlm = new RlmController({
|
|
48
|
+
* enableReflection: true,
|
|
49
|
+
* maxReflectionIterations: 2,
|
|
50
|
+
* minQualityScore: 0.8,
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* // Answers will be iteratively refined until quality >= 0.8
|
|
54
|
+
* const answer = await rlm.query('Complex technical question...');
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @module rlm
|
|
58
|
+
*/
|
|
59
|
+
export * from './types';
|
|
60
|
+
export { RlmController } from './controller';
|
|
61
|
+
export { type DecompositionStrategy, type SubQuery, type QueryDecomposition, type SubAnswer, type RlmTrajectoryMetadata, type RlmTrainingExample, type ContrastivePair, type RlmTrainingConfig, type TrainingResult as RlmTrainingResult, type EvaluationResult as RlmEvaluationResult, DEFAULT_RLM_CONFIG, FAST_RLM_CONFIG, THOROUGH_RLM_CONFIG, ROUTING_FOCUSED_CONFIG, AGENT_DEFINITIONS, HARD_NEGATIVE_PAIRS, RlmTrainer, createRlmTrainer, createEmptyExample, createSubQuery, createSubAnswer, } from './training';
|
|
62
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rlm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,IAAI,iBAAiB,EACxC,KAAK,gBAAgB,IAAI,mBAAmB,EAG5C,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EAGnB,UAAU,EAGV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* RLM - Retrieval Language Model
|
|
4
|
+
*
|
|
5
|
+
* A recursive retrieval-augmented generation system that combines
|
|
6
|
+
* memory search with intelligent query decomposition and synthesis.
|
|
7
|
+
*
|
|
8
|
+
* @example Basic Usage
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { RlmController } from '@ruvector/ruvllm';
|
|
11
|
+
*
|
|
12
|
+
* const rlm = new RlmController({
|
|
13
|
+
* maxDepth: 3,
|
|
14
|
+
* enableCache: true,
|
|
15
|
+
* retrievalTopK: 10,
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* // Add knowledge
|
|
19
|
+
* await rlm.addMemory('TypeScript adds static typing to JavaScript.');
|
|
20
|
+
* await rlm.addMemory('React is a library for building user interfaces.');
|
|
21
|
+
*
|
|
22
|
+
* // Query with retrieval
|
|
23
|
+
* const answer = await rlm.query('Compare TypeScript and JavaScript');
|
|
24
|
+
* console.log(answer.text);
|
|
25
|
+
* console.log('Confidence:', answer.confidence);
|
|
26
|
+
* console.log('Sources:', answer.sources.length);
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example Streaming
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { RlmController } from '@ruvector/ruvllm';
|
|
32
|
+
*
|
|
33
|
+
* const rlm = new RlmController();
|
|
34
|
+
*
|
|
35
|
+
* for await (const event of rlm.queryStream('Explain machine learning')) {
|
|
36
|
+
* if (event.type === 'token') {
|
|
37
|
+
* process.stdout.write(event.text);
|
|
38
|
+
* } else {
|
|
39
|
+
* console.log('\n\nQuality:', event.answer.qualityScore);
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @example With Reflection
|
|
45
|
+
* ```typescript
|
|
46
|
+
* import { RlmController } from '@ruvector/ruvllm';
|
|
47
|
+
*
|
|
48
|
+
* const rlm = new RlmController({
|
|
49
|
+
* enableReflection: true,
|
|
50
|
+
* maxReflectionIterations: 2,
|
|
51
|
+
* minQualityScore: 0.8,
|
|
52
|
+
* });
|
|
53
|
+
*
|
|
54
|
+
* // Answers will be iteratively refined until quality >= 0.8
|
|
55
|
+
* const answer = await rlm.query('Complex technical question...');
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @module rlm
|
|
59
|
+
*/
|
|
60
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
61
|
+
if (k2 === undefined) k2 = k;
|
|
62
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
63
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
64
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
65
|
+
}
|
|
66
|
+
Object.defineProperty(o, k2, desc);
|
|
67
|
+
}) : (function(o, m, k, k2) {
|
|
68
|
+
if (k2 === undefined) k2 = k;
|
|
69
|
+
o[k2] = m[k];
|
|
70
|
+
}));
|
|
71
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
72
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
73
|
+
};
|
|
74
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
75
|
+
exports.createSubAnswer = exports.createSubQuery = exports.createEmptyExample = exports.createRlmTrainer = exports.RlmTrainer = exports.HARD_NEGATIVE_PAIRS = exports.AGENT_DEFINITIONS = exports.ROUTING_FOCUSED_CONFIG = exports.THOROUGH_RLM_CONFIG = exports.FAST_RLM_CONFIG = exports.DEFAULT_RLM_CONFIG = exports.RlmController = void 0;
|
|
76
|
+
// Export all types
|
|
77
|
+
__exportStar(require("./types"), exports);
|
|
78
|
+
// Export the controller
|
|
79
|
+
var controller_1 = require("./controller");
|
|
80
|
+
Object.defineProperty(exports, "RlmController", { enumerable: true, get: function () { return controller_1.RlmController; } });
|
|
81
|
+
// Export training module
|
|
82
|
+
var training_1 = require("./training");
|
|
83
|
+
// Constants
|
|
84
|
+
Object.defineProperty(exports, "DEFAULT_RLM_CONFIG", { enumerable: true, get: function () { return training_1.DEFAULT_RLM_CONFIG; } });
|
|
85
|
+
Object.defineProperty(exports, "FAST_RLM_CONFIG", { enumerable: true, get: function () { return training_1.FAST_RLM_CONFIG; } });
|
|
86
|
+
Object.defineProperty(exports, "THOROUGH_RLM_CONFIG", { enumerable: true, get: function () { return training_1.THOROUGH_RLM_CONFIG; } });
|
|
87
|
+
Object.defineProperty(exports, "ROUTING_FOCUSED_CONFIG", { enumerable: true, get: function () { return training_1.ROUTING_FOCUSED_CONFIG; } });
|
|
88
|
+
Object.defineProperty(exports, "AGENT_DEFINITIONS", { enumerable: true, get: function () { return training_1.AGENT_DEFINITIONS; } });
|
|
89
|
+
Object.defineProperty(exports, "HARD_NEGATIVE_PAIRS", { enumerable: true, get: function () { return training_1.HARD_NEGATIVE_PAIRS; } });
|
|
90
|
+
// Classes
|
|
91
|
+
Object.defineProperty(exports, "RlmTrainer", { enumerable: true, get: function () { return training_1.RlmTrainer; } });
|
|
92
|
+
// Factory functions
|
|
93
|
+
Object.defineProperty(exports, "createRlmTrainer", { enumerable: true, get: function () { return training_1.createRlmTrainer; } });
|
|
94
|
+
Object.defineProperty(exports, "createEmptyExample", { enumerable: true, get: function () { return training_1.createEmptyExample; } });
|
|
95
|
+
Object.defineProperty(exports, "createSubQuery", { enumerable: true, get: function () { return training_1.createSubQuery; } });
|
|
96
|
+
Object.defineProperty(exports, "createSubAnswer", { enumerable: true, get: function () { return training_1.createSubAnswer; } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmxtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeURHOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILG1CQUFtQjtBQUNuQiwwQ0FBd0I7QUFFeEIsd0JBQXdCO0FBQ3hCLDJDQUE2QztBQUFwQywyR0FBQSxhQUFhLE9BQUE7QUFFdEIseUJBQXlCO0FBQ3pCLHVDQTZCb0I7QUFoQmxCLFlBQVk7QUFDWiw4R0FBQSxrQkFBa0IsT0FBQTtBQUNsQiwyR0FBQSxlQUFlLE9BQUE7QUFDZiwrR0FBQSxtQkFBbUIsT0FBQTtBQUNuQixrSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw2R0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwrR0FBQSxtQkFBbUIsT0FBQTtBQUVuQixVQUFVO0FBQ1Ysc0dBQUEsVUFBVSxPQUFBO0FBRVYsb0JBQW9CO0FBQ3BCLDRHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDBHQUFBLGNBQWMsT0FBQTtBQUNkLDJHQUFBLGVBQWUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUkxNIC0gUmV0cmlldmFsIExhbmd1YWdlIE1vZGVsXG4gKlxuICogQSByZWN1cnNpdmUgcmV0cmlldmFsLWF1Z21lbnRlZCBnZW5lcmF0aW9uIHN5c3RlbSB0aGF0IGNvbWJpbmVzXG4gKiBtZW1vcnkgc2VhcmNoIHdpdGggaW50ZWxsaWdlbnQgcXVlcnkgZGVjb21wb3NpdGlvbiBhbmQgc3ludGhlc2lzLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIFVzYWdlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBSbG1Db250cm9sbGVyIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogY29uc3QgcmxtID0gbmV3IFJsbUNvbnRyb2xsZXIoe1xuICogICBtYXhEZXB0aDogMyxcbiAqICAgZW5hYmxlQ2FjaGU6IHRydWUsXG4gKiAgIHJldHJpZXZhbFRvcEs6IDEwLFxuICogfSk7XG4gKlxuICogLy8gQWRkIGtub3dsZWRnZVxuICogYXdhaXQgcmxtLmFkZE1lbW9yeSgnVHlwZVNjcmlwdCBhZGRzIHN0YXRpYyB0eXBpbmcgdG8gSmF2YVNjcmlwdC4nKTtcbiAqIGF3YWl0IHJsbS5hZGRNZW1vcnkoJ1JlYWN0IGlzIGEgbGlicmFyeSBmb3IgYnVpbGRpbmcgdXNlciBpbnRlcmZhY2VzLicpO1xuICpcbiAqIC8vIFF1ZXJ5IHdpdGggcmV0cmlldmFsXG4gKiBjb25zdCBhbnN3ZXIgPSBhd2FpdCBybG0ucXVlcnkoJ0NvbXBhcmUgVHlwZVNjcmlwdCBhbmQgSmF2YVNjcmlwdCcpO1xuICogY29uc29sZS5sb2coYW5zd2VyLnRleHQpO1xuICogY29uc29sZS5sb2coJ0NvbmZpZGVuY2U6JywgYW5zd2VyLmNvbmZpZGVuY2UpO1xuICogY29uc29sZS5sb2coJ1NvdXJjZXM6JywgYW5zd2VyLnNvdXJjZXMubGVuZ3RoKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFN0cmVhbWluZ1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUmxtQ29udHJvbGxlciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IHJsbSA9IG5ldyBSbG1Db250cm9sbGVyKCk7XG4gKlxuICogZm9yIGF3YWl0IChjb25zdCBldmVudCBvZiBybG0ucXVlcnlTdHJlYW0oJ0V4cGxhaW4gbWFjaGluZSBsZWFybmluZycpKSB7XG4gKiAgIGlmIChldmVudC50eXBlID09PSAndG9rZW4nKSB7XG4gKiAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZXZlbnQudGV4dCk7XG4gKiAgIH0gZWxzZSB7XG4gKiAgICAgY29uc29sZS5sb2coJ1xcblxcblF1YWxpdHk6JywgZXZlbnQuYW5zd2VyLnF1YWxpdHlTY29yZSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdpdGggUmVmbGVjdGlvblxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUmxtQ29udHJvbGxlciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IHJsbSA9IG5ldyBSbG1Db250cm9sbGVyKHtcbiAqICAgZW5hYmxlUmVmbGVjdGlvbjogdHJ1ZSxcbiAqICAgbWF4UmVmbGVjdGlvbkl0ZXJhdGlvbnM6IDIsXG4gKiAgIG1pblF1YWxpdHlTY29yZTogMC44LFxuICogfSk7XG4gKlxuICogLy8gQW5zd2VycyB3aWxsIGJlIGl0ZXJhdGl2ZWx5IHJlZmluZWQgdW50aWwgcXVhbGl0eSA+PSAwLjhcbiAqIGNvbnN0IGFuc3dlciA9IGF3YWl0IHJsbS5xdWVyeSgnQ29tcGxleCB0ZWNobmljYWwgcXVlc3Rpb24uLi4nKTtcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGUgcmxtXG4gKi9cblxuLy8gRXhwb3J0IGFsbCB0eXBlc1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5cbi8vIEV4cG9ydCB0aGUgY29udHJvbGxlclxuZXhwb3J0IHsgUmxtQ29udHJvbGxlciB9IGZyb20gJy4vY29udHJvbGxlcic7XG5cbi8vIEV4cG9ydCB0cmFpbmluZyBtb2R1bGVcbmV4cG9ydCB7XG4gIC8vIFR5cGVzXG4gIHR5cGUgRGVjb21wb3NpdGlvblN0cmF0ZWd5LFxuICB0eXBlIFN1YlF1ZXJ5LFxuICB0eXBlIFF1ZXJ5RGVjb21wb3NpdGlvbixcbiAgdHlwZSBTdWJBbnN3ZXIsXG4gIHR5cGUgUmxtVHJhamVjdG9yeU1ldGFkYXRhLFxuICB0eXBlIFJsbVRyYWluaW5nRXhhbXBsZSxcbiAgdHlwZSBDb250cmFzdGl2ZVBhaXIsXG4gIHR5cGUgUmxtVHJhaW5pbmdDb25maWcsXG4gIHR5cGUgVHJhaW5pbmdSZXN1bHQgYXMgUmxtVHJhaW5pbmdSZXN1bHQsXG4gIHR5cGUgRXZhbHVhdGlvblJlc3VsdCBhcyBSbG1FdmFsdWF0aW9uUmVzdWx0LFxuXG4gIC8vIENvbnN0YW50c1xuICBERUZBVUxUX1JMTV9DT05GSUcsXG4gIEZBU1RfUkxNX0NPTkZJRyxcbiAgVEhPUk9VR0hfUkxNX0NPTkZJRyxcbiAgUk9VVElOR19GT0NVU0VEX0NPTkZJRyxcbiAgQUdFTlRfREVGSU5JVElPTlMsXG4gIEhBUkRfTkVHQVRJVkVfUEFJUlMsXG5cbiAgLy8gQ2xhc3Nlc1xuICBSbG1UcmFpbmVyLFxuXG4gIC8vIEZhY3RvcnkgZnVuY3Rpb25zXG4gIGNyZWF0ZVJsbVRyYWluZXIsXG4gIGNyZWF0ZUVtcHR5RXhhbXBsZSxcbiAgY3JlYXRlU3ViUXVlcnksXG4gIGNyZWF0ZVN1YkFuc3dlcixcbn0gZnJvbSAnLi90cmFpbmluZyc7XG4iXX0=
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RLM (Recursive Learning Machine) Training Module
|
|
3
|
+
*
|
|
4
|
+
* Provides training capabilities for RuvLTRA models on RLM task routing
|
|
5
|
+
* and decomposition, including query decomposition, answer synthesis,
|
|
6
|
+
* and agent routing optimization.
|
|
7
|
+
*
|
|
8
|
+
* @module rlm/training
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Strategy for decomposing a complex query
|
|
12
|
+
*/
|
|
13
|
+
export type DecompositionStrategy = 'sequential' | 'parallel' | 'hierarchical' | 'dag-based' | 'iterative' | 'none';
|
|
14
|
+
/**
|
|
15
|
+
* A sub-query in the decomposition
|
|
16
|
+
*/
|
|
17
|
+
export interface SubQuery {
|
|
18
|
+
/** Unique identifier within the decomposition */
|
|
19
|
+
id: number;
|
|
20
|
+
/** The sub-query text */
|
|
21
|
+
query: string;
|
|
22
|
+
/** Expected output type (e.g., "code", "analysis", "data") */
|
|
23
|
+
expectedType: string;
|
|
24
|
+
/** Dependencies (IDs of sub-queries that must complete first) */
|
|
25
|
+
dependencies: number[];
|
|
26
|
+
/** Recommended agent type for this sub-query */
|
|
27
|
+
recommendedAgent?: string;
|
|
28
|
+
/** Estimated complexity (0.0-1.0) */
|
|
29
|
+
complexity: number;
|
|
30
|
+
/** Optional context from parent query */
|
|
31
|
+
context?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Decomposition of a complex query into sub-queries
|
|
35
|
+
*/
|
|
36
|
+
export interface QueryDecomposition {
|
|
37
|
+
/** Sub-queries in execution order */
|
|
38
|
+
subQueries: SubQuery[];
|
|
39
|
+
/** Decomposition strategy used */
|
|
40
|
+
strategy: DecompositionStrategy;
|
|
41
|
+
/** Reasoning for this decomposition */
|
|
42
|
+
rationale: string;
|
|
43
|
+
/** Total estimated complexity */
|
|
44
|
+
totalComplexity: number;
|
|
45
|
+
/** Whether decomposition was successful */
|
|
46
|
+
success: boolean;
|
|
47
|
+
/** Error message if decomposition failed */
|
|
48
|
+
error?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Answer to a sub-query
|
|
52
|
+
*/
|
|
53
|
+
export interface SubAnswer {
|
|
54
|
+
/** ID of the sub-query this answers */
|
|
55
|
+
subQueryId: number;
|
|
56
|
+
/** The answer content */
|
|
57
|
+
content: string;
|
|
58
|
+
/** Confidence in this answer (0.0-1.0) */
|
|
59
|
+
confidence: number;
|
|
60
|
+
/** Agent that produced this answer */
|
|
61
|
+
agent: string;
|
|
62
|
+
/** Latency in milliseconds */
|
|
63
|
+
latencyMs: number;
|
|
64
|
+
/** Quality score (0.0-1.0) */
|
|
65
|
+
quality: number;
|
|
66
|
+
/** Whether this answer was successful */
|
|
67
|
+
success: boolean;
|
|
68
|
+
/** Error message if failed */
|
|
69
|
+
error?: string;
|
|
70
|
+
/** Intermediate reasoning/chain-of-thought */
|
|
71
|
+
reasoning?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Metadata about the RLM execution trajectory
|
|
75
|
+
*/
|
|
76
|
+
export interface RlmTrajectoryMetadata {
|
|
77
|
+
/** Session ID */
|
|
78
|
+
sessionId?: string;
|
|
79
|
+
/** User ID */
|
|
80
|
+
userId?: string;
|
|
81
|
+
/** Total latency in milliseconds */
|
|
82
|
+
totalLatencyMs: number;
|
|
83
|
+
/** Number of retries */
|
|
84
|
+
retries: number;
|
|
85
|
+
/** Maximum parallel branches executed */
|
|
86
|
+
maxParallelism: number;
|
|
87
|
+
/** Models used during execution */
|
|
88
|
+
modelsUsed: string[];
|
|
89
|
+
/** Agents invoked */
|
|
90
|
+
agentsInvoked: string[];
|
|
91
|
+
/** Tools used */
|
|
92
|
+
toolsUsed: string[];
|
|
93
|
+
/** Custom attributes */
|
|
94
|
+
attributes: Record<string, string>;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* A complete RLM training example
|
|
98
|
+
*/
|
|
99
|
+
export interface RlmTrainingExample {
|
|
100
|
+
/** Unique identifier */
|
|
101
|
+
id: string;
|
|
102
|
+
/** Original complex query */
|
|
103
|
+
query: string;
|
|
104
|
+
/** Query embedding (optional) */
|
|
105
|
+
queryEmbedding?: number[];
|
|
106
|
+
/** How the query was decomposed */
|
|
107
|
+
decomposition: QueryDecomposition;
|
|
108
|
+
/** Answers to each sub-query */
|
|
109
|
+
subAnswers: SubAnswer[];
|
|
110
|
+
/** Final synthesized answer */
|
|
111
|
+
finalAnswer: string;
|
|
112
|
+
/** Final answer embedding (optional) */
|
|
113
|
+
finalEmbedding?: number[];
|
|
114
|
+
/** Overall quality score (0.0-1.0) */
|
|
115
|
+
qualityScore: number;
|
|
116
|
+
/** Execution trajectory metadata */
|
|
117
|
+
trajectory: RlmTrajectoryMetadata;
|
|
118
|
+
/** Whether this example was successful */
|
|
119
|
+
success: boolean;
|
|
120
|
+
/** Lessons learned from this example */
|
|
121
|
+
lessons: string[];
|
|
122
|
+
/** Source of this example */
|
|
123
|
+
source: string;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* A contrastive pair for agent routing training
|
|
127
|
+
*/
|
|
128
|
+
export interface ContrastivePair {
|
|
129
|
+
/** Anchor query */
|
|
130
|
+
anchor: string;
|
|
131
|
+
/** Anchor embedding (optional) */
|
|
132
|
+
anchorEmbedding?: number[];
|
|
133
|
+
/** Positive agent (correct routing) */
|
|
134
|
+
positiveAgent: string;
|
|
135
|
+
/** Negative agent (incorrect routing) */
|
|
136
|
+
negativeAgent: string;
|
|
137
|
+
/** Whether this is a hard negative */
|
|
138
|
+
isHardNegative: boolean;
|
|
139
|
+
/** Quality score of the anchor example */
|
|
140
|
+
quality: number;
|
|
141
|
+
/** Source example ID */
|
|
142
|
+
sourceId: string;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Configuration for RLM training
|
|
146
|
+
*/
|
|
147
|
+
export interface RlmTrainingConfig {
|
|
148
|
+
/** Learning rate for decomposition training */
|
|
149
|
+
decompositionLr: number;
|
|
150
|
+
/** Learning rate for synthesis training */
|
|
151
|
+
synthesisLr: number;
|
|
152
|
+
/** Learning rate for contrastive fine-tuning */
|
|
153
|
+
contrastiveLr: number;
|
|
154
|
+
/** Batch size */
|
|
155
|
+
batchSize: number;
|
|
156
|
+
/** Number of epochs */
|
|
157
|
+
epochs: number;
|
|
158
|
+
/** Contrastive margin for triplet loss */
|
|
159
|
+
contrastiveMargin: number;
|
|
160
|
+
/** Temperature for InfoNCE loss */
|
|
161
|
+
infonceTemperature: number;
|
|
162
|
+
/** Weight for decomposition loss */
|
|
163
|
+
decompositionWeight: number;
|
|
164
|
+
/** Weight for synthesis loss */
|
|
165
|
+
synthesisWeight: number;
|
|
166
|
+
/** Weight for routing loss */
|
|
167
|
+
routingWeight: number;
|
|
168
|
+
/** Minimum quality for updates */
|
|
169
|
+
qualityThreshold: number;
|
|
170
|
+
/** Evaluation interval (epochs) */
|
|
171
|
+
evaluationInterval: number;
|
|
172
|
+
/** Warmup steps */
|
|
173
|
+
warmupSteps: number;
|
|
174
|
+
/** Early stopping patience */
|
|
175
|
+
earlyStoppingPatience: number;
|
|
176
|
+
/** Validation split ratio */
|
|
177
|
+
validationSplit: number;
|
|
178
|
+
/** Random seed */
|
|
179
|
+
seed: number;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Training result for a phase
|
|
183
|
+
*/
|
|
184
|
+
export interface TrainingResult {
|
|
185
|
+
/** Training phase name */
|
|
186
|
+
phase: string;
|
|
187
|
+
/** Epochs completed */
|
|
188
|
+
epochsCompleted: number;
|
|
189
|
+
/** Total steps */
|
|
190
|
+
totalSteps: number;
|
|
191
|
+
/** Final training loss */
|
|
192
|
+
finalLoss: number;
|
|
193
|
+
/** Best validation loss */
|
|
194
|
+
bestValLoss: number;
|
|
195
|
+
/** Best epoch */
|
|
196
|
+
bestEpoch: number;
|
|
197
|
+
/** Final accuracy (for classification tasks) */
|
|
198
|
+
accuracy: number;
|
|
199
|
+
/** Loss history per epoch */
|
|
200
|
+
lossHistory: number[];
|
|
201
|
+
/** Validation loss history */
|
|
202
|
+
valLossHistory: number[];
|
|
203
|
+
/** Training duration in milliseconds */
|
|
204
|
+
durationMs: number;
|
|
205
|
+
/** Whether early stopping was triggered */
|
|
206
|
+
earlyStopped: boolean;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Evaluation result for the trained model
|
|
210
|
+
*/
|
|
211
|
+
export interface EvaluationResult {
|
|
212
|
+
/** Decomposition accuracy */
|
|
213
|
+
decompositionAccuracy: number;
|
|
214
|
+
/** Synthesis quality */
|
|
215
|
+
synthesisQuality: number;
|
|
216
|
+
/** Routing accuracy */
|
|
217
|
+
routingAccuracy: number;
|
|
218
|
+
/** Hard negative accuracy */
|
|
219
|
+
hardNegativeAccuracy: number;
|
|
220
|
+
/** Average latency in ms */
|
|
221
|
+
avgLatencyMs: number;
|
|
222
|
+
/** Total examples evaluated */
|
|
223
|
+
totalExamples: number;
|
|
224
|
+
/** Per-agent accuracy */
|
|
225
|
+
perAgentAccuracy: Record<string, number>;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Default RLM training configuration
|
|
229
|
+
*/
|
|
230
|
+
export declare const DEFAULT_RLM_CONFIG: RlmTrainingConfig;
|
|
231
|
+
/**
|
|
232
|
+
* Fast training configuration
|
|
233
|
+
*/
|
|
234
|
+
export declare const FAST_RLM_CONFIG: RlmTrainingConfig;
|
|
235
|
+
/**
|
|
236
|
+
* Thorough training configuration
|
|
237
|
+
*/
|
|
238
|
+
export declare const THOROUGH_RLM_CONFIG: RlmTrainingConfig;
|
|
239
|
+
/**
|
|
240
|
+
* Routing-focused training configuration
|
|
241
|
+
*/
|
|
242
|
+
export declare const ROUTING_FOCUSED_CONFIG: RlmTrainingConfig;
|
|
243
|
+
/**
|
|
244
|
+
* Agent types with descriptions and keywords
|
|
245
|
+
*/
|
|
246
|
+
export declare const AGENT_DEFINITIONS: Record<string, {
|
|
247
|
+
description: string;
|
|
248
|
+
keywords: string[];
|
|
249
|
+
}>;
|
|
250
|
+
/**
|
|
251
|
+
* Hard negative pairs (confusable agent combinations)
|
|
252
|
+
*/
|
|
253
|
+
export declare const HARD_NEGATIVE_PAIRS: [string, string][];
|
|
254
|
+
/**
|
|
255
|
+
* RLM Trainer for RuvLTRA models
|
|
256
|
+
*
|
|
257
|
+
* Provides training capabilities for decomposition, synthesis, and routing tasks.
|
|
258
|
+
*/
|
|
259
|
+
export declare class RlmTrainer {
|
|
260
|
+
private config;
|
|
261
|
+
private currentEpoch;
|
|
262
|
+
private currentStep;
|
|
263
|
+
private bestValLoss;
|
|
264
|
+
private patienceCounter;
|
|
265
|
+
private lossHistory;
|
|
266
|
+
private valLossHistory;
|
|
267
|
+
/**
|
|
268
|
+
* Create a new RLM trainer
|
|
269
|
+
*/
|
|
270
|
+
constructor(config?: Partial<RlmTrainingConfig>);
|
|
271
|
+
/**
|
|
272
|
+
* Train on decomposition task
|
|
273
|
+
*
|
|
274
|
+
* Learns to break complex queries into manageable sub-queries.
|
|
275
|
+
*/
|
|
276
|
+
trainDecomposition(dataset: RlmTrainingExample[]): Promise<TrainingResult>;
|
|
277
|
+
/**
|
|
278
|
+
* Train on synthesis task
|
|
279
|
+
*
|
|
280
|
+
* Learns to combine sub-answers into coherent final responses.
|
|
281
|
+
*/
|
|
282
|
+
trainSynthesis(dataset: RlmTrainingExample[]): Promise<TrainingResult>;
|
|
283
|
+
/**
|
|
284
|
+
* Contrastive fine-tuning for agent routing
|
|
285
|
+
*
|
|
286
|
+
* Uses triplet loss and InfoNCE to improve routing accuracy.
|
|
287
|
+
*/
|
|
288
|
+
trainContrastive(pairs: ContrastivePair[]): Promise<TrainingResult>;
|
|
289
|
+
/**
|
|
290
|
+
* Evaluate trained model on test set
|
|
291
|
+
*/
|
|
292
|
+
evaluate(testSet: RlmTrainingExample[]): Promise<EvaluationResult>;
|
|
293
|
+
/**
|
|
294
|
+
* Generate contrastive pairs from dataset
|
|
295
|
+
*/
|
|
296
|
+
generateContrastivePairs(dataset: RlmTrainingExample[], hardNegativeRatio?: number): ContrastivePair[];
|
|
297
|
+
private resetState;
|
|
298
|
+
private splitDataset;
|
|
299
|
+
private splitPairs;
|
|
300
|
+
private createBatches;
|
|
301
|
+
private createPairBatches;
|
|
302
|
+
private shuffle;
|
|
303
|
+
private trainDecompositionBatch;
|
|
304
|
+
private trainSynthesisBatch;
|
|
305
|
+
private trainContrastiveBatch;
|
|
306
|
+
private validateDecomposition;
|
|
307
|
+
private validateSynthesis;
|
|
308
|
+
private validateContrastive;
|
|
309
|
+
private computeTripletLoss;
|
|
310
|
+
private computeInfoNCELoss;
|
|
311
|
+
private agentDistance;
|
|
312
|
+
private predictAgent;
|
|
313
|
+
private isHardNegative;
|
|
314
|
+
private findBestEpoch;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Create an RLM trainer with default configuration
|
|
318
|
+
*/
|
|
319
|
+
export declare function createRlmTrainer(config?: Partial<RlmTrainingConfig>): RlmTrainer;
|
|
320
|
+
/**
|
|
321
|
+
* Create an empty RLM training example
|
|
322
|
+
*/
|
|
323
|
+
export declare function createEmptyExample(query: string): RlmTrainingExample;
|
|
324
|
+
/**
|
|
325
|
+
* Create a sub-query
|
|
326
|
+
*/
|
|
327
|
+
export declare function createSubQuery(id: number, query: string, options?: Partial<SubQuery>): SubQuery;
|
|
328
|
+
/**
|
|
329
|
+
* Create a sub-answer
|
|
330
|
+
*/
|
|
331
|
+
export declare function createSubAnswer(subQueryId: number, content: string, agent: string, options?: Partial<SubAnswer>): SubAnswer;
|
|
332
|
+
export default RlmTrainer;
|
|
333
|
+
//# sourceMappingURL=training.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../../../src/rlm/training.ts"],"names":[],"mappings":"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"}
|