agentdb 3.0.0 → 3.2.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 +13 -0
- package/dist/src/backends/ExactSearch.d.ts +22 -0
- package/dist/src/backends/ExactSearch.d.ts.map +1 -0
- package/dist/src/backends/ExactSearch.js +36 -0
- package/dist/src/backends/ExactSearch.js.map +1 -0
- package/dist/src/backends/VectorBackend.d.ts +33 -1
- package/dist/src/backends/VectorBackend.d.ts.map +1 -1
- package/dist/src/backends/VectorBackend.js +58 -4
- package/dist/src/backends/VectorBackend.js.map +1 -1
- package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts.map +1 -1
- package/dist/src/backends/rvf/SqlJsRvfBackend.js +22 -12
- package/dist/src/backends/rvf/SqlJsRvfBackend.js.map +1 -1
- package/dist/src/controllers/EmbeddingService.d.ts +10 -0
- package/dist/src/controllers/EmbeddingService.d.ts.map +1 -1
- package/dist/src/controllers/EmbeddingService.js +12 -0
- package/dist/src/controllers/EmbeddingService.js.map +1 -1
- package/dist/src/controllers/ReasoningBank.d.ts +40 -4
- package/dist/src/controllers/ReasoningBank.d.ts.map +1 -1
- package/dist/src/controllers/ReasoningBank.js +124 -57
- package/dist/src/controllers/ReasoningBank.js.map +1 -1
- package/dist/src/controllers/ReflexionMemory.d.ts +20 -0
- package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
- package/dist/src/controllers/ReflexionMemory.js +104 -17
- package/dist/src/controllers/ReflexionMemory.js.map +1 -1
- package/dist/src/controllers/SkillLibrary.d.ts +9 -0
- package/dist/src/controllers/SkillLibrary.d.ts.map +1 -1
- package/dist/src/controllers/SkillLibrary.js +60 -20
- package/dist/src/controllers/SkillLibrary.js.map +1 -1
- package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
- package/dist/src/controllers/WASMVectorSearch.js +48 -17
- package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
- package/dist/src/controllers/episode-hybrid.d.ts +63 -0
- package/dist/src/controllers/episode-hybrid.d.ts.map +1 -0
- package/dist/src/controllers/episode-hybrid.js +117 -0
- package/dist/src/controllers/episode-hybrid.js.map +1 -0
- package/dist/src/mcp/agentdb-mcp-server.js +146 -3
- package/dist/src/mcp/agentdb-mcp-server.js.map +1 -1
- package/dist/src/search/conversation-retrieval.d.ts +56 -0
- package/dist/src/search/conversation-retrieval.d.ts.map +1 -0
- package/dist/src/search/conversation-retrieval.js +161 -0
- package/dist/src/search/conversation-retrieval.js.map +1 -0
- package/dist/src/search/cross-encoder.d.ts +17 -0
- package/dist/src/search/cross-encoder.d.ts.map +1 -0
- package/dist/src/search/cross-encoder.js +52 -0
- package/dist/src/search/cross-encoder.js.map +1 -0
- package/dist/src/security/mcp-policy.d.ts.map +1 -1
- package/dist/src/security/mcp-policy.js +4 -0
- package/dist/src/security/mcp-policy.js.map +1 -1
- package/dist/src/simd/simd-vector-ops.d.ts +11 -0
- package/dist/src/simd/simd-vector-ops.d.ts.map +1 -1
- package/dist/src/simd/simd-vector-ops.js +67 -0
- package/dist/src/simd/simd-vector-ops.js.map +1 -1
- package/dist/src/utils/top-k.d.ts +44 -0
- package/dist/src/utils/top-k.d.ts.map +1 -0
- package/dist/src/utils/top-k.js +111 -0
- package/dist/src/utils/top-k.js.map +1 -0
- package/package.json +2 -2
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { normalizeRowId } from '../types/database.types.js';
|
|
21
21
|
import { searchVectors } from '../backends/VectorBackend.js';
|
|
22
|
+
import { sqlExactSource } from '../backends/ExactSearch.js';
|
|
23
|
+
import { TopK, squaredNorm, blobToFloat32 } from '../utils/top-k.js';
|
|
22
24
|
/** Parse JSON from DB row values without throwing on malformed data. */
|
|
23
25
|
function safeJsonParse(value, fallback) {
|
|
24
26
|
if (!value)
|
|
@@ -30,6 +32,27 @@ function safeJsonParse(value, fallback) {
|
|
|
30
32
|
return fallback;
|
|
31
33
|
}
|
|
32
34
|
}
|
|
35
|
+
export const DEFAULT_RERANK_WEIGHTS = Object.freeze({
|
|
36
|
+
similarity: 0.7,
|
|
37
|
+
successRate: 0.2,
|
|
38
|
+
reward: 0.1,
|
|
39
|
+
});
|
|
40
|
+
function resolveWeights(base, override) {
|
|
41
|
+
const weights = { ...base, ...override };
|
|
42
|
+
for (const [name, value] of Object.entries(weights)) {
|
|
43
|
+
if (!Number.isFinite(value) || value < 0) {
|
|
44
|
+
throw new Error(`rerank weight ${name} must be a non-negative finite number`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return weights;
|
|
48
|
+
}
|
|
49
|
+
const clamp01 = (x) => Number.isFinite(x) ? Math.min(1, Math.max(0, x)) : 0;
|
|
50
|
+
/** Rank score for a pattern with a similarity (ADR-015) */
|
|
51
|
+
export function rerankScore(similarity, successRate, avgReward, weights = DEFAULT_RERANK_WEIGHTS) {
|
|
52
|
+
return weights.similarity * similarity
|
|
53
|
+
+ weights.successRate * clamp01(successRate)
|
|
54
|
+
+ weights.reward * clamp01(avgReward);
|
|
55
|
+
}
|
|
33
56
|
/** How long getPatternStats() results are reused */
|
|
34
57
|
const PATTERN_STATS_TTL_MS = 5 * 60 * 1000;
|
|
35
58
|
export class ReasoningBank {
|
|
@@ -42,6 +65,8 @@ export class ReasoningBank {
|
|
|
42
65
|
// Maps pattern ID (number) to vector backend ID (string) for hybrid mode
|
|
43
66
|
idMapping = new Map();
|
|
44
67
|
nextVectorId = 0;
|
|
68
|
+
rerankByDefault;
|
|
69
|
+
rerankWeights;
|
|
45
70
|
/**
|
|
46
71
|
* Constructor supports both legacy (v1) and new (v2) modes
|
|
47
72
|
*
|
|
@@ -51,11 +76,13 @@ export class ReasoningBank {
|
|
|
51
76
|
* New mode (v2 - with VectorBackend):
|
|
52
77
|
* new ReasoningBank(db, embedder, vectorBackend, learningBackend?)
|
|
53
78
|
*/
|
|
54
|
-
constructor(db, embedder, vectorBackend, learningBackend) {
|
|
79
|
+
constructor(db, embedder, vectorBackend, learningBackend, options = {}) {
|
|
55
80
|
this.db = db;
|
|
56
81
|
this.embedder = embedder;
|
|
57
82
|
this.vectorBackend = vectorBackend;
|
|
58
83
|
this.learningBackend = learningBackend;
|
|
84
|
+
this.rerankByDefault = options.rerank ?? true;
|
|
85
|
+
this.rerankWeights = resolveWeights(DEFAULT_RERANK_WEIGHTS, options.rerankWeights);
|
|
59
86
|
this.cache = new Map();
|
|
60
87
|
this.initializeSchema();
|
|
61
88
|
}
|
|
@@ -118,10 +145,9 @@ export class ReasoningBank {
|
|
|
118
145
|
successRate: pattern.successRate,
|
|
119
146
|
});
|
|
120
147
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
148
|
+
// Always keep the SQL copy: v1 searches it, and v2 falls back to it when
|
|
149
|
+
// the index is small or comes back short (ADR-015)
|
|
150
|
+
this.storePatternEmbedding(patternId, embedding);
|
|
125
151
|
// Invalidate cache
|
|
126
152
|
this.cache.clear();
|
|
127
153
|
return patternId;
|
|
@@ -130,7 +156,7 @@ export class ReasoningBank {
|
|
|
130
156
|
* Store pattern embedding
|
|
131
157
|
*/
|
|
132
158
|
storePatternEmbedding(patternId, embedding) {
|
|
133
|
-
const blob = Buffer.from(embedding.buffer);
|
|
159
|
+
const blob = Buffer.from(embedding.buffer, embedding.byteOffset, embedding.byteLength);
|
|
134
160
|
const stmt = this.db.prepare(`
|
|
135
161
|
INSERT OR REPLACE INTO pattern_embeddings (pattern_id, embedding)
|
|
136
162
|
VALUES (?, ?)
|
|
@@ -189,10 +215,37 @@ export class ReasoningBank {
|
|
|
189
215
|
queryEmbedding = this.learningBackend.enhance(queryEmbedding, neighborEmbeddings, weights);
|
|
190
216
|
}
|
|
191
217
|
}
|
|
192
|
-
//
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
|
|
218
|
+
// Reranking needs a candidate pool wider than k
|
|
219
|
+
const weights = this.weightsFor(query);
|
|
220
|
+
const poolSize = weights ? k * 3 : k;
|
|
221
|
+
// Perform vector search; small or short index answers are completed by
|
|
222
|
+
// exact cosine over pattern_embeddings (ADR-015)
|
|
223
|
+
const results = await searchVectors(this.vectorBackend, queryEmbedding, poolSize, { threshold }, this.exactPatternSource());
|
|
224
|
+
// Hydrate with metadata from SQLite. A shared backend can return other
|
|
225
|
+
// controllers' vectors, which carry no patternId.
|
|
226
|
+
const patterns = this.hydratePatterns(results.filter((r) => r.metadata?.patternId != null));
|
|
227
|
+
if (!weights)
|
|
228
|
+
return patterns.slice(0, k);
|
|
229
|
+
for (const p of patterns)
|
|
230
|
+
p.score = rerankScore(p.similarity ?? 0, p.successRate, p.avgReward, weights);
|
|
231
|
+
return patterns.sort((a, b) => b.score - a.score).slice(0, k);
|
|
232
|
+
}
|
|
233
|
+
/** Rerank weights for this query, or null when reranking is off */
|
|
234
|
+
weightsFor(query) {
|
|
235
|
+
if (!(query.rerank ?? this.rerankByDefault))
|
|
236
|
+
return null;
|
|
237
|
+
return query.rerankWeights ? resolveWeights(this.rerankWeights, query.rerankWeights) : this.rerankWeights;
|
|
238
|
+
}
|
|
239
|
+
/** pattern_embeddings as an exact-search source; index ids are per-process, so dedupe on patternId */
|
|
240
|
+
exactPatternSource() {
|
|
241
|
+
return sqlExactSource(this.db, {
|
|
242
|
+
table: 'pattern_embeddings',
|
|
243
|
+
idColumn: 'pattern_id',
|
|
244
|
+
vectorId: (id) => `pattern:${id}`,
|
|
245
|
+
metadata: (id) => ({ patternId: id }),
|
|
246
|
+
owns: (hit) => hit.metadata?.patternId != null,
|
|
247
|
+
key: (hit) => String(hit.metadata?.patternId),
|
|
248
|
+
});
|
|
196
249
|
}
|
|
197
250
|
/**
|
|
198
251
|
* v1: Legacy search using SQLite (backward compatible)
|
|
@@ -240,30 +293,33 @@ export class ReasoningBank {
|
|
|
240
293
|
${whereClause}
|
|
241
294
|
`);
|
|
242
295
|
const rows = stmt.all(...params);
|
|
243
|
-
//
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
.
|
|
265
|
-
.
|
|
266
|
-
|
|
296
|
+
// Threshold on similarity, then rank by the rerank score (or similarity
|
|
297
|
+
// when reranking is off) in a bounded top-k; only winners are converted.
|
|
298
|
+
const weights = this.weightsFor(query);
|
|
299
|
+
const queryNorm = Math.sqrt(squaredNorm(query.taskEmbedding));
|
|
300
|
+
const top = new TopK(k);
|
|
301
|
+
for (const row of rows) {
|
|
302
|
+
const embedding = blobToFloat32(row.embedding);
|
|
303
|
+
const similarity = this.cosineSimilarity(query.taskEmbedding, embedding, queryNorm);
|
|
304
|
+
if (!(similarity >= threshold))
|
|
305
|
+
continue;
|
|
306
|
+
const score = weights ? rerankScore(similarity, row.success_rate, row.avg_reward, weights) : similarity;
|
|
307
|
+
top.push(score, { row, embedding, similarity });
|
|
308
|
+
}
|
|
309
|
+
return top.sorted().map(({ score, item: { row, embedding, similarity } }) => ({
|
|
310
|
+
id: row.id,
|
|
311
|
+
taskType: row.task_type,
|
|
312
|
+
approach: row.approach,
|
|
313
|
+
successRate: row.success_rate,
|
|
314
|
+
uses: row.uses,
|
|
315
|
+
avgReward: row.avg_reward,
|
|
316
|
+
tags: safeJsonParse(row.tags, []),
|
|
317
|
+
metadata: safeJsonParse(row.metadata, {}),
|
|
318
|
+
createdAt: row.ts,
|
|
319
|
+
embedding,
|
|
320
|
+
similarity,
|
|
321
|
+
...(weights ? { score } : {}),
|
|
322
|
+
}));
|
|
267
323
|
}
|
|
268
324
|
/**
|
|
269
325
|
* Hydrate search results with metadata from SQLite
|
|
@@ -273,27 +329,27 @@ export class ReasoningBank {
|
|
|
273
329
|
const stmt = this.db.prepare(`
|
|
274
330
|
SELECT * FROM reasoning_patterns WHERE id = ?
|
|
275
331
|
`);
|
|
276
|
-
return results.
|
|
332
|
+
return results.flatMap(result => {
|
|
277
333
|
const patternId = result.metadata?.patternId;
|
|
278
334
|
if (!patternId) {
|
|
279
335
|
throw new Error(`VectorBackend result missing patternId: ${result.id}`);
|
|
280
336
|
}
|
|
281
337
|
const row = stmt.get(patternId);
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
return {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
338
|
+
// Deleted pattern still present in the index: skip it
|
|
339
|
+
if (!row)
|
|
340
|
+
return [];
|
|
341
|
+
return [{
|
|
342
|
+
id: row.id,
|
|
343
|
+
taskType: row.task_type,
|
|
344
|
+
approach: row.approach,
|
|
345
|
+
successRate: row.success_rate,
|
|
346
|
+
uses: row.uses,
|
|
347
|
+
avgReward: row.avg_reward,
|
|
348
|
+
tags: safeJsonParse(row.tags, []),
|
|
349
|
+
metadata: safeJsonParse(row.metadata, {}),
|
|
350
|
+
createdAt: row.ts,
|
|
351
|
+
similarity: result.similarity,
|
|
352
|
+
}];
|
|
297
353
|
});
|
|
298
354
|
}
|
|
299
355
|
/**
|
|
@@ -391,9 +447,10 @@ export class ReasoningBank {
|
|
|
391
447
|
avg_reward = (avg_reward * uses + ?) / (uses + 1)
|
|
392
448
|
WHERE id = ?
|
|
393
449
|
`);
|
|
394
|
-
stmt.run(success ? 1 : 0, reward, patternId);
|
|
450
|
+
const result = stmt.run(success ? 1 : 0, reward, patternId);
|
|
395
451
|
// Invalidate cache
|
|
396
452
|
this.cache.clear();
|
|
453
|
+
return result.changes > 0;
|
|
397
454
|
}
|
|
398
455
|
/**
|
|
399
456
|
* Record pattern outcome for GNN learning (v2 feature)
|
|
@@ -401,14 +458,22 @@ export class ReasoningBank {
|
|
|
401
458
|
* Updates pattern stats and adds training sample to LearningBackend
|
|
402
459
|
* for future GNN model improvements.
|
|
403
460
|
*
|
|
461
|
+
* The updated success rate and average reward feed the reward-aware
|
|
462
|
+
* rerank in searchPatterns() (ADR-015).
|
|
463
|
+
*
|
|
404
464
|
* @param patternId - Pattern ID to update
|
|
405
465
|
* @param success - Whether the pattern was successful
|
|
406
466
|
* @param reward - Optional reward value (default: 1 for success, 0 for failure)
|
|
467
|
+
* @returns false when no pattern has that id
|
|
407
468
|
*/
|
|
408
469
|
async recordOutcome(patternId, success, reward) {
|
|
470
|
+
if (reward !== undefined && !Number.isFinite(reward)) {
|
|
471
|
+
throw new Error('reward must be a finite number');
|
|
472
|
+
}
|
|
409
473
|
// Update pattern statistics
|
|
410
474
|
const actualReward = reward !== undefined ? reward : (success ? 1.0 : 0.0);
|
|
411
|
-
this.updatePatternStats(patternId, success, actualReward)
|
|
475
|
+
if (!this.updatePatternStats(patternId, success, actualReward))
|
|
476
|
+
return false;
|
|
412
477
|
// Add to GNN training buffer if available
|
|
413
478
|
if (this.learningBackend) {
|
|
414
479
|
const pattern = this.getPattern(patternId);
|
|
@@ -417,6 +482,7 @@ export class ReasoningBank {
|
|
|
417
482
|
this.learningBackend.addSample(embedding, success);
|
|
418
483
|
}
|
|
419
484
|
}
|
|
485
|
+
return true;
|
|
420
486
|
}
|
|
421
487
|
/**
|
|
422
488
|
* Train GNN model on collected samples (v2 feature)
|
|
@@ -476,6 +542,8 @@ export class ReasoningBank {
|
|
|
476
542
|
* Delete pattern by ID
|
|
477
543
|
*/
|
|
478
544
|
deletePattern(patternId) {
|
|
545
|
+
// Foreign-key cascades are off unless the connection enables them
|
|
546
|
+
this.db.prepare('DELETE FROM pattern_embeddings WHERE pattern_id = ?').run(patternId);
|
|
479
547
|
const stmt = this.db.prepare('DELETE FROM reasoning_patterns WHERE id = ?');
|
|
480
548
|
const result = stmt.run(patternId);
|
|
481
549
|
// Invalidate cache
|
|
@@ -489,21 +557,20 @@ export class ReasoningBank {
|
|
|
489
557
|
this.cache.clear();
|
|
490
558
|
}
|
|
491
559
|
/**
|
|
492
|
-
* Calculate cosine similarity between two vectors
|
|
560
|
+
* Calculate cosine similarity between two vectors (`normA` is a's
|
|
561
|
+
* precomputed Math.sqrt(squaredNorm(a)))
|
|
493
562
|
*/
|
|
494
|
-
cosineSimilarity(a, b) {
|
|
563
|
+
cosineSimilarity(a, b, normA) {
|
|
495
564
|
if (a.length !== b.length) {
|
|
496
565
|
throw new Error('Vectors must have same length');
|
|
497
566
|
}
|
|
498
567
|
let dotProduct = 0;
|
|
499
|
-
let normA = 0;
|
|
500
568
|
let normB = 0;
|
|
501
569
|
for (let i = 0; i < a.length; i++) {
|
|
502
570
|
dotProduct += a[i] * b[i];
|
|
503
|
-
normA += a[i] * a[i];
|
|
504
571
|
normB += b[i] * b[i];
|
|
505
572
|
}
|
|
506
|
-
const denom =
|
|
573
|
+
const denom = normA * Math.sqrt(normB);
|
|
507
574
|
return denom === 0 ? 0 : dotProduct / denom;
|
|
508
575
|
}
|
|
509
576
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReasoningBank.js","sourceRoot":"","sources":["../../../src/controllers/ReasoningBank.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReasoningBank.js","sourceRoot":"","sources":["../../../src/controllers/ReasoningBank.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,16 @@ export interface ReflexionQuery {
|
|
|
40
40
|
onlyFailures?: boolean;
|
|
41
41
|
onlySuccesses?: boolean;
|
|
42
42
|
timeWindowDays?: number;
|
|
43
|
+
/**
|
|
44
|
+
* Fuse BM25 keyword ranking with the dense ranking (ADR-016). Default true; false restores pure vector order.
|
|
45
|
+
* Not applied with a graph backend, whose episode ids are not SQL row ids.
|
|
46
|
+
*/
|
|
47
|
+
hybrid?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Rerank the top candidates with a local cross-encoder (ADR-016). Default false: it costs about 200 ms per call
|
|
50
|
+
* on CPU and downloads a 23 MB model on first use. Needs hybrid; falls back to the hybrid order on any error.
|
|
51
|
+
*/
|
|
52
|
+
rerank?: boolean;
|
|
43
53
|
}
|
|
44
54
|
export declare class ReflexionMemory {
|
|
45
55
|
private db;
|
|
@@ -48,6 +58,7 @@ export declare class ReflexionMemory {
|
|
|
48
58
|
private learningBackend?;
|
|
49
59
|
private graphBackend?;
|
|
50
60
|
private queryCache;
|
|
61
|
+
private lexicalIndex?;
|
|
51
62
|
constructor(db: IDatabaseConnection, embedder: EmbeddingService, vectorBackend?: VectorBackend, learningBackend?: LearningBackend, graphBackend?: GraphBackend, cacheConfig?: QueryCacheConfig);
|
|
52
63
|
/**
|
|
53
64
|
* Store a new episode with its critique and outcome
|
|
@@ -66,6 +77,15 @@ export declare class ReflexionMemory {
|
|
|
66
77
|
* Results are cached for improved performance
|
|
67
78
|
*/
|
|
68
79
|
retrieveRelevant(query: ReflexionQuery): Promise<EpisodeWithEmbedding[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Re-rank a dense candidate list by fusing it with BM25 over episode text, then optionally with a cross-encoder
|
|
82
|
+
* (ADR-016). Episodes found only by keyword are fetched, filtered like dense hits, and given their cosine
|
|
83
|
+
* similarity. Falls back to the dense order if the keyword index cannot be built, and to the hybrid order if
|
|
84
|
+
* the cross-encoder cannot run.
|
|
85
|
+
*/
|
|
86
|
+
private hybridRank;
|
|
87
|
+
/** Fetches keyword-only hits, applies the query's filters, and records their cosine similarity. */
|
|
88
|
+
private loadKeywordHits;
|
|
69
89
|
/**
|
|
70
90
|
* Prepare and enhance query embedding for search
|
|
71
91
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReflexionMemory.d.ts","sourceRoot":"","sources":["../../../src/controllers/ReflexionMemory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAgB,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ReflexionMemory.d.ts","sourceRoot":"","sources":["../../../src/controllers/ReflexionMemory.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,11 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { normalizeRowId } from '../types/database.types.js';
|
|
11
11
|
import { searchVectors } from '../backends/VectorBackend.js';
|
|
12
|
+
import { sqlExactSource } from '../backends/ExactSearch.js';
|
|
12
13
|
import { NodeIdMapper } from '../utils/NodeIdMapper.js';
|
|
13
14
|
import { QueryCache } from '../core/QueryCache.js';
|
|
15
|
+
import { TopK, squaredNorm, cosineWithQueryNorm } from '../utils/top-k.js';
|
|
16
|
+
import { applyCrossEncoder, EpisodeLexicalIndex, fuseEpisodeScores, HYBRID_MAX_POOL, orderByScore, RERANK_DEPTH, } from './episode-hybrid.js';
|
|
14
17
|
function finiteNumber(value, name) {
|
|
15
18
|
const n = Number(value);
|
|
16
19
|
if (!Number.isFinite(n))
|
|
@@ -43,6 +46,7 @@ export class ReflexionMemory {
|
|
|
43
46
|
learningBackend;
|
|
44
47
|
graphBackend;
|
|
45
48
|
queryCache;
|
|
49
|
+
lexicalIndex;
|
|
46
50
|
constructor(db, embedder, vectorBackend, learningBackend, graphBackend, cacheConfig) {
|
|
47
51
|
this.db = db;
|
|
48
52
|
this.embedder = embedder;
|
|
@@ -175,8 +179,10 @@ export class ReflexionMemory {
|
|
|
175
179
|
*/
|
|
176
180
|
async retrieveRelevant(query) {
|
|
177
181
|
const { task, currentState = '', k = 5, minReward, onlyFailures = false, onlySuccesses = false, timeWindowDays, } = query;
|
|
182
|
+
const hybrid = query.hybrid !== false && !this.graphBackend;
|
|
183
|
+
const rerank = hybrid && query.rerank === true;
|
|
178
184
|
// Check cache first
|
|
179
|
-
const cacheKey = this.queryCache.generateKey('retrieveRelevant', [task, currentState, k, minReward, onlyFailures, onlySuccesses, timeWindowDays], 'episodes');
|
|
185
|
+
const cacheKey = this.queryCache.generateKey('retrieveRelevant', [task, currentState, k, minReward, onlyFailures, onlySuccesses, timeWindowDays, hybrid, rerank], 'episodes');
|
|
180
186
|
const cached = this.queryCache.get(cacheKey);
|
|
181
187
|
if (cached) {
|
|
182
188
|
return cached;
|
|
@@ -191,16 +197,90 @@ export class ReflexionMemory {
|
|
|
191
197
|
else if (this.graphBackend && 'execute' in this.graphBackend) {
|
|
192
198
|
episodes = await this.retrieveFromGenericGraph(query);
|
|
193
199
|
}
|
|
194
|
-
else if (this.vectorBackend) {
|
|
195
|
-
episodes = await this.retrieveFromVectorBackend(queryEmbedding, query);
|
|
196
|
-
}
|
|
197
200
|
else {
|
|
198
|
-
|
|
201
|
+
// Hybrid retrieval widens the dense pool, then fuses it with the BM25 ranking.
|
|
202
|
+
const pooled = hybrid ? { ...query, k: Math.min(Math.max(k * 4, 50), HYBRID_MAX_POOL) } : query;
|
|
203
|
+
episodes = this.vectorBackend
|
|
204
|
+
? await this.retrieveFromVectorBackend(queryEmbedding, pooled)
|
|
205
|
+
: await this.retrieveFromSQLFallback(queryEmbedding, pooled);
|
|
206
|
+
if (hybrid) {
|
|
207
|
+
episodes = await this.hybridRank([task, currentState].filter(Boolean).join('\n'), episodes, { ...query, rerank }, queryEmbedding);
|
|
208
|
+
}
|
|
199
209
|
}
|
|
200
210
|
// Cache and return results
|
|
201
211
|
this.queryCache.set(cacheKey, episodes);
|
|
202
212
|
return episodes;
|
|
203
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Re-rank a dense candidate list by fusing it with BM25 over episode text, then optionally with a cross-encoder
|
|
216
|
+
* (ADR-016). Episodes found only by keyword are fetched, filtered like dense hits, and given their cosine
|
|
217
|
+
* similarity. Falls back to the dense order if the keyword index cannot be built, and to the hybrid order if
|
|
218
|
+
* the cross-encoder cannot run.
|
|
219
|
+
*/
|
|
220
|
+
async hybridRank(text, dense, query, queryEmbedding) {
|
|
221
|
+
const k = query.k ?? 5;
|
|
222
|
+
let lexical = [];
|
|
223
|
+
try {
|
|
224
|
+
lexical = (this.lexicalIndex ??= new EpisodeLexicalIndex(this.db)).search(text, HYBRID_MAX_POOL);
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
if (!query.rerank)
|
|
228
|
+
return dense.slice(0, k);
|
|
229
|
+
}
|
|
230
|
+
if (lexical.length === 0 && !query.rerank)
|
|
231
|
+
return dense.slice(0, k);
|
|
232
|
+
const byId = new Map(dense.filter((e) => e.id !== undefined).map((e) => [e.id, e]));
|
|
233
|
+
// Load the keyword hits the fusion will see, so every fused episode has a true cosine similarity; the dense
|
|
234
|
+
// side is then the cosine order over (dense pool + keyword hits), the same ranking the benchmark fuses.
|
|
235
|
+
const lexHead = lexical.slice(0, Math.max(dense.length, query.rerank ? RERANK_DEPTH : 0));
|
|
236
|
+
const missing = lexHead.map((l) => l.id).filter((id) => !byId.has(id));
|
|
237
|
+
if (missing.length > 0)
|
|
238
|
+
this.loadKeywordHits(missing, byId, query, queryEmbedding);
|
|
239
|
+
const lexUsed = lexHead.filter((l) => byId.has(l.id)); // keyword hits that failed the filters drop out
|
|
240
|
+
const denseIds = [...byId.values()]
|
|
241
|
+
.sort((a, z) => (z.similarity ?? 0) - (a.similarity ?? 0) || z.id - a.id)
|
|
242
|
+
.map((e) => e.id);
|
|
243
|
+
const score = fuseEpisodeScores(denseIds, lexUsed);
|
|
244
|
+
const candidates = query.rerank
|
|
245
|
+
? [...new Set([...denseIds.slice(0, RERANK_DEPTH), ...lexUsed.slice(0, RERANK_DEPTH).map((l) => l.id)])]
|
|
246
|
+
: [];
|
|
247
|
+
if (query.rerank) {
|
|
248
|
+
try {
|
|
249
|
+
await applyCrossEncoder(text, score, candidates, (id) => {
|
|
250
|
+
const ep = byId.get(id);
|
|
251
|
+
return ep ? [ep.task, ep.input, ep.output, ep.critique].filter(Boolean).join('\n') : undefined;
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
// Model unavailable (offline, unsupported platform): keep the hybrid order.
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
const out = [];
|
|
259
|
+
for (const id of orderByScore(score, denseIds)) {
|
|
260
|
+
const ep = byId.get(id);
|
|
261
|
+
if (ep)
|
|
262
|
+
out.push(ep);
|
|
263
|
+
if (out.length >= k)
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
return out;
|
|
267
|
+
}
|
|
268
|
+
/** Fetches keyword-only hits, applies the query's filters, and records their cosine similarity. */
|
|
269
|
+
loadKeywordHits(ids, byId, query, queryEmbedding) {
|
|
270
|
+
const marks = ids.map(() => '?').join(',');
|
|
271
|
+
const embeddings = new Map(this.db
|
|
272
|
+
.prepare(`SELECT episode_id, embedding FROM episode_embeddings WHERE episode_id IN (${marks})`)
|
|
273
|
+
.all(...ids)
|
|
274
|
+
.map((r) => [r.episode_id, this.deserializeEmbedding(r.embedding)]));
|
|
275
|
+
const queryNorm = Math.sqrt(squaredNorm(queryEmbedding));
|
|
276
|
+
for (const row of this.fetchEpisodesByIds(ids)) {
|
|
277
|
+
if (!this.passesEpisodeFilters(row, query))
|
|
278
|
+
continue;
|
|
279
|
+
const emb = embeddings.get(row.id);
|
|
280
|
+
const similarity = emb && emb.length === queryEmbedding.length ? cosineWithQueryNorm(queryEmbedding, queryNorm, emb) : 0;
|
|
281
|
+
byId.set(row.id, this.convertDatabaseEpisode(row, similarity));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
204
284
|
/**
|
|
205
285
|
* Prepare and enhance query embedding for search
|
|
206
286
|
*/
|
|
@@ -247,10 +327,14 @@ export class ReflexionMemory {
|
|
|
247
327
|
*/
|
|
248
328
|
async retrieveFromVectorBackend(queryEmbedding, query) {
|
|
249
329
|
const { k = 5, minReward, onlyFailures, onlySuccesses, timeWindowDays } = query;
|
|
250
|
-
// Get candidates from vector backend
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
330
|
+
// Get candidates from vector backend; small or short answers are
|
|
331
|
+
// completed by exact cosine over episode_embeddings (ADR-015)
|
|
332
|
+
const searchResults = await searchVectors(this.vectorBackend, queryEmbedding, k * 3, { threshold: 0.0 }, sqlExactSource(this.db, {
|
|
333
|
+
table: 'episode_embeddings',
|
|
334
|
+
idColumn: 'episode_id',
|
|
335
|
+
vectorId: (id) => String(id),
|
|
336
|
+
owns: (hit) => EPISODE_VECTOR_ID.test(hit.id),
|
|
337
|
+
}));
|
|
254
338
|
// The vector backend may be shared with other controllers ("skill:N",
|
|
255
339
|
// "causal-edge:N"); episode vectors use the bare numeric row id.
|
|
256
340
|
const episodeResults = searchResults.filter((r) => EPISODE_VECTOR_ID.test(r.id));
|
|
@@ -295,15 +379,18 @@ export class ReflexionMemory {
|
|
|
295
379
|
ORDER BY e.reward DESC
|
|
296
380
|
`);
|
|
297
381
|
const rows = stmt.all(...params);
|
|
298
|
-
//
|
|
299
|
-
|
|
382
|
+
// Bounded top-k over the scan; only the winners are converted. Ordering
|
|
383
|
+
// matches the old sort on (similarity || 0) with scan order on ties.
|
|
384
|
+
const queryNorm = Math.sqrt(squaredNorm(queryEmbedding));
|
|
385
|
+
const top = new TopK(k);
|
|
386
|
+
for (const row of rows) {
|
|
300
387
|
const embedding = this.deserializeEmbedding(row.embedding);
|
|
301
|
-
const similarity =
|
|
302
|
-
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
388
|
+
const similarity = cosineWithQueryNorm(queryEmbedding, queryNorm, embedding);
|
|
389
|
+
top.push(similarity || 0, { row, embedding, similarity });
|
|
390
|
+
}
|
|
391
|
+
return top
|
|
392
|
+
.sorted()
|
|
393
|
+
.map(({ item }) => this.convertDatabaseEpisode(item.row, item.similarity, item.embedding));
|
|
307
394
|
}
|
|
308
395
|
/**
|
|
309
396
|
* Apply episode filters to search results
|