memento-mcp-server 1.12.0 → 1.13.0-b

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 (119) hide show
  1. package/dist/algorithms/forgetting-algorithm.d.ts +21 -13
  2. package/dist/algorithms/forgetting-algorithm.d.ts.map +1 -1
  3. package/dist/algorithms/forgetting-algorithm.js +32 -24
  4. package/dist/algorithms/forgetting-algorithm.js.map +1 -1
  5. package/dist/algorithms/hybrid-search-engine.d.ts +11 -9
  6. package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -1
  7. package/dist/algorithms/hybrid-search-engine.js +77 -75
  8. package/dist/algorithms/hybrid-search-engine.js.map +1 -1
  9. package/dist/algorithms/search-engine.d.ts +33 -11
  10. package/dist/algorithms/search-engine.d.ts.map +1 -1
  11. package/dist/algorithms/search-engine.js +157 -62
  12. package/dist/algorithms/search-engine.js.map +1 -1
  13. package/dist/algorithms/search-ranking.d.ts +57 -50
  14. package/dist/algorithms/search-ranking.d.ts.map +1 -1
  15. package/dist/algorithms/search-ranking.js +91 -84
  16. package/dist/algorithms/search-ranking.js.map +1 -1
  17. package/dist/algorithms/spaced-repetition.d.ts +18 -13
  18. package/dist/algorithms/spaced-repetition.d.ts.map +1 -1
  19. package/dist/algorithms/spaced-repetition.js +28 -23
  20. package/dist/algorithms/spaced-repetition.js.map +1 -1
  21. package/dist/algorithms/vector-search-engine-migration.d.ts +8 -6
  22. package/dist/algorithms/vector-search-engine-migration.d.ts.map +1 -1
  23. package/dist/algorithms/vector-search-engine-migration.js +13 -11
  24. package/dist/algorithms/vector-search-engine-migration.js.map +1 -1
  25. package/dist/algorithms/vector-search-engine-refactored.d.ts +7 -7
  26. package/dist/algorithms/vector-search-engine-refactored.d.ts.map +1 -1
  27. package/dist/algorithms/vector-search-engine-refactored.js +7 -7
  28. package/dist/algorithms/vector-search-engine-refactored.js.map +1 -1
  29. package/dist/algorithms/vector-search-engine.d.ts +25 -20
  30. package/dist/algorithms/vector-search-engine.d.ts.map +1 -1
  31. package/dist/algorithms/vector-search-engine.js +47 -43
  32. package/dist/algorithms/vector-search-engine.js.map +1 -1
  33. package/dist/config/index.d.ts.map +1 -1
  34. package/dist/config/index.js +4 -1
  35. package/dist/config/index.js.map +1 -1
  36. package/dist/database/init.d.ts.map +1 -1
  37. package/dist/database/init.js +24 -4
  38. package/dist/database/init.js.map +1 -1
  39. package/dist/database/migration/migrations/006-fts5-reflection-notes-migration-status.sql +30 -0
  40. package/dist/database/migration/migrations/006-fts5-reflection-notes.d.ts +113 -0
  41. package/dist/database/migration/migrations/006-fts5-reflection-notes.d.ts.map +1 -0
  42. package/dist/database/migration/migrations/006-fts5-reflection-notes.js +441 -0
  43. package/dist/database/migration/migrations/006-fts5-reflection-notes.js.map +1 -0
  44. package/dist/database/migration/migrations/006-fts5-reflection-notes.sql +26 -0
  45. package/dist/database/schema.sql +11 -9
  46. package/dist/server/bootstrap.d.ts +4 -0
  47. package/dist/server/bootstrap.d.ts.map +1 -1
  48. package/dist/server/bootstrap.js +11 -1
  49. package/dist/server/bootstrap.js.map +1 -1
  50. package/dist/server/context.d.ts.map +1 -1
  51. package/dist/server/context.js +3 -1
  52. package/dist/server/context.js.map +1 -1
  53. package/dist/server/http-server.d.ts.map +1 -1
  54. package/dist/server/http-server.js +2 -1
  55. package/dist/server/http-server.js.map +1 -1
  56. package/dist/server/index.js +3 -1
  57. package/dist/server/index.js.map +1 -1
  58. package/dist/services/async-optimizer.d.ts +2 -1
  59. package/dist/services/async-optimizer.d.ts.map +1 -1
  60. package/dist/services/async-optimizer.js +28 -1
  61. package/dist/services/async-optimizer.js.map +1 -1
  62. package/dist/services/batch-scheduler.d.ts +5 -1
  63. package/dist/services/batch-scheduler.d.ts.map +1 -1
  64. package/dist/services/batch-scheduler.js +13 -1
  65. package/dist/services/batch-scheduler.js.map +1 -1
  66. package/dist/services/cache-service.js +1 -1
  67. package/dist/services/cache-service.js.map +1 -1
  68. package/dist/services/failure-detector.d.ts +120 -0
  69. package/dist/services/failure-detector.d.ts.map +1 -0
  70. package/dist/services/failure-detector.js +370 -0
  71. package/dist/services/failure-detector.js.map +1 -0
  72. package/dist/services/llm-based-relation-extractor.js +1 -1
  73. package/dist/services/llm-based-relation-extractor.js.map +1 -1
  74. package/dist/services/reflexion-worker.d.ts +170 -0
  75. package/dist/services/reflexion-worker.d.ts.map +1 -0
  76. package/dist/services/reflexion-worker.js +636 -0
  77. package/dist/services/reflexion-worker.js.map +1 -0
  78. package/dist/services/relation-graph.d.ts +2 -2
  79. package/dist/services/relation-graph.js +3 -3
  80. package/dist/services/relation-graph.js.map +1 -1
  81. package/dist/tools/base-tool.d.ts +5 -0
  82. package/dist/tools/base-tool.d.ts.map +1 -1
  83. package/dist/tools/base-tool.js +39 -0
  84. package/dist/tools/base-tool.js.map +1 -1
  85. package/dist/tools/recall-tool.d.ts.map +1 -1
  86. package/dist/tools/recall-tool.js +36 -2
  87. package/dist/tools/recall-tool.js.map +1 -1
  88. package/dist/tools/remember-tool.d.ts +24 -0
  89. package/dist/tools/remember-tool.d.ts.map +1 -1
  90. package/dist/tools/remember-tool.js +445 -273
  91. package/dist/tools/remember-tool.js.map +1 -1
  92. package/dist/tools/types.d.ts +5 -1
  93. package/dist/tools/types.d.ts.map +1 -1
  94. package/dist/tools/types.js +1 -1
  95. package/dist/tools/types.js.map +1 -1
  96. package/dist/types/index.d.ts +2 -0
  97. package/dist/types/index.d.ts.map +1 -1
  98. package/dist/types/index.js.map +1 -1
  99. package/dist/utils/database.d.ts.map +1 -1
  100. package/dist/utils/database.js +34 -10
  101. package/dist/utils/database.js.map +1 -1
  102. package/dist/utils/fts5-migration-status.d.ts +72 -0
  103. package/dist/utils/fts5-migration-status.d.ts.map +1 -0
  104. package/dist/utils/fts5-migration-status.js +304 -0
  105. package/dist/utils/fts5-migration-status.js.map +1 -0
  106. package/dist/utils/reflection-notes-merge.d.ts +58 -0
  107. package/dist/utils/reflection-notes-merge.d.ts.map +1 -0
  108. package/dist/utils/reflection-notes-merge.js +227 -0
  109. package/dist/utils/reflection-notes-merge.js.map +1 -0
  110. package/dist/utils/reflection-notes-normalize.d.ts +43 -0
  111. package/dist/utils/reflection-notes-normalize.d.ts.map +1 -0
  112. package/dist/utils/reflection-notes-normalize.js +164 -0
  113. package/dist/utils/reflection-notes-normalize.js.map +1 -0
  114. package/dist/utils/reflection-notes-schema.d.ts +84 -0
  115. package/dist/utils/reflection-notes-schema.d.ts.map +1 -0
  116. package/dist/utils/reflection-notes-schema.js +215 -0
  117. package/dist/utils/reflection-notes-schema.js.map +1 -0
  118. package/package.json +3 -1
  119. package/src/database/schema.sql +11 -9
