@nahisaho/musubix-neural-search 2.1.0 → 2.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.
Files changed (69) hide show
  1. package/dist/EnhancedNeuralSearchManager.d.ts +215 -0
  2. package/dist/EnhancedNeuralSearchManager.d.ts.map +1 -0
  3. package/dist/EnhancedNeuralSearchManager.js +307 -0
  4. package/dist/EnhancedNeuralSearchManager.js.map +1 -0
  5. package/dist/cache/EmbeddingCache.d.ts +93 -0
  6. package/dist/cache/EmbeddingCache.d.ts.map +1 -0
  7. package/dist/cache/EmbeddingCache.js +208 -0
  8. package/dist/cache/EmbeddingCache.js.map +1 -0
  9. package/dist/cache/index.d.ts +7 -0
  10. package/dist/cache/index.d.ts.map +1 -0
  11. package/dist/cache/index.js +6 -0
  12. package/dist/cache/index.js.map +1 -0
  13. package/dist/fusion/ModalFusion.d.ts +111 -0
  14. package/dist/fusion/ModalFusion.d.ts.map +1 -0
  15. package/dist/fusion/ModalFusion.js +127 -0
  16. package/dist/fusion/ModalFusion.js.map +1 -0
  17. package/dist/fusion/index.d.ts +6 -0
  18. package/dist/fusion/index.d.ts.map +1 -0
  19. package/dist/fusion/index.js +6 -0
  20. package/dist/fusion/index.js.map +1 -0
  21. package/dist/index.d.ts +14 -4
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +12 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/learning/OnlineModelUpdater.d.ts +195 -0
  26. package/dist/learning/OnlineModelUpdater.d.ts.map +1 -0
  27. package/dist/learning/OnlineModelUpdater.js +231 -0
  28. package/dist/learning/OnlineModelUpdater.js.map +1 -0
  29. package/dist/learning/__tests__/OnlineModelUpdater.test.d.ts +9 -0
  30. package/dist/learning/__tests__/OnlineModelUpdater.test.d.ts.map +1 -0
  31. package/dist/learning/__tests__/OnlineModelUpdater.test.js +174 -0
  32. package/dist/learning/__tests__/OnlineModelUpdater.test.js.map +1 -0
  33. package/dist/learning/index.d.ts +2 -0
  34. package/dist/learning/index.d.ts.map +1 -1
  35. package/dist/learning/index.js +2 -0
  36. package/dist/learning/index.js.map +1 -1
  37. package/dist/logging/TrajectoryLogger.d.ts +115 -0
  38. package/dist/logging/TrajectoryLogger.d.ts.map +1 -0
  39. package/dist/logging/TrajectoryLogger.js +128 -0
  40. package/dist/logging/TrajectoryLogger.js.map +1 -0
  41. package/dist/logging/index.d.ts +9 -0
  42. package/dist/logging/index.d.ts.map +1 -0
  43. package/dist/logging/index.js +8 -0
  44. package/dist/logging/index.js.map +1 -0
  45. package/dist/pruning/LearnedPruningPolicy.d.ts +129 -0
  46. package/dist/pruning/LearnedPruningPolicy.d.ts.map +1 -0
  47. package/dist/pruning/LearnedPruningPolicy.js +332 -0
  48. package/dist/pruning/LearnedPruningPolicy.js.map +1 -0
  49. package/dist/pruning/index.d.ts +6 -0
  50. package/dist/pruning/index.d.ts.map +1 -0
  51. package/dist/pruning/index.js +6 -0
  52. package/dist/pruning/index.js.map +1 -0
  53. package/dist/scorer/ContextAwareScorer.d.ts +126 -0
  54. package/dist/scorer/ContextAwareScorer.d.ts.map +1 -0
  55. package/dist/scorer/ContextAwareScorer.js +281 -0
  56. package/dist/scorer/ContextAwareScorer.js.map +1 -0
  57. package/dist/scorer/index.d.ts +2 -0
  58. package/dist/scorer/index.d.ts.map +1 -1
  59. package/dist/scorer/index.js +2 -0
  60. package/dist/scorer/index.js.map +1 -1
  61. package/dist/search/AdaptiveBeamSearch.d.ts +98 -0
  62. package/dist/search/AdaptiveBeamSearch.d.ts.map +1 -0
  63. package/dist/search/AdaptiveBeamSearch.js +240 -0
  64. package/dist/search/AdaptiveBeamSearch.js.map +1 -0
  65. package/dist/search/index.d.ts +2 -0
  66. package/dist/search/index.d.ts.map +1 -1
  67. package/dist/search/index.js +2 -0
  68. package/dist/search/index.js.map +1 -1
  69. package/package.json +1 -1
