@mnemoai/core 1.1.0 → 1.1.2
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/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +7 -0
- package/dist/index.d.ts +136 -0
- package/dist/index.d.ts.map +1 -0
- package/{index.ts → dist/index.js} +537 -1333
- package/dist/index.js.map +7 -0
- package/dist/src/access-tracker.d.ts +97 -0
- package/dist/src/access-tracker.d.ts.map +1 -0
- package/dist/src/access-tracker.js +184 -0
- package/dist/src/access-tracker.js.map +7 -0
- package/dist/src/adapters/chroma.d.ts +31 -0
- package/dist/src/adapters/chroma.d.ts.map +1 -0
- package/{src/adapters/chroma.ts → dist/src/adapters/chroma.js} +45 -107
- package/dist/src/adapters/chroma.js.map +7 -0
- package/dist/src/adapters/lancedb.d.ts +29 -0
- package/dist/src/adapters/lancedb.d.ts.map +1 -0
- package/{src/adapters/lancedb.ts → dist/src/adapters/lancedb.js} +41 -109
- package/dist/src/adapters/lancedb.js.map +7 -0
- package/dist/src/adapters/pgvector.d.ts +33 -0
- package/dist/src/adapters/pgvector.d.ts.map +1 -0
- package/{src/adapters/pgvector.ts → dist/src/adapters/pgvector.js} +42 -104
- package/dist/src/adapters/pgvector.js.map +7 -0
- package/dist/src/adapters/qdrant.d.ts +34 -0
- package/dist/src/adapters/qdrant.d.ts.map +1 -0
- package/dist/src/adapters/qdrant.js +132 -0
- package/dist/src/adapters/qdrant.js.map +7 -0
- package/dist/src/adaptive-retrieval.d.ts +14 -0
- package/dist/src/adaptive-retrieval.d.ts.map +1 -0
- package/dist/src/adaptive-retrieval.js +52 -0
- package/dist/src/adaptive-retrieval.js.map +7 -0
- package/dist/src/audit-log.d.ts +56 -0
- package/dist/src/audit-log.d.ts.map +1 -0
- package/dist/src/audit-log.js +139 -0
- package/dist/src/audit-log.js.map +7 -0
- package/dist/src/chunker.d.ts +45 -0
- package/dist/src/chunker.d.ts.map +1 -0
- package/dist/src/chunker.js +157 -0
- package/dist/src/chunker.js.map +7 -0
- package/dist/src/config.d.ts +70 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +142 -0
- package/dist/src/config.js.map +7 -0
- package/dist/src/decay-engine.d.ts +73 -0
- package/dist/src/decay-engine.d.ts.map +1 -0
- package/dist/src/decay-engine.js +119 -0
- package/dist/src/decay-engine.js.map +7 -0
- package/dist/src/embedder.d.ts +94 -0
- package/dist/src/embedder.d.ts.map +1 -0
- package/{src/embedder.ts → dist/src/embedder.js} +119 -317
- package/dist/src/embedder.js.map +7 -0
- package/dist/src/extraction-prompts.d.ts +12 -0
- package/dist/src/extraction-prompts.d.ts.map +1 -0
- package/dist/src/extraction-prompts.js +311 -0
- package/dist/src/extraction-prompts.js.map +7 -0
- package/dist/src/license.d.ts +29 -0
- package/dist/src/license.d.ts.map +1 -0
- package/{src/license.ts → dist/src/license.js} +42 -113
- package/dist/src/license.js.map +7 -0
- package/dist/src/llm-client.d.ts +23 -0
- package/dist/src/llm-client.d.ts.map +1 -0
- package/{src/llm-client.ts → dist/src/llm-client.js} +22 -55
- package/dist/src/llm-client.js.map +7 -0
- package/dist/src/logger.d.ts +33 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +35 -0
- package/dist/src/logger.js.map +7 -0
- package/dist/src/mcp-server.d.ts +16 -0
- package/dist/src/mcp-server.d.ts.map +1 -0
- package/{src/mcp-server.ts → dist/src/mcp-server.js} +81 -181
- package/dist/src/mcp-server.js.map +7 -0
- package/dist/src/memory-categories.d.ts +40 -0
- package/dist/src/memory-categories.d.ts.map +1 -0
- package/dist/src/memory-categories.js +33 -0
- package/dist/src/memory-categories.js.map +7 -0
- package/dist/src/memory-upgrader.d.ts +71 -0
- package/dist/src/memory-upgrader.d.ts.map +1 -0
- package/dist/src/memory-upgrader.js +238 -0
- package/dist/src/memory-upgrader.js.map +7 -0
- package/dist/src/migrate.d.ts +47 -0
- package/dist/src/migrate.d.ts.map +1 -0
- package/{src/migrate.ts → dist/src/migrate.js} +57 -165
- package/dist/src/migrate.js.map +7 -0
- package/dist/src/mnemo.d.ts +67 -0
- package/dist/src/mnemo.d.ts.map +1 -0
- package/dist/src/mnemo.js +66 -0
- package/dist/src/mnemo.js.map +7 -0
- package/dist/src/noise-filter.d.ts +23 -0
- package/dist/src/noise-filter.d.ts.map +1 -0
- package/dist/src/noise-filter.js +62 -0
- package/dist/src/noise-filter.js.map +7 -0
- package/dist/src/noise-prototypes.d.ts +40 -0
- package/dist/src/noise-prototypes.d.ts.map +1 -0
- package/dist/src/noise-prototypes.js +116 -0
- package/dist/src/noise-prototypes.js.map +7 -0
- package/dist/src/observability.d.ts +16 -0
- package/dist/src/observability.d.ts.map +1 -0
- package/dist/src/observability.js +53 -0
- package/dist/src/observability.js.map +7 -0
- package/dist/src/query-tracker.d.ts +27 -0
- package/dist/src/query-tracker.d.ts.map +1 -0
- package/dist/src/query-tracker.js +32 -0
- package/dist/src/query-tracker.js.map +7 -0
- package/dist/src/reflection-event-store.d.ts +44 -0
- package/dist/src/reflection-event-store.d.ts.map +1 -0
- package/dist/src/reflection-event-store.js +50 -0
- package/dist/src/reflection-event-store.js.map +7 -0
- package/dist/src/reflection-item-store.d.ts +58 -0
- package/dist/src/reflection-item-store.d.ts.map +1 -0
- package/dist/src/reflection-item-store.js +69 -0
- package/dist/src/reflection-item-store.js.map +7 -0
- package/dist/src/reflection-mapped-metadata.d.ts +47 -0
- package/dist/src/reflection-mapped-metadata.d.ts.map +1 -0
- package/dist/src/reflection-mapped-metadata.js +40 -0
- package/dist/src/reflection-mapped-metadata.js.map +7 -0
- package/dist/src/reflection-metadata.d.ts +11 -0
- package/dist/src/reflection-metadata.d.ts.map +1 -0
- package/dist/src/reflection-metadata.js +24 -0
- package/dist/src/reflection-metadata.js.map +7 -0
- package/dist/src/reflection-ranking.d.ts +13 -0
- package/dist/src/reflection-ranking.d.ts.map +1 -0
- package/{src/reflection-ranking.ts → dist/src/reflection-ranking.js} +12 -21
- package/dist/src/reflection-ranking.js.map +7 -0
- package/dist/src/reflection-retry.d.ts +30 -0
- package/dist/src/reflection-retry.d.ts.map +1 -0
- package/{src/reflection-retry.ts → dist/src/reflection-retry.js} +24 -64
- package/dist/src/reflection-retry.js.map +7 -0
- package/dist/src/reflection-slices.d.ts +42 -0
- package/dist/src/reflection-slices.d.ts.map +1 -0
- package/{src/reflection-slices.ts → dist/src/reflection-slices.js} +60 -136
- package/dist/src/reflection-slices.js.map +7 -0
- package/dist/src/reflection-store.d.ts +85 -0
- package/dist/src/reflection-store.d.ts.map +1 -0
- package/dist/src/reflection-store.js +407 -0
- package/dist/src/reflection-store.js.map +7 -0
- package/dist/src/resonance-state.d.ts +19 -0
- package/dist/src/resonance-state.d.ts.map +1 -0
- package/{src/resonance-state.ts → dist/src/resonance-state.js} +13 -42
- package/dist/src/resonance-state.js.map +7 -0
- package/dist/src/retriever.d.ts +228 -0
- package/dist/src/retriever.d.ts.map +1 -0
- package/dist/src/retriever.js +1006 -0
- package/dist/src/retriever.js.map +7 -0
- package/dist/src/scopes.d.ts +58 -0
- package/dist/src/scopes.d.ts.map +1 -0
- package/dist/src/scopes.js +252 -0
- package/dist/src/scopes.js.map +7 -0
- package/dist/src/self-improvement-files.d.ts +20 -0
- package/dist/src/self-improvement-files.d.ts.map +1 -0
- package/{src/self-improvement-files.ts → dist/src/self-improvement-files.js} +24 -49
- package/dist/src/self-improvement-files.js.map +7 -0
- package/dist/src/semantic-gate.d.ts +24 -0
- package/dist/src/semantic-gate.d.ts.map +1 -0
- package/dist/src/semantic-gate.js +86 -0
- package/dist/src/semantic-gate.js.map +7 -0
- package/dist/src/session-recovery.d.ts +9 -0
- package/dist/src/session-recovery.d.ts.map +1 -0
- package/{src/session-recovery.ts → dist/src/session-recovery.js} +40 -57
- package/dist/src/session-recovery.js.map +7 -0
- package/dist/src/smart-extractor.d.ts +107 -0
- package/dist/src/smart-extractor.d.ts.map +1 -0
- package/{src/smart-extractor.ts → dist/src/smart-extractor.js} +130 -383
- package/dist/src/smart-extractor.js.map +7 -0
- package/dist/src/smart-metadata.d.ts +103 -0
- package/dist/src/smart-metadata.d.ts.map +1 -0
- package/dist/src/smart-metadata.js +361 -0
- package/dist/src/smart-metadata.js.map +7 -0
- package/dist/src/storage-adapter.d.ts +102 -0
- package/dist/src/storage-adapter.d.ts.map +1 -0
- package/dist/src/storage-adapter.js +22 -0
- package/dist/src/storage-adapter.js.map +7 -0
- package/dist/src/store.d.ts +108 -0
- package/dist/src/store.d.ts.map +1 -0
- package/dist/src/store.js +939 -0
- package/dist/src/store.js.map +7 -0
- package/dist/src/tier-manager.d.ts +57 -0
- package/dist/src/tier-manager.d.ts.map +1 -0
- package/dist/src/tier-manager.js +80 -0
- package/dist/src/tier-manager.js.map +7 -0
- package/dist/src/tools.d.ts +43 -0
- package/dist/src/tools.d.ts.map +1 -0
- package/dist/src/tools.js +1075 -0
- package/dist/src/tools.js.map +7 -0
- package/dist/src/wal-recovery.d.ts +30 -0
- package/dist/src/wal-recovery.d.ts.map +1 -0
- package/{src/wal-recovery.ts → dist/src/wal-recovery.js} +26 -79
- package/dist/src/wal-recovery.js.map +7 -0
- package/package.json +21 -2
- package/openclaw.plugin.json +0 -815
- package/src/access-tracker.ts +0 -341
- package/src/adapters/README.md +0 -78
- package/src/adapters/qdrant.ts +0 -191
- package/src/adaptive-retrieval.ts +0 -90
- package/src/audit-log.ts +0 -238
- package/src/chunker.ts +0 -254
- package/src/config.ts +0 -271
- package/src/decay-engine.ts +0 -238
- package/src/extraction-prompts.ts +0 -339
- package/src/memory-categories.ts +0 -71
- package/src/memory-upgrader.ts +0 -388
- package/src/mnemo.ts +0 -142
- package/src/noise-filter.ts +0 -97
- package/src/noise-prototypes.ts +0 -164
- package/src/observability.ts +0 -81
- package/src/query-tracker.ts +0 -57
- package/src/reflection-event-store.ts +0 -98
- package/src/reflection-item-store.ts +0 -112
- package/src/reflection-mapped-metadata.ts +0 -84
- package/src/reflection-metadata.ts +0 -23
- package/src/reflection-store.ts +0 -602
- package/src/retriever.ts +0 -1510
- package/src/scopes.ts +0 -375
- package/src/semantic-gate.ts +0 -121
- package/src/smart-metadata.ts +0 -561
- package/src/storage-adapter.ts +0 -153
- package/src/store.ts +0 -1330
- package/src/tier-manager.ts +0 -189
- package/src/tools.ts +0 -1292
- package/test/core.test.mjs +0 -301
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hybrid Retrieval System
|
|
3
|
+
* Combines vector search + BM25 full-text search with RRF fusion
|
|
4
|
+
*/
|
|
5
|
+
import type { MemoryStore, MemorySearchResult } from "./store.js";
|
|
6
|
+
import type { Embedder } from "./embedder.js";
|
|
7
|
+
import type { DecayEngine } from "./decay-engine.js";
|
|
8
|
+
import type { TierManager } from "./tier-manager.js";
|
|
9
|
+
type AccessTracker = {
|
|
10
|
+
bumpAccess: (id: string) => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
export interface RetrievalConfig {
|
|
13
|
+
mode: "hybrid" | "vector";
|
|
14
|
+
vectorWeight: number;
|
|
15
|
+
bm25Weight: number;
|
|
16
|
+
minScore: number;
|
|
17
|
+
rerank: "cross-encoder" | "lightweight" | "none";
|
|
18
|
+
candidatePoolSize: number;
|
|
19
|
+
/** Recency boost half-life in days (default: 14). Set 0 to disable. */
|
|
20
|
+
recencyHalfLifeDays: number;
|
|
21
|
+
/** Max recency boost factor (default: 0.10) */
|
|
22
|
+
recencyWeight: number;
|
|
23
|
+
/** Filter noise from results (default: true) */
|
|
24
|
+
filterNoise: boolean;
|
|
25
|
+
/** Reranker API key (enables cross-encoder reranking) */
|
|
26
|
+
rerankApiKey?: string;
|
|
27
|
+
/** Reranker model (default: jina-reranker-v3) */
|
|
28
|
+
rerankModel?: string;
|
|
29
|
+
/** Reranker API endpoint (default: https://api.jina.ai/v1/rerank). */
|
|
30
|
+
rerankEndpoint?: string;
|
|
31
|
+
/** Reranker provider format. Determines request/response shape and auth header.
|
|
32
|
+
* - "jina" (default): Authorization: Bearer, string[] documents, results[].relevance_score
|
|
33
|
+
* - "siliconflow": same format as jina (alias, for clarity)
|
|
34
|
+
* - "voyage": Authorization: Bearer, string[] documents, data[].relevance_score
|
|
35
|
+
* - "pinecone": Api-Key header, {text}[] documents, data[].score */
|
|
36
|
+
rerankProvider?: "jina" | "siliconflow" | "voyage" | "pinecone" | "ollama";
|
|
37
|
+
/**
|
|
38
|
+
* Length normalization: penalize long entries that dominate via sheer keyword
|
|
39
|
+
* density. Formula: score *= 1 / (1 + log2(charLen / anchor)).
|
|
40
|
+
* anchor = reference length (default: 500 chars). Entries shorter than anchor
|
|
41
|
+
* get a slight boost; longer entries get penalized progressively.
|
|
42
|
+
* Set 0 to disable. (default: 300)
|
|
43
|
+
*/
|
|
44
|
+
lengthNormAnchor: number;
|
|
45
|
+
/**
|
|
46
|
+
* Hard cutoff after rerank: discard results below this score.
|
|
47
|
+
* Applied after all scoring stages (rerank, recency, importance, length norm).
|
|
48
|
+
* Higher = fewer but more relevant results. (default: 0.35)
|
|
49
|
+
*/
|
|
50
|
+
hardMinScore: number;
|
|
51
|
+
/**
|
|
52
|
+
* Time decay half-life in days. Entries older than this lose score.
|
|
53
|
+
* Different from recencyBoost (additive bonus for new entries):
|
|
54
|
+
* this is a multiplicative penalty for old entries.
|
|
55
|
+
* Formula: score *= 0.5 + 0.5 * exp(-ageDays / halfLife)
|
|
56
|
+
* At halfLife days: ~0.68x. At 2*halfLife: ~0.59x. At 4*halfLife: ~0.52x.
|
|
57
|
+
* Set 0 to disable. (default: 60)
|
|
58
|
+
*/
|
|
59
|
+
timeDecayHalfLifeDays: number;
|
|
60
|
+
/** Access reinforcement factor for time decay half-life extension.
|
|
61
|
+
* Higher = stronger reinforcement. 0 to disable. (default: 0.5) */
|
|
62
|
+
reinforcementFactor: number;
|
|
63
|
+
/** Maximum half-life multiplier from access reinforcement.
|
|
64
|
+
* Prevents frequently accessed memories from becoming immortal. (default: 3) */
|
|
65
|
+
maxHalfLifeMultiplier: number;
|
|
66
|
+
/** Enable multi-hop query routing: detected multi-hop queries skip Graphiti
|
|
67
|
+
* spread and rely on LanceDB secondary retrieval instead. (default: true) */
|
|
68
|
+
multiHopRouting: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface RetrievalContext {
|
|
71
|
+
query: string;
|
|
72
|
+
limit: number;
|
|
73
|
+
scopeFilter?: string[];
|
|
74
|
+
category?: string;
|
|
75
|
+
/** Retrieval source: "manual" for user-triggered, "auto-recall" for system-initiated, "cli" for CLI commands. */
|
|
76
|
+
source?: "manual" | "auto-recall" | "cli";
|
|
77
|
+
}
|
|
78
|
+
export interface RetrievalResult extends MemorySearchResult {
|
|
79
|
+
sources: {
|
|
80
|
+
vector?: {
|
|
81
|
+
score: number;
|
|
82
|
+
rank: number;
|
|
83
|
+
};
|
|
84
|
+
bm25?: {
|
|
85
|
+
score: number;
|
|
86
|
+
rank: number;
|
|
87
|
+
};
|
|
88
|
+
graphiti?: {
|
|
89
|
+
score: number;
|
|
90
|
+
rank: number;
|
|
91
|
+
};
|
|
92
|
+
fused?: {
|
|
93
|
+
score: number;
|
|
94
|
+
};
|
|
95
|
+
reranked?: {
|
|
96
|
+
score: number;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export declare const DEFAULT_RETRIEVAL_CONFIG: RetrievalConfig;
|
|
101
|
+
export declare class MemoryRetriever {
|
|
102
|
+
private store;
|
|
103
|
+
private embedder;
|
|
104
|
+
private config;
|
|
105
|
+
private decayEngine;
|
|
106
|
+
private accessTracker;
|
|
107
|
+
private tierManager;
|
|
108
|
+
constructor(store: MemoryStore, embedder: Embedder, config?: RetrievalConfig, decayEngine?: DecayEngine | null);
|
|
109
|
+
setAccessTracker(tracker: AccessTracker): void;
|
|
110
|
+
/**
|
|
111
|
+
* Resonance check: fast vector probe to see if the query "resonates"
|
|
112
|
+
* with any high-salience memories. Returns true if at least one memory
|
|
113
|
+
* has cosine similarity above threshold. This mimics human associative
|
|
114
|
+
* memory — most inputs don't trigger recall, only resonant ones do.
|
|
115
|
+
*/
|
|
116
|
+
private resonanceCheck;
|
|
117
|
+
/**
|
|
118
|
+
* Strip metadata blocks from auto-recall queries.
|
|
119
|
+
* OpenClaw core may pass the full message including Conversation info,
|
|
120
|
+
* Replied message, and Sender metadata JSON blocks. We only want the
|
|
121
|
+
* actual user text for semantic search.
|
|
122
|
+
*/
|
|
123
|
+
private cleanAutoRecallQuery;
|
|
124
|
+
/**
|
|
125
|
+
* Expand date expressions in query to multiple formats for BM25 matching.
|
|
126
|
+
* "3月17日" → "3月17日 3/17 03-17 2026-03-17"
|
|
127
|
+
* "2026年3月17日" → "2026年3月17日 3/17 2026-03-17 03-17"
|
|
128
|
+
* "昨天/前天/上周" → resolved to absolute dates
|
|
129
|
+
*/
|
|
130
|
+
private expandDateFormats;
|
|
131
|
+
retrieve(context: RetrievalContext): Promise<RetrievalResult[]>;
|
|
132
|
+
private vectorOnlyRetrieval;
|
|
133
|
+
private hybridRetrieval;
|
|
134
|
+
private runVectorSearch;
|
|
135
|
+
private runBM25Search;
|
|
136
|
+
private fuseResults;
|
|
137
|
+
/**
|
|
138
|
+
* Rerank results using cross-encoder API (Jina, Pinecone, or compatible).
|
|
139
|
+
* Falls back to cosine similarity if API is unavailable or fails.
|
|
140
|
+
*/
|
|
141
|
+
private rerankResults;
|
|
142
|
+
private getRerankPreservationFloor;
|
|
143
|
+
/**
|
|
144
|
+
* Apply recency boost: newer memories get a small score bonus.
|
|
145
|
+
* This ensures corrections/updates naturally outrank older entries
|
|
146
|
+
* when semantic similarity is close.
|
|
147
|
+
* Formula: boost = exp(-ageDays / halfLife) * weight
|
|
148
|
+
*/
|
|
149
|
+
private applyRecencyBoost;
|
|
150
|
+
/**
|
|
151
|
+
* Apply importance weighting: memories with higher importance get a score boost.
|
|
152
|
+
* This ensures critical memories (importance=1.0) outrank casual ones (importance=0.5)
|
|
153
|
+
* when semantic similarity is close.
|
|
154
|
+
* Formula: score *= (baseWeight + (1 - baseWeight) * importance)
|
|
155
|
+
* With baseWeight=0.7: importance=1.0 → ×1.0, importance=0.5 → ×0.85, importance=0.0 → ×0.7
|
|
156
|
+
*/
|
|
157
|
+
private applyImportanceWeight;
|
|
158
|
+
private applyDecayBoost;
|
|
159
|
+
/**
|
|
160
|
+
* Detect multi-hop queries that involve multiple entities or relationships.
|
|
161
|
+
* Multi-hop queries benefit from LanceDB secondary retrieval rather than
|
|
162
|
+
* Graphiti spread (which follows single-entity neighborhoods).
|
|
163
|
+
*/
|
|
164
|
+
private isMultiHopQuery;
|
|
165
|
+
/**
|
|
166
|
+
* via sheer keyword density and broad semantic coverage.
|
|
167
|
+
* Short, focused entries (< anchor) get a slight boost.
|
|
168
|
+
* Long, sprawling entries (> anchor) get penalized.
|
|
169
|
+
* Formula: score *= 1 / (1 + log2(charLen / anchor))
|
|
170
|
+
*/
|
|
171
|
+
private applyLengthNormalization;
|
|
172
|
+
/**
|
|
173
|
+
* Time decay: multiplicative penalty for old entries.
|
|
174
|
+
* Unlike recencyBoost (additive bonus for new entries), this actively
|
|
175
|
+
* penalizes stale information so recent knowledge wins ties.
|
|
176
|
+
* Formula: score *= 0.5 + 0.5 * exp(-ageDays / halfLife)
|
|
177
|
+
* At 0 days: 1.0x (no penalty)
|
|
178
|
+
* At halfLife: ~0.68x
|
|
179
|
+
* At 2*halfLife: ~0.59x
|
|
180
|
+
* Floor at 0.5x (never penalize more than half)
|
|
181
|
+
*/
|
|
182
|
+
private applyTimeDecay;
|
|
183
|
+
/**
|
|
184
|
+
* Apply lifecycle-aware score adjustment (decay + tier floors).
|
|
185
|
+
*
|
|
186
|
+
* This is intentionally lightweight:
|
|
187
|
+
* - reads tier/access metadata (if any)
|
|
188
|
+
* - multiplies scores by max(tierFloor, decayComposite)
|
|
189
|
+
*/
|
|
190
|
+
private applyLifecycleBoost;
|
|
191
|
+
/**
|
|
192
|
+
* Record access stats (access_count, last_accessed_at) and apply tier
|
|
193
|
+
* promotion/demotion for a small number of top results.
|
|
194
|
+
*
|
|
195
|
+
* Note: this writes back to LanceDB via delete+readd; keep it bounded.
|
|
196
|
+
*/
|
|
197
|
+
private recordAccessAndMaybeTransition;
|
|
198
|
+
/**
|
|
199
|
+
* MMR-inspired diversity filter: greedily select results that are both
|
|
200
|
+
* relevant (high score) and diverse (low similarity to already-selected).
|
|
201
|
+
*
|
|
202
|
+
* Uses cosine similarity between memory vectors. If two memories have
|
|
203
|
+
* cosine similarity > threshold (default 0.92), the lower-scored one
|
|
204
|
+
* is demoted to the end rather than removed entirely.
|
|
205
|
+
*
|
|
206
|
+
* This prevents top-k from being filled with near-identical entries
|
|
207
|
+
* (e.g. 3 similar "SVG style" memories) while keeping them available
|
|
208
|
+
* if the pool is small.
|
|
209
|
+
*/
|
|
210
|
+
private applyMMRDiversity;
|
|
211
|
+
updateConfig(newConfig: Partial<RetrievalConfig>): void;
|
|
212
|
+
getConfig(): RetrievalConfig;
|
|
213
|
+
test(query?: string): Promise<{
|
|
214
|
+
success: boolean;
|
|
215
|
+
mode: string;
|
|
216
|
+
hasFtsSupport: boolean;
|
|
217
|
+
error?: string;
|
|
218
|
+
}>;
|
|
219
|
+
}
|
|
220
|
+
export interface RetrieverLifecycleOptions {
|
|
221
|
+
decayEngine?: DecayEngine;
|
|
222
|
+
tierManager?: TierManager;
|
|
223
|
+
}
|
|
224
|
+
export declare function createRetriever(store: MemoryStore, embedder: Embedder, config?: Partial<RetrievalConfig>, options?: {
|
|
225
|
+
decayEngine?: DecayEngine | null;
|
|
226
|
+
}): MemoryRetriever;
|
|
227
|
+
export {};
|
|
228
|
+
//# sourceMappingURL=retriever.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retriever.d.ts","sourceRoot":"","sources":["../../src/retriever.ts"],"names":[],"mappings":"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"}
|