@@ -1,6 +1,6 @@
1
1
  /**
2
- * 하이브리드 검색 엔진
3
- * FTS5 텍스트 검색 + 벡터 검색 결합
2
+ * 텍스트 검색과 벡터 검색을 결합하여 검색 정확도와 포괄성을 동시에 확보합니다.
3
+ * FTS5 전문 검색과 벡터 유사도 검색을 병렬로 수행하여 각각의 장점을 활용합니다.
4
4
  */
5
5
  import { SearchEngine } from './search-engine.js';
6
6
  import { MemoryEmbeddingService } from '../services/memory-embedding-service.js';
@@ -13,27 +13,27 @@ import { RelationGraph } from '../services/relation-graph.js';
13
13
  import { getRankingWeights } from '../config/ranking-weights-loader.js';
14
14
  // 검색 관련 상수
15
15
  /**
16
- * 개별 provider 검색 타임아웃 (밀리초)
17
- * 각 provider별 검색 작업이 이 시간 내에 완료되지 않으면 타임아웃 처리
16
+ * 개별 provider 검색 작업이 지연되어 전체 검색 성능에 영향을 주지 않도록 제한합니다.
17
+ * 각 provider별 검색 작업이 이 시간 내에 완료되지 않으면 타임아웃 처리하여 응답성을 보장합니다.
18
18
  */