@@ -0,0 +1,215 @@
1
+ /**
2
+ * EnhancedNeuralSearchManager - v2.2.0 Integrated Neural Search
3
+ * @module @nahisaho/musubix-neural-search
4
+ * @see TSK-NS-108
5
+ * @see DES-NS-108
6
+ *
7
+ * v2.2.0コンポーネントを統合したニューラル検索マネージャー
8
+ * - LearnedPruningPolicy: 学習ベースプルーニング
9
+ * - AdaptiveBeamSearch: 適応的ビーム検索
10
+ * - OnlineLearner: オンライン学習
11
+ */
12
+ import { type LearnedPruningPolicy, type PolicyStatistics } from './pruning/index.js';
13
+ import { AdaptiveBeamSearch, type AdaptiveStatistics } from './search/index.js';
14
+ /**
15
+ * Configuration for EnhancedNeuralSearchManager
16
+ */
17
+ export interface EnhancedNeuralSearchManagerConfig {
18
+ /** Enable online learning (default: false) */
19
+ enableLearning?: boolean;
20
+ /** Enable adaptive beam search (default: true) */
21
+ enableAdaptiveBeam?: boolean;
22
+ /** Maximum cache size */
23
+ maxCacheSize?: number;
24
+ /** Initial beam width */
25
+ initialBeamWidth?: number;
26
+ /** Learning rate for online updates */
27
+ learningRate?: number;
28
+ }
29
+ /**
30
+ * Search candidate
31
+ */
32
+ export interface SearchCandidate {
33
+ /** Unique identifier */
34
+ id: string;
35
+ /** Initial score */
36
+ score: number;
37
+ /** Feature vector */
38
+ features: number[];
39
+ /** Optional code snippet */
40
+ code?: string;
41
+ }
42
+ /**
43
+ * Search request
44
+ */
45
+ export interface SearchRequest {
46
+ /** Query string */
47
+ query: string;
48
+ /** Candidate items */
49
+ candidates: SearchCandidate[];
50
+ /** Maximum results to return */
51
+ maxResults: number;
52
+ }
53
+ /**
54
+ * Search result
55
+ */
56
+ export interface SearchResult {
57
+ /** Returned results */
58
+ results: SearchCandidate[];
59
+ /** Total search time in ms */
60
+ searchTimeMs: number;
61
+ /** Number of candidates pruned */
62
+ prunedCount: number;
63
+ }
64
+ /**
65
+ * Beam search request
66
+ */
67
+ export interface BeamSearchRequest<T> {
68
+ /** Initial state */
69
+ initialState: T;
70
+ /** Expand function */
71
+ expand: (state: T) => T[];
72
+ /** Score function */
73
+ score: (state: T) => number;
74
+ /** Goal test function */
75
+ isGoal: (state: T) => boolean;
76
+ /** Beam width */
77
+ beamWidth: number;
78
+ }
79
+ /**
80
+ * Beam search result
81
+ */
82
+ export interface BeamSearchResult<T> {
83
+ /** Found solutions */
84
+ solutions: T[];
85
+ /** Search depth reached */
86
+ depth: number;
87
+ /** Total states explored */
88
+ statesExplored: number;
89
+ }
90
+ /**
91
+ * Combined search request
92
+ */
93
+ export interface CombinedSearchRequest {
94
+ /** Query string */
95
+ query: string;
96
+ /** Candidate items */
97
+ candidates: SearchCandidate[];
98
+ /** Use neural scoring */
99
+ useNeural: boolean;
100
+ /** Use learned pruning */
101
+ useLearned: boolean;
102
+ /** Maximum results */
103
+ maxResults: number;
104
+ }
105
+ /**
106
+ * Search feedback
107
+ */
108
+ export interface SearchFeedback {
109
+ /** Query identifier */
110
+ queryId: string;
111
+ /** Selected result ID */
112
+ selectedId: string;
113
+ /** Outcome of the selection */
114
+ outcome: 'success' | 'failure' | 'partial';
115
+ }
116
+ /**
117
+ * Learning statistics
118
+ */
119
+ export interface LearningStats {
120
+ /** Total feedback received */
121
+ totalFeedback: number;
122
+ /** Model update count */
123
+ modelUpdates: number;
124
+ /** Positive feedback rate */
125
+ positiveRate: number;
126
+ }
127
+ /**
128
+ * Search history entry
129
+ */
130
+ export interface SearchHistoryEntry {
131
+ /** Query string */
132
+ query: string;
133
+ /** Number of results */
134
+ resultCount: number;
135
+ /** Search time in ms */
136
+ searchTimeMs: number;
137
+ /** Timestamp */
138
+ timestamp: number;
139
+ }
140
+ /**
141
+ * Enhanced statistics
142
+ */
143
+ export interface EnhancedSearchStats {
144
+ /** Search statistics */
145
+ search: {
146
+ totalSearches: number;
147
+ averageTimeMs: number;
148
+ };
149
+ /** Pruning statistics */
150
+ pruning: PolicyStatistics;
151
+ /** Learning statistics */
152
+ learning: LearningStats;
153
+ /** Beam search statistics */
154
+ beam: AdaptiveStatistics;
155
+ }
156
+ /**
157
+ * EnhancedNeuralSearchManager interface
158
+ */
159
+ export interface EnhancedNeuralSearchManager {
160
+ getPruningPolicy(): LearnedPruningPolicy;
161
+ getAdaptiveBeamSearch(): AdaptiveBeamSearch;
162
+ search(request: SearchRequest): Promise<SearchResult>;
163
+ beamSearch<T>(request: BeamSearchRequest<T>): Promise<BeamSearchResult<T>>;
164
+ combinedSearch(request: CombinedSearchRequest): Promise<SearchResult>;
165
+ enableLearning(enabled: boolean): void;
166
+ isLearningEnabled(): boolean;
167
+ provideFeedback(feedback: SearchFeedback): Promise<void>;
168
+ updateModel(): Promise<void>;
169
+ getLearningStats(): LearningStats;
170
+ getAdaptiveStats(): AdaptiveStatistics;
171
+ getEnhancedStats(): EnhancedSearchStats;
172
+ getSearchHistory(limit: number): SearchHistoryEntry[];
173
+ toJSON(): string;
174
+ fromJSON(json: string): void;
175
+ }
176
+ /**
177
+ * Default EnhancedNeuralSearchManager implementation
178
+ */
179
+ export declare class DefaultEnhancedNeuralSearchManager implements EnhancedNeuralSearchManager {
180
+ private config;
181
+ private pruningPolicy;
182
+ private adaptiveBeamSearch;
183
+ private learningEnabled;
184
+ private searchHistory;
185
+ private feedbackHistory;
186
+ private searchCount;
187
+ private totalSearchTimeMs;
188
+ private modelUpdateCount;
189
+ constructor(config?: EnhancedNeuralSearchManagerConfig);
190
+ getPruningPolicy(): LearnedPruningPolicy;
191
+ getAdaptiveBeamSearch(): AdaptiveBeamSearch;
192
+ search(request: SearchRequest): Promise<SearchResult>;
193
+ beamSearch<T>(request: BeamSearchRequest<T>): Promise<BeamSearchResult<T>>;
194
+ combinedSearch(request: CombinedSearchRequest): Promise<SearchResult>;
195
+ enableLearning(enabled: boolean): void;
196
+ isLearningEnabled(): boolean;
197
+ provideFeedback(feedback: SearchFeedback): Promise<void>;
198
+ updateModel(): Promise<void>;
199
+ getLearningStats(): LearningStats;
200
+ getAdaptiveStats(): AdaptiveStatistics;
201
+ getEnhancedStats(): EnhancedSearchStats;
202
+ getSearchHistory(limit: number): SearchHistoryEntry[];
203
+ toJSON(): string;
204
+ fromJSON(json: string): void;
205
+ private applyPruning;
206
+ private applyNeuralScoring;
207
+ private recordSearch;
208
+ }
209
+ /**
210
+ * Create an EnhancedNeuralSearchManager instance
211
+ * @param config - Optional configuration
212
+ * @returns EnhancedNeuralSearchManager instance
213
+ */
214
+ export declare function createEnhancedNeuralSearchManager(config?: EnhancedNeuralSearchManagerConfig): EnhancedNeuralSearchManager;
215
+ //# sourceMappingURL=EnhancedNeuralSearchManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnhancedNeuralSearchManager.d.ts","sourceRoot":"","sources":["../src/EnhancedNeuralSearchManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,307 @@
1
+ /**
2
+ * EnhancedNeuralSearchManager - v2.2.0 Integrated Neural Search
3
+ * @module @nahisaho/musubix-neural-search
4
+ * @see TSK-NS-108
5
+ * @see DES-NS-108
6
+ *
7
+ * v2.2.0コンポーネントを統合したニューラル検索マネージャー
8
+ * - LearnedPruningPolicy: 学習ベースプルーニング
9
+ * - AdaptiveBeamSearch: 適応的ビーム検索
10
+ * - OnlineLearner: オンライン学習
11
+ */
12
+ import { createLearnedPruningPolicy, } from './pruning/index.js';
13
+ import { AdaptiveBeamSearch, } from './search/index.js';
14
+ // =============================================================================
15
+ // Default Implementation
16
+ // =============================================================================
17
+ /**
18
+ * Default EnhancedNeuralSearchManager implementation
19
+ */
20
+ export class DefaultEnhancedNeuralSearchManager {
21
+ config;
22
+ pruningPolicy;
23
+ adaptiveBeamSearch;
24
+ // OnlineLearner for future use
25
+ // private onlineLearner: OnlineLearner;
26
+ learningEnabled = false;
27
+ searchHistory = [];
28
+ feedbackHistory = [];
29
+ searchCount = 0;
30
+ totalSearchTimeMs = 0;
31
+ modelUpdateCount = 0;
32
+ constructor(config = {}) {
33
+ this.config = {
34
+ enableLearning: config.enableLearning ?? false,
35
+ enableAdaptiveBeam: config.enableAdaptiveBeam ?? true,
36
+ maxCacheSize: config.maxCacheSize ?? 1000,
37
+ initialBeamWidth: config.initialBeamWidth ?? 10,
38
+ learningRate: config.learningRate ?? 0.01,
39
+ };
40
+ this.learningEnabled = this.config.enableLearning;
41
+ // Initialize components
42
+ this.pruningPolicy = createLearnedPruningPolicy({
43
+ baseThreshold: 0.5,
44
+ learningRate: this.config.learningRate,
45
+ });
46
+ const beamConfig = {
47
+ initialBeamWidth: this.config.initialBeamWidth,
48
+ maxBeamWidth: 100,
49
+ stagnationThreshold: 10,
50
+ beamWidthIncrease: 0.5,
51
+ improvementThreshold: 0.001,
52
+ };
53
+ this.adaptiveBeamSearch = new AdaptiveBeamSearch(beamConfig);
54
+ }
55
+ // =========================================================================
56
+ // Component Access
57
+ // =========================================================================
58
+ getPruningPolicy() {
59
+ return this.pruningPolicy;
60
+ }
61
+ getAdaptiveBeamSearch() {
62
+ return this.adaptiveBeamSearch;
63
+ }
64
+ // =========================================================================
65
+ // Search Methods
66
+ // =========================================================================
67
+ async search(request) {
68
+ const startTime = Date.now();
69
+ // Apply learned pruning
70
+ const prunedCandidates = this.applyPruning(request.candidates);
71
+ const prunedCount = request.candidates.length - prunedCandidates.length;
72
+ // Sort by score and take top results
73
+ const sortedCandidates = [...prunedCandidates].sort((a, b) => b.score - a.score);
74
+ const results = sortedCandidates.slice(0, request.maxResults);
75
+ const searchTimeMs = Date.now() - startTime;
76
+ this.recordSearch(request.query, results.length, searchTimeMs);
77
+ return {
78
+ results,
79
+ searchTimeMs,
80
+ prunedCount,
81
+ };
82
+ }
83
+ async beamSearch(request) {
84
+ const solutions = [];
85
+ let currentBeam = [request.initialState];
86
+ let depth = 0;
87
+ let statesExplored = 0;
88
+ const beamWidth = request.beamWidth;
89
+ while (currentBeam.length > 0 && depth < 100) {
90
+ const nextBeam = [];
91
+ for (const state of currentBeam) {
92
+ statesExplored++;
93
+ if (request.isGoal(state)) {
94
+ solutions.push(state);
95
+ continue;
96
+ }
97
+ const expanded = request.expand(state);
98
+ for (const nextState of expanded) {
99
+ const score = request.score(nextState);
100
+ nextBeam.push({ state: nextState, score });
101
+ }
102
+ }
103
+ // Sort and take top beam
104
+ nextBeam.sort((a, b) => b.score - a.score);
105
+ currentBeam = nextBeam.slice(0, beamWidth).map((item) => item.state);
106
+ depth++;
107
+ // Early termination if we have enough solutions
108
+ if (solutions.length >= beamWidth) {
109
+ break;
110
+ }
111
+ }
112
+ return {
113
+ solutions,
114
+ depth,
115
+ statesExplored,
116
+ };
117
+ }
118
+ async combinedSearch(request) {
119
+ const startTime = Date.now();
120
+ let candidates = [...request.candidates];
121
+ let prunedCount = 0;
122
+ // Apply learned pruning if enabled
123
+ if (request.useLearned) {
124
+ const pruned = this.applyPruning(candidates);
125
+ prunedCount = candidates.length - pruned.length;
126
+ candidates = pruned;
127
+ }
128
+ // Apply neural scoring if enabled
129
+ if (request.useNeural) {
130
+ candidates = this.applyNeuralScoring(candidates, request.query);
131
+ }
132
+ // Sort and take top results
133
+ const results = candidates
134
+ .sort((a, b) => b.score - a.score)
135
+ .slice(0, request.maxResults);
136
+ const searchTimeMs = Date.now() - startTime;
137
+ this.recordSearch(request.query, results.length, searchTimeMs);
138
+ return {
139
+ results,
140
+ searchTimeMs,
141
+ prunedCount,
142
+ };
143
+ }
144
+ // =========================================================================
145
+ // Learning Methods
146
+ // =========================================================================
147
+ enableLearning(enabled) {
148
+ this.learningEnabled = enabled;
149
+ }
150
+ isLearningEnabled() {
151
+ return this.learningEnabled;
152
+ }
153
+ async provideFeedback(feedback) {
154
+ if (!this.learningEnabled)
155
+ return;
156
+ this.feedbackHistory.push(feedback);
157
+ // Create proper PolicyUpdate for pruning policy
158
+ const dummyState = {
159
+ id: feedback.queryId,
160
+ code: feedback.selectedId,
161
+ depth: 0,
162
+ metadata: {},
163
+ };
164
+ const dummyContext = {
165
+ specification: feedback.queryId,
166
+ specEmbedding: new Float32Array(128),
167
+ constraints: [],
168
+ history: [],
169
+ };
170
+ const actualResult = feedback.outcome === 'partial' ? 'partial_success' : feedback.outcome;
171
+ const update = {
172
+ state: dummyState,
173
+ context: dummyContext,
174
+ outcome: feedback.outcome === 'success' ? 'correct' : 'incorrect',
175
+ actualResult,
176
+ };
177
+ this.pruningPolicy.updatePolicy(update);
178
+ }
179
+ async updateModel() {
180
+ if (!this.learningEnabled || this.feedbackHistory.length === 0)
181
+ return;
182
+ // Simple update simulation
183
+ // const _updateBatch = this.feedbackHistory.slice(0, 32);
184
+ // In production, would update model weights
185
+ this.modelUpdateCount++;
186
+ this.feedbackHistory = this.feedbackHistory.slice(32);
187
+ }
188
+ // =========================================================================
189
+ // Statistics
190
+ // =========================================================================
191
+ getLearningStats() {
192
+ const positiveCount = this.feedbackHistory.filter((f) => f.outcome === 'success').length;
193
+ const total = this.feedbackHistory.length;
194
+ return {
195
+ totalFeedback: total,
196
+ modelUpdates: this.modelUpdateCount,
197
+ positiveRate: total > 0 ? positiveCount / total : 0,
198
+ };
199
+ }
200
+ getAdaptiveStats() {
201
+ // Return custom adaptive stats since internal method returns SearchStatistics
202
+ return {
203
+ currentBeamWidth: this.config.initialBeamWidth,
204
+ beamWidthAdjustments: 0,
205
+ stagnationCount: 0,
206
+ bestScore: 0,
207
+ iterationsSinceImprovement: 0,
208
+ };
209
+ }
210
+ getEnhancedStats() {
211
+ return {
212
+ search: {
213
+ totalSearches: this.searchCount,
214
+ averageTimeMs: this.searchCount > 0 ? this.totalSearchTimeMs / this.searchCount : 0,
215
+ },
216
+ pruning: this.pruningPolicy.getStatistics(),
217
+ learning: this.getLearningStats(),
218
+ beam: this.getAdaptiveStats(),
219
+ };
220
+ }
221
+ getSearchHistory(limit) {
222
+ return this.searchHistory.slice(-limit);
223
+ }
224
+ // =========================================================================
225
+ // Serialization
226
+ // =========================================================================
227
+ toJSON() {
228
+ return JSON.stringify({
229
+ learningEnabled: this.learningEnabled,
230
+ searchCount: this.searchCount,
231
+ totalSearchTimeMs: this.totalSearchTimeMs,
232
+ modelUpdateCount: this.modelUpdateCount,
233
+ feedbackHistoryLength: this.feedbackHistory.length,
234
+ });
235
+ }
236
+ fromJSON(json) {
237
+ const data = JSON.parse(json);
238
+ if (data.learningEnabled !== undefined) {
239
+ this.learningEnabled = data.learningEnabled;
240
+ }
241
+ if (data.searchCount !== undefined) {
242
+ this.searchCount = data.searchCount;
243
+ }
244
+ if (data.totalSearchTimeMs !== undefined) {
245
+ this.totalSearchTimeMs = data.totalSearchTimeMs;
246
+ }
247
+ if (data.modelUpdateCount !== undefined) {
248
+ this.modelUpdateCount = data.modelUpdateCount;
249
+ }
250
+ }
251
+ // =========================================================================
252
+ // Private Helpers
253
+ // =========================================================================
254
+ applyPruning(candidates) {
255
+ // Use learned pruning policy to filter candidates
256
+ const context = {
257
+ specification: '',
258
+ specEmbedding: new Float32Array(128),
259
+ constraints: [],
260
+ history: [],
261
+ };
262
+ return candidates.filter((candidate) => {
263
+ const state = {
264
+ id: candidate.id,
265
+ code: candidate.code ?? '',
266
+ depth: 0,
267
+ metadata: { score: candidate.score },
268
+ };
269
+ const decision = this.pruningPolicy.shouldPrune(state, context);
270
+ return !decision.prune;
271
+ });
272
+ }
273
+ applyNeuralScoring(candidates, _query) {
274
+ // Simple neural scoring simulation
275
+ // In production, would use actual neural embeddings
276
+ return candidates.map((c) => ({
277
+ ...c,
278
+ score: c.score * (1 + Math.random() * 0.1), // Add small variation
279
+ }));
280
+ }
281
+ recordSearch(query, resultCount, searchTimeMs) {
282
+ this.searchCount++;
283
+ this.totalSearchTimeMs += searchTimeMs;
284
+ this.searchHistory.push({
285
+ query,
286
+ resultCount,
287
+ searchTimeMs,
288
+ timestamp: Date.now(),
289
+ });
290
+ // Limit history size
291
+ if (this.searchHistory.length > this.config.maxCacheSize) {
292
+ this.searchHistory = this.searchHistory.slice(-this.config.maxCacheSize);
293
+ }
294
+ }
295
+ }
296
+ // =============================================================================
297
+ // Factory Function
298
+ // =============================================================================
299
+ /**
300
+ * Create an EnhancedNeuralSearchManager instance
301
+ * @param config - Optional configuration
302
+ * @returns EnhancedNeuralSearchManager instance
303
+ */
304
+ export function createEnhancedNeuralSearchManager(config = {}) {
305
+ return new DefaultEnhancedNeuralSearchManager(config);
306
+ }
307
+ //# sourceMappingURL=EnhancedNeuralSearchManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnhancedNeuralSearchManager.js","sourceRoot":"","sources":["../src/EnhancedNeuralSearchManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * EmbeddingCache - LRU Cache for Embeddings
3
+ * @module @nahisaho/musubix-neural-search
4
+ * @see TSK-NS-105
5
+ * @see DES-NS-105
6
+ * @see REQ-NS-105
7
+ *
8
+ * LRUキャッシュ(最大10,000エントリ)
9
+ * - 80%以上のヒット率目標
10
+ * - TTLサポート
11
+ * - バッチ操作
12
+ */
13
+ import type { Embedding } from '../types.js';
14
+ /**
15
+ * Configuration for EmbeddingCache
16
+ */
17
+ export interface EmbeddingCacheConfig {
18
+ /** Maximum number of entries (default: 10000) */
19
+ maxSize?: number;
20
+ /** Time-to-live in milliseconds (default: 0 = no expiry) */
21
+ ttlMs?: number;
22
+ }
23
+ /**
24
+ * Cache statistics
25
+ */
26
+ export interface CacheStatistics {
27
+ /** Current cache size */
28
+ size: number;
29
+ /** Maximum cache size */
30
+ maxSize: number;
31
+ /** Number of cache hits */
32
+ hits: number;
33
+ /** Number of cache misses */
34
+ misses: number;
35
+ /** Hit rate (0-1) */
36
+ hitRate: number;
37
+ /** Number of evictions */
38
+ evictions: number;
39
+ }
40
+ /**
41
+ * EmbeddingCache interface
42
+ */
43
+ export interface EmbeddingCache {
44
+ get(key: string): Embedding | undefined;
45
+ set(key: string, value: Embedding): void;
46
+ has(key: string): boolean;
47
+ delete(key: string): boolean;
48
+ clear(): void;
49
+ size(): number;
50
+ getMany(keys: string[]): Map<string, Embedding>;
51
+ setMany(entries: Map<string, Embedding>): void;
52
+ getHitRate(): number;
53
+ getStatistics(): CacheStatistics;
54
+ resetStatistics(): void;
55
+ toJSON(): string;
56
+ fromJSON(json: string): void;
57
+ }
58
+ /**
59
+ * Default EmbeddingCache implementation using LRU eviction
60
+ */
61
+ export declare class DefaultEmbeddingCache implements EmbeddingCache {
62
+ private config;
63
+ private cache;
64
+ private accessOrder;
65
+ private hits;
66
+ private misses;
67
+ private evictions;
68
+ constructor(config?: EmbeddingCacheConfig);
69
+ get(key: string): Embedding | undefined;
70
+ set(key: string, value: Embedding): void;
71
+ has(key: string): boolean;
72
+ delete(key: string): boolean;
73
+ clear(): void;
74
+ size(): number;
75
+ getMany(keys: string[]): Map<string, Embedding>;
76
+ setMany(entries: Map<string, Embedding>): void;
77
+ getHitRate(): number;
78
+ getStatistics(): CacheStatistics;
79
+ resetStatistics(): void;
80
+ toJSON(): string;
81
+ fromJSON(json: string): void;
82
+ private isExpired;
83
+ private evictLRU;
84
+ private updateAccessOrder;
85
+ private removeFromAccessOrder;
86
+ }
87
+ /**
88
+ * Create an EmbeddingCache instance
89
+ * @param config - Optional configuration
90
+ * @returns EmbeddingCache instance
91
+ */
92
+ export declare function createEmbeddingCache(config?: EmbeddingCacheConfig): EmbeddingCache;
93
+ //# sourceMappingURL=EmbeddingCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingCache.d.ts","sourceRoot":"","sources":["../../src/cache/EmbeddingCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,MAAM,CAAC;IAGf,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;IAG/C,UAAU,IAAI,MAAM,CAAC;IACrB,aAAa,IAAI,eAAe,CAAC;IACjC,eAAe,IAAI,IAAI,CAAC;IAGxB,MAAM,IAAI,MAAM,CAAC;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAMD;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,WAAW,CAAgB;IAGnC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,SAAS,CAAK;gBAEV,MAAM,GAAE,oBAAyB;IAW7C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAuBvC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAuBxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAYzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ5B,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,MAAM;IAQd,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAa/C,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAU9C,UAAU,IAAI,MAAM;IAMpB,aAAa,IAAI,eAAe;IAWhC,eAAe,IAAI,IAAI;IAUvB,MAAM,IAAI,MAAM;IAShB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAqB5B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,qBAAqB;CAM9B;AAMD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,GAAE,oBAAyB,GAChC,cAAc,CAEhB"}