19
19
  const PROVIDER_SEARCH_TIMEOUT_MS = 2000;
20
20
  /**
21
- * 전체 검색 프로세스 타임아웃 (밀리초)
22
- * 모든 provider 검색이 이 시간 내에 완료되지 않으면 현재까지 완료된 결과만 반환
23
- * 개별 provider 타임아웃보다 충분히 길어야 (여러 provider가 병렬로 실행되므로)
21
+ * 전체 검색 프로세스가 무한정 대기하지 않도록 최대 대기 시간을 설정합니다.
22
+ * 모든 provider 검색이 이 시간 내에 완료되지 않으면 현재까지 완료된 결과만 반환하여 사용자 경험을 보장합니다.
23
+ * 개별 provider 타임아웃보다 충분히 길게 설정하여 병렬 실행의 이점을 활용합니다.
24
24
  */
25
25
  const OVERALL_SEARCH_TIMEOUT_MS = 5000;
26
26
  /**
27
- * 벡터 검색 결과 limit 배수
28
- * 중복 제거 전에 더 많은 결과를 가져와서 최종 결과의 품질을 보장
27
+ * 중복 제거 과정에서 일부 결과가 제외될 수 있으므로 충분한 후보를 확보합니다.
28
+ * 더 많은 결과를 가져와서 최종 결과의 품질과 다양성을 보장합니다.
29
29
  */
30
30
  const VECTOR_SEARCH_LIMIT_MULTIPLIER = 2;
31
31
  /**
32
- * 벡터 검색 similarity threshold
33
- * 이 값보다 낮은 similarity를 가진 결과는 제외
32
+ * 관련성이 낮은 벡터 검색 결과는 사용자에게 유용하지 않으므로 필터링하여 검색 품질을 향상시킵니다.
33
+ * 이 값보다 낮은 similarity를 가진 결과는 노이즈에 가까우므로 제외하여 검색 정확도를 높입니다.
34
34
  */
35
35
  const VECTOR_SEARCH_THRESHOLD = 0.5;
36
- // 에러 타입 정의
36
+ // 검색 과정에서 발생할 수 있는 다양한 오류를 분류하여 정확한 오류 처리를 수행합니다.
37
37
  export var SearchErrorType;
38
38
  (function (SearchErrorType) {
39
39
  SearchErrorType["EMBEDDING_GENERATION_FAILED"] = "EMBEDDING_GENERATION_FAILED";
@@ -56,11 +56,11 @@ export class SearchError extends Error {
56
56
  this.name = 'SearchError';
57
57
  }
58
58
  }
59
- // 책임별 클래스들
59
+ // 단일 책임 원칙을 준수하여 각 기능을 독립적인 클래스로 분리하여 유지보수성을 향상시키기 위해
60
60
  export class SearchResultCombiner {
61
61
  combine(textResults, vectorResults, textWeight, vectorWeight) {
62
62
  const resultMap = new Map();
63
- // 텍스트 검색 결과 추가
63
+ // 텍스트 검색 결과를 먼저 추가하여 기본 점수를 설정합니다.
64
64
  textResults.forEach(result => {
65
65
  const textScore = typeof result.score === 'number' ? result.score : 0;
66
66
  resultMap.set(result.id, {
@@ -78,17 +78,17 @@ export class SearchResultCombiner {
78
78
  recall_reason: result.recall_reason || '텍스트 검색 결과',
79
79
  });
80
80
  });
81
- // 벡터 검색 결과 추가/업데이트
81
+ // 벡터 검색 결과를 추가하거나 기존 텍스트 결과와 결합하여 하이브리드 점수를 계산합니다.
82
82
  vectorResults.forEach(result => {
83
83
  const existing = resultMap.get(result.id);
84
84
  if (existing) {
85
- // 기존 결과 업데이트
85
+ // 텍스트와 벡터 검색 모두에서 발견된 결과를 업데이트하여 종합 점수를 계산합니다.
86
86
  existing.vectorScore = result.similarity;
87
87
  existing.finalScore = (existing.textScore * textWeight) + (result.similarity * vectorWeight);
88
88
  existing.recall_reason = this.generateHybridReason(existing.textScore, result.similarity);
89
89
  }
90
90
  else {
91
- // 새로운 결과 추가
91
+ // 벡터 검색에서만 발견된 결과를 추가하여 검색 포괄성을 확보합니다.
92
92
  resultMap.set(result.id, {
93
93
  id: result.id,
94
94
  content: result.content,
@@ -125,31 +125,31 @@ export class AdaptiveWeightCalculator {
125
125
  adaptiveWeights = new Map();
126
126
  calculateWeights(query, vectorWeight, textWeight) {
127
127
  const queryKey = this.normalizeQuery(query);
128
- // 기존 적응형 가중치가 있으면 사용
128
+ // 이전에 계산된 가중치를 재사용하여 일관성 있는 검색 결과를 제공하고 성능을 최적화합니다.
129
129
  if (this.adaptiveWeights.has(queryKey)) {
130
130
  return this.adaptiveWeights.get(queryKey);
131
131
  }
132
- // 쿼리 특성 분석
132
+ // 쿼리의 특성을 분석하여 최적의 가중치를 결정합니다.
133
133
  const queryAnalysis = this.analyzeQuery(query);
134
- // 쿼리 특성에 따른 가중치 조정
134
+ // 쿼리 특성에 따라 벡터 검색과 텍스트 검색의 가중치를 동적으로 조정하여 검색 정확도를 향상시키기 위해
135
135
  let adjustedVectorWeight = vectorWeight;
136
136
  let adjustedTextWeight = textWeight;
137
137
  if (queryAnalysis.isTechnicalTerm) {
138
- // 기술 용어는 벡터 검색에 더 의존
138
+ // 기술 용어는 의미적 유사성이 중요하므로 벡터 검색에 더 높은 가중치를 부여합니다.
139
139
  adjustedVectorWeight = Math.min(0.8, vectorWeight + 0.2);
140
140
  adjustedTextWeight = Math.max(0.2, textWeight - 0.2);
141
141
  }
142
142
  else if (queryAnalysis.isPhrase) {
143
- // 구문 검색은 텍스트 검색에 더 의존
143
+ // 구문 검색은 정확한 단어 매칭이 중요하므로 텍스트 검색에 더 높은 가중치를 부여합니다.
144
144
  adjustedVectorWeight = Math.max(0.2, vectorWeight - 0.2);
145
145
  adjustedTextWeight = Math.min(0.8, textWeight + 0.2);
146
146
  }
147
147
  else if (queryAnalysis.isShortQuery) {
148
- // 짧은 쿼리는 벡터 검색에 더 의존
148
+ // 짧은 쿼리는 키워드 매칭이 제한적이므로 의미적 유사성을 활용하는 벡터 검색에 더 의존합니다.
149
149
  adjustedVectorWeight = Math.min(0.7, vectorWeight + 0.1);
150
150
  adjustedTextWeight = Math.max(0.3, textWeight - 0.1);
151
151
  }
152
- // 가중치 정규화
152
+ // 가중치의 합이 1이 되도록 정규화하여 일관된 점수 범위를 유지합니다.
153
153
  const totalWeight = adjustedVectorWeight + adjustedTextWeight;
154
154
  const normalizedVectorWeight = adjustedVectorWeight / totalWeight;
155
155
  const normalizedTextWeight = adjustedTextWeight / totalWeight;
@@ -202,8 +202,8 @@ export class SearchLogger {
202
202
  // });
203
203
  }
204
204
  /**
205
- * 실험 로그 기록
206
- * A/B 테스트를 위한 실험 ID와 변이 파라미터를 로깅합니다.
205
+ * A/B 테스트를 통해 검색 알고리즘의 효과를 측정하고 개선합니다.
206
+ * 실험 ID와 변이 파라미터를 로깅하여 데이터 기반 의사결정을 지원합니다.
207
207
  */
208
208
  logExperiment(searchId, experimentId, variant) {
209
209
  // console.log(`🧪 [${searchId}] 실험 로그`, {
@@ -221,8 +221,8 @@ export class HybridSearchEngine {
221
221
  weightCalculator;
222
222
  logger;
223
223
  queryEmbeddingService;
224
- defaultVectorWeight = 0.6; // 벡터 검색 60%
225
- defaultTextWeight = 0.4; // 텍스트 검색 40%
224
+ defaultVectorWeight = 0.6; // 의미적 유사성을 더 중요하게 평가하여 검색 정확도를 향상시키기 위해
225
+ defaultTextWeight = 0.4; // 정확한 키워드 매칭도 일정 비율로 반영하여 검색 포괄성을 확보합니다.
226
226
  searchStats = new Map();
227
227
  ranking;
228
228
  relationGraph = null;
@@ -234,7 +234,7 @@ export class HybridSearchEngine {
234
234
  this.weightCalculator = weightCalculator;
235
235
  this.logger = logger;
236
236
  this.queryEmbeddingService = queryEmbeddingService;
237
- // TOML 설정에서 가중치 로드
237
+ // 외부 설정 파일에서 가중치를 로드하여 런타임에 조정 가능하도록 합니다.
238
238
  const config = getRankingWeights();
239
239
  this.ranking = new SearchRanking({
240
240
  relevance: config.ranking_weights.alpha,
@@ -247,23 +247,25 @@ export class HybridSearchEngine {
247
247
  this.relationGraph = relationGraph || null;
248
248
  }
249
249
  /**
250
- * RelationGraph 설정 (선택적)
250
+ * 관계 그래프를 주입하여 관계 기반 검색 기능을 활성화합니다.
251
+ * 선택적으로 설정하여 관계 그래프가 없는 환경에서도 동작하도록 합니다.
251
252
  */
252
253
  setRelationGraph(relationGraph) {
253
254
  this.relationGraph = relationGraph;
254
255
  }
255
256
  /**
256
- * 하이브리드 검색 실행 - 적응형 가중치 적용
257
+ * 텍스트 검색과 벡터 검색을 병렬로 실행하고 결과를 결합하여 최적의 검색 결과를 제공합니다.
258
+ * 쿼리 특성에 따라 적응형 가중치를 적용하여 검색 정확도를 향상시키기 위해
257
259
  */
258
260
  async search(db, query) {
259
261
  const searchId = this.generateSearchId();
260
262
  const startTime = process.hrtime.bigint();
261
263
  try {
262
264
  this.logger.logSearchStart(searchId, query);
263
- // 1. 적응형 가중치 계산
265
+ // 쿼리 특성에 따라 최적의 가중치를 계산하여 검색 정확도를 향상시키기 위해
264
266
  const weights = this.calculateAdaptiveWeights(query);
265
267
  this.logger.logSearchStep(searchId, '적응형 가중치 계산 완료', weights);
266
- // 실험 로그 (experiment_id가 있는 경우)
268
+ // A/B 테스트를 위한 실험 파라미터를 로깅하여 데이터 기반 개선을 지원합니다.
267
269
  if (query.experiment_id) {
268
270
  const config = getRankingWeights();
269
271
  const variant = {
@@ -287,23 +289,23 @@ export class HybridSearchEngine {
287
289
  this.logger.logExperiment(searchId, query.experiment_id, variant);
288
290
  }
289
291
  else {
290
- // logExperiment 없으면 logSearchStep으로 대체
292
+ // logExperiment 메서드가 없는 경우 일반 로그로 대체하여 호환성을 유지합니다.
291
293
  this.logger.logSearchStep(searchId, '실험 파라미터', {
292
294
  experiment_id: query.experiment_id,
293
295
  variant
294
296
  });
295
297
  }
296
298
  }
297
- // 2. 텍스트 검색 실행
299
+ // FTS5 전문 검색을 실행하여 정확한 키워드 매칭 결과를 획득합니다.
298
300
  const textResults = await this.executeTextSearch(db, query, searchId);
299
- // 3. 벡터 검색 실행
301
+ // 벡터 유사도 검색을 실행하여 의미적으로 관련된 결과를 획득합니다.
300
302
  const vectorResults = await this.executeVectorSearch(db, query, searchId);
301
- // 4. 결과 결합 정렬 (데이터베이스 전달하여 consolidation_score 관계 가중치 조회)
303
+ // 텍스트와 벡터 검색 결과를 결합하고 통합 점수와 관계 가중치를 조회하여 최종 정렬합니다.
302
304
  const finalResults = await this.combineAndSortResults(textResults, vectorResults, weights, query.limit || 10, db, query.includeRelations || false);
303
- // 5. 통계 업데이트 결과 반환
305
+ // 검색 통계를 업데이트하여 향후 가중치 조정에 활용합니다.
304
306
  this.updateSearchStats(query.query, textResults.length, vectorResults.length);
305
307
  const queryTime = this.calculateQueryTime(startTime);
306
- // 검색 완료 로그에 실험 ID 포함
308
+ // A/B 테스트 추적을 위해 검색 완료 로그에 실험 ID 포함합니다.
307
309
  const logData = {
308
310
  items: finalResults,
309
311
  total_count: finalResults.length
@@ -382,25 +384,25 @@ export class HybridSearchEngine {
382
384
  */
383
385
  async executeVecSearch(db, query, searchId, startTime) {
384
386
  try {
385
- // 저장된 임베딩의 모든 provider 감지
387
+ // 데이터베이스에 저장된 모든 임베딩 provider 감지하여 사용 가능한 검색 방법을 파악합니다.
386
388
  const detectedProviders = await this.detectAllStoredEmbeddingProviders(db);
387
389
  // provider 필터링
388
390
  const providersToSearch = this.filterProvidersToSearch(detectedProviders, query.provider_filter, searchId);
389
391
  if (providersToSearch.length === 0) {
390
392
  return [];
391
393
  }
392
- // 다중 provider 병렬 검색 실행
394
+ // 여러 provider 병렬로 검색하여 검색 속도를 향상시키고 포괄성을 확보합니다.
393
395
  const searchOptions = {
394
396
  limit: (query.limit || 10) * VECTOR_SEARCH_LIMIT_MULTIPLIER,
395
397
  threshold: VECTOR_SEARCH_THRESHOLD,
396
398
  types: query.filters?.type,
397
399
  includeContent: true
398
400
  };
399
- // 각 provider 검색 작업 생성
401
+ // 각 provider 대해 독립적인 검색 작업을 생성하여 병렬 실행을 준비합니다.
400
402
  const searchPromises = providersToSearch.map(provider => this.createProviderSearchTask(provider, query.query, searchOptions, searchId));
401
- // 모든 provider 검색 실행 결과 수집
403
+ // 모든 provider 검색을 실행하고 타임아웃을 관리하여 안정적인 결과 수집을 보장합니다.
402
404
  const { allResults, providerStats, overallTimeoutOccurred } = await this.executeProviderSearchesWithTimeout(searchPromises, providersToSearch, searchId);
403
- // 결과 정규화 중복 제거
405
+ // 여러 provider의 결과를 정규화하고 중복을 제거하여 일관된 결과를 제공합니다.
404
406
  const vectorResults = this.normalizeAndDeduplicateResults(allResults);
405
407
  const totalTime = Number(process.hrtime.bigint() - startTime) / 1_000_000;
406
408
  this.logger.logSearchStep(searchId, 'VEC 벡터 검색 완료', {
@@ -430,12 +432,12 @@ export class HybridSearchEngine {
430
432
  */
431
433
  filterProvidersToSearch(detectedProviders, providerFilter, searchId) {
432
434
  let providersToSearch = detectedProviders.map(p => p.provider);
433
- // providerFilter가 있고 비어있지 않은 경우에만 필터링
434
- // 빈 배열은 undefined로 처리되어 모든 provider를 검색함
435
+ // 사용자가 특정 provider만 검색하도록 요청한 경우에만 필터링합니다.
436
+ // 빈 배열은 모든 provider를 검색하도록 처리하여 유연성을 제공합니다.
435
437
  if (providerFilter && providerFilter.length > 0) {
436
438
  providersToSearch = providersToSearch.filter(p => providerFilter.includes(p));
437
439
  }
438
- // 검색할 provider가 없으면 로깅
440
+ // 검색할 provider가 없는 경우를 로깅하여 문제를 진단할 수 있도록 합니다.
439
441
  if (providersToSearch.length === 0) {
440
442
  this.logger.logSearchStep(searchId, 'VEC 벡터 검색 - 검색할 provider 없음', {
441
443
  detectedProviders: detectedProviders.map(p => p.provider),
@@ -523,9 +525,9 @@ export class HybridSearchEngine {
523
525
  * @returns 검색 결과 및 통계
524
526
  */
525
527
  async executeProviderSearchesWithTimeout(searchPromises, providersToSearch, searchId) {
526
- // 전체 검색 프로세스의 maximum timeout 설정
527
- // 모든 provider가 타임아웃되어도 응답을 보장하기 위함
528
- // 개별 provider 타임아웃보다 충분히 길어야 여러 provider가 병렬로 실행될 수 있음
528
+ // 전체 검색 프로세스의 최대 타임아웃을 설정하여 무한 대기를 방지합니다.
529
+ // 모든 provider가 타임아웃되어도 부분 결과라도 반환하여 사용자 경험을 보장합니다.
530
+ // 개별 provider 타임아웃보다 충분히 길게 설정하여 병렬 실행의 이점을 활용합니다.
529
531
  let overallTimeoutOccurred = false;
530
532
  let overallTimeoutHandle = null;
531
533
  const overallTimeoutPromise = new Promise((resolve) => {
@@ -538,7 +540,7 @@ export class HybridSearchEngine {
538
540
  resolve();
539
541
  }, OVERALL_SEARCH_TIMEOUT_MS);
540
542
  });
541
- // 타임아웃 타이머 정리 함수
543
+ // 타임아웃 타이머를 정리하여 메모리 누수를 방지합니다.
542
544
  const cleanupTimeout = () => {
543
545
  if (overallTimeoutHandle !== null) {
544
546
  clearTimeout(overallTimeoutHandle);
@@ -546,20 +548,20 @@ export class HybridSearchEngine {
546
548
  }
547
549
  };
548
550
  try {
549
- // Promise.allSettled()를 사용하여 모든 provider 검색 실행 (일부 실패해도 계속 진행)
550
- // 전체 타임아웃과 병렬 검색 중 먼저 완료되는 사용
551
+ // Promise.allSettled()를 사용하여 일부 provider 실패해도 나머지 검색이 계속 진행되도록 합니다.
552
+ // 전체 타임아웃과 병렬 검색 중 먼저 완료되는 것을 사용하여 응답성을 보장합니다.
551
553
  const searchResults = await Promise.race([
552
554
  Promise.allSettled(searchPromises).then(results => {
553
555
  cleanupTimeout();
554
556
  return results;
555
557
  }),
556
558
  overallTimeoutPromise.then(() => {
557
- // 타임아웃 발생 시 현재까지 완료된 Promise만 수집
559
+ // 타임아웃 발생 시 현재까지 완료된 Promise만 수집하여 부분 결과라도 반환합니다.
558
560
  // Promise.allSettled는 이미 실행 중이므로 결과를 기다림
559
561
  return Promise.allSettled(searchPromises);
560
562
  })
561
563
  ]);
562
- // 성공한 검색 결과 수집
564
+ // 성공한 검색 결과만 수집하여 신뢰할 수 있는 결과만 반환합니다.
563
565
  const allResults = [];
564
566
  const providerStats = [];
565
567
  searchResults.forEach((result, index) => {
@@ -572,7 +574,7 @@ export class HybridSearchEngine {
572
574
  timeMs: providerResult.timeMs,
573
575
  error: providerResult.error || undefined
574
576
  });
575
- // 타임아웃 또는 실패 시 상세 로깅
577
+ // 타임아웃 또는 실패 시 상세 로깅하여 문제 진단과 모니터링을 지원합니다.
576
578
  if (!providerResult.success) {
577
579
  const isTimeout = providerResult.error?.includes('타임아웃');
578
580
  this.logger.logSearchStep(searchId, `VEC 벡터 검색 실패 - ${providerResult.provider}`, {
@@ -588,10 +590,10 @@ export class HybridSearchEngine {
588
590
  }
589
591
  }
590
592
  else {
591
- // Promise 자체가 실패한 경우 (매우 드묾)
593
+ // Promise 자체가 실패한 예외적인 경우를 처리하여 시스템 안정성을 보장합니다.
592
594
  const provider = providersToSearch[index];
593
595
  if (!provider) {
594
- // provider가 없는 경우 (매우 드묾, 인덱스 불일치) - 스킵
596
+ // provider가 없는 예외적인 경우를 스킵하여 오류를 방지합니다.
595
597
  return;
596
598
  }
597
599
  const errorMessage = result.reason instanceof Error ? result.reason.message : String(result.reason);
@@ -612,7 +614,7 @@ export class HybridSearchEngine {
612
614
  return { allResults, providerStats, overallTimeoutOccurred };
613
615
  }
614
616
  finally {
615
- // 예외 발생 시에도 타임아웃 타이머 정리 보장
617
+ // 예외 발생 시에도 타임아웃 타이머를 정리하여 메모리 누수를 방지합니다.
616
618
  cleanupTimeout();
617
619
  }
618
620
  }
@@ -742,12 +744,12 @@ export class HybridSearchEngine {
742
744
  */
743
745
  static PROVIDER_CACHE_TTL_MS = 5 * 60 * 1000;
744
746
  /**
745
- * 저장된 임베딩의 모든 provider 감지
746
- * 모든 provider 목록을 반환 (count 내림차순 정렬)
747
- * 캐싱을 사용하여 성능 개선
747
+ * 데이터베이스에 저장된 모든 임베딩 provider 감지하여 사용 가능한 검색 방법을 파악합니다.
748
+ * 모든 provider 목록을 반환하고 count 내림차순으로 정렬하여 주요 provider를 우선 확인합니다.
749
+ * 캐싱을 사용하여 반복적인 데이터베이스 조회를 줄이고 성능을 개선합니다.
748
750
  */
749
751
  async detectAllStoredEmbeddingProviders(db) {
750
- // 캐시 확인
752
+ // 캐시된 provider 정보를 확인하여 불필요한 데이터베이스 조회를 방지합니다.
751
753
  const now = Date.now();
752
754
  if (this.providerCache && (now - this.providerCache.timestamp) < HybridSearchEngine.PROVIDER_CACHE_TTL_MS) {
753
755
  return this.providerCache.stats;
@@ -768,7 +770,7 @@ export class HybridSearchEngine {
768
770
  if (providerStatsList && providerStatsList.length > 0) {
769
771
  const normalizedStats = providerStatsList
770
772
  .filter(stat => {
771
- // 유효한 EmbeddingProvider인지 확인
773
+ // 알려진 EmbeddingProvider인지 확인하여 잘못된 데이터를 필터링합니다.
772
774
  const validProviders = ['tfidf', 'lightweight', 'minilm', 'openai', 'gemini'];
773
775
  return validProviders.includes(stat.provider);
774
776
  })
@@ -777,7 +779,7 @@ export class HybridSearchEngine {
777
779
  count: stat.count,
778
780
  avg_dimensions: Math.round(stat.avg_dimensions || 0)
779
781
  }));
780
- // 캐시 업데이트
782
+ // 새로 조회한 provider 정보를 캐시에 저장하여 향후 조회 성능을 향상시키기 위해
781
783
  this.providerCache = {
782
784
  stats: normalizedStats,
783
785
  timestamp: now
@@ -792,7 +794,7 @@ export class HybridSearchEngine {
792
794
  catch (error) {
793
795
  console.warn('⚠️ 저장된 임베딩 provider 감지 실패:', error);
794
796
  }
795
- // 기본값:배열 반환 (provider가 없는 경우)
797
+ // provider가 없는 경우 배열을 반환하여 안정적인 동작을 보장합니다.
796
798
  const emptyStats = [];
797
799
  this.providerCache = {
798
800
  stats: emptyStats,
@@ -814,8 +816,8 @@ export class HybridSearchEngine {
814
816
  async generateQueryVector(query, searchId, preferredProvider) {
815
817
  try {
816
818
  const embeddingStart = process.hrtime.bigint();
817
- // 각 provider는 서로 다른 차원의 임베딩을 사용할 있으므로
818
- // preferredProvider로만 임베딩 생성 (fallback 사용 함)
819
+ // 각 provider는 서로 다른 차원의 임베딩을 사용하므로 차원 불일치를 방지합니다.
820
+ // preferredProvider로만 임베딩을 생성하고 fallback 사용하지 않아 일관성을 보장합니다.
819
821
  const embeddingResult = await this.queryEmbeddingService.generateEmbedding(query, preferredProvider);
820
822
  if (!embeddingResult) {
821
823
  throw new SearchError(SearchErrorType.EMBEDDING_GENERATION_FAILED, '임베딩 생성에 실패했습니다', undefined, { query, searchId, preferredProvider });
@@ -838,27 +840,27 @@ export class HybridSearchEngine {
838
840
  async combineAndSortResults(textResults, vectorResults, weights, limit, db, includeRelations = false) {
839
841
  try {
840
842
  const combinedResults = this.resultCombiner.combine(textResults, vectorResults, weights.textWeight, weights.vectorWeight);
841
- // 관계 가중치 Consolidation Score 계산
843
+ // 관계 그래프와 통합 점수를 활용하여 더 정교한 관련성 평가를 수행합니다.
842
844
  if (db) {
843
845
  const memoryIds = combinedResults.map(r => r.id);
844
846
  if (memoryIds.length > 0) {
845
- // 관계 가중치 관계 정보 계산
847
+ // 관계 그래프를 기반으로 관계 가중치와 관계 정보를 계산하여 관련성 점수에 반영합니다.
846
848
  const relationData = await this.fetchRelationWeights(db, memoryIds);
847
849
  const relationWeights = relationData.weights;
848
850
  const relationInfo = relationData.relations;
849
- // Consolidation Score 조회 (활성화된 경우)
851
+ // 통합 점수 기능이 활성화된 경우 추가적인 관련성 지표를 조회합니다.
850
852
  let consolidationScores = new Map();
851
853
  if (mementoConfig.consolidationScoreEnabled) {
852
854
  consolidationScores = this.fetchConsolidationScores(db, memoryIds);
853
855
  }
854
- // 각 결과에 대해 finalScore 재계산
856
+ // 관계 가중치와 통합 점수를 반영하여 결과의 최종 점수를 재계산합니다.
855
857
  combinedResults.forEach(result => {
856
858
  const relationWeight = relationWeights.get(result.id);
857
- // relationGraph가 있고 관계가 있는 경우에만 relation_weight 설정
859
+ // relationGraph가 있고 실제 관계가 존재하는 경우에만 관계 가중치를 설정하여 정확성을 보장합니다.
858
860
  if (relationWeight !== undefined && relationWeight > 0) {
859
861
  result.relation_weight = relationWeight;
860
862
  }
861
- // 관계 정보 포함 (선택적, includeRelations 옵션이 true인 경우만)
863
+ // 사용자가 요청한 경우에만 관계 정보를 포함하여 상세한 분석을 지원합니다.
862
864
  if (includeRelations) {
863
865
  const relations = relationInfo.get(result.id);
864
866
  if (relations && relations.length > 0) {
@@ -871,7 +873,7 @@ export class HybridSearchEngine {
871
873
  }
872
874
  const consolidationScore = consolidationScores.get(result.id);
873
875
  if (consolidationScore !== undefined) {
874
- // Consolidation Score가 있으면 기존 로직 사용
876
+ // 통합 점수가 있는 경우 정교한 점수 계산 방식을 사용하여 검색 품질을 향상시키기 위해
875
877
  result.consolidation_score = consolidationScore;
876
878
  const vectorSimilarity = result.vectorScore;
877
879
  result.finalScore = this.ranking.calculateFinalScoreWithConsolidation(vectorSimilarity, consolidationScore, 'balanced');
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid-search-engine.js","sourceRoot":"","sources":["../../src/algorithms/hybrid-search-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hybrid-search-engine.js","sourceRoot":"","sources":["../../src/algorithms/hybrid-search-engine.ts"],"names":[],"mappings":"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"}