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
- * Memento-Goals.md 검색 랭킹 공식 구현
2
+ * 검색 결과의 관련성을 정량적으로 평가하여 사용자에게 가장 유용한 결과를 우선 제공합니다.
3
+ * Memento-Goals.md 정의된 검증된 랭킹 공식을 구현하여 일관되고 신뢰할 수 있는 검색 품질을 보장합니다.
4
4
  */
5
5
  export class SearchRanking {
6
6
  weights;
@@ -16,12 +16,11 @@ export class SearchRanking {
16
16
  };
17
17
  }
18
18
  /**
19
- * 최종 검색 점수 계산
20
- * S = α * relevance + β * recency + γ * importance + δ * usage + ζ * relation_weight - ε * duplication_penalty
19
+ * 단일 지표만으로는 검색 결과의 품질을 정확히 평가할 수 없으므로, 여러 지표를 가중 평균하여 종합적인 평가를 수행합니다.
20
+ * 관련성, 최근성, 중요도, 사용성, 관계 가중치를 결합하고 중복 패널티를 적용하여 사용자에게 가장 유용한 결과를 우선 제공합니다.
21
21
  *
22
- * Consolidation Score가 제공되면:
23
- * Final_Score = w1 * vector_similarity + w2 * consolidation_score
24
- * (기존 공식과 별도로 계산하여 통합)
22
+ * Consolidation Score가 제공되면 벡터 유사도와 통합 점수를 결합하여 더 정교한 평가를 수행합니다.
23
+ * 기존 공식과 별도로 계산하여 통합함으로써 점진적 기능 확장을 가능하게 합니다.
25
24
  */
26
25
  calculateFinalScore(features) {
27
26
  const baseScore = this.weights.relevance * features.relevance +
@@ -30,24 +29,22 @@ export class SearchRanking {
30
29
  this.weights.usage * features.usage +
31
30
  (this.weights.relation_weight * (features.relation_weight || 0)) -
32
31
  this.weights.duplication_penalty * features.duplication_penalty;
33
- // Consolidation Score가 제공되면 통합
32
+ // 통합 점수 기능이 활성화된 경우 추가적인 관련성 지표를 활용하여 검색 품질을 향상시킵니다.
34
33
  if (features.consolidation_score !== undefined && this.weights.consolidation_score !== undefined) {
35
- // w2 상한 제한 (최대 0.4)
34
+ // 통합 점수의 영향력을 제한하여 벡터 유사도의 중요성을 보장합니다.
36
35
  const w2 = Math.min(this.weights.consolidation_score, 0.4);
37
- const w1 = 1 - w2; // w1 + w2 = 1 보장
38
- // vector_similarity는 relevance로 간주 (임베딩 유사도 포함)
36
+ const w1 = 1 - w2; // 가중치의 합이 1이 되도록 보장하여 점수 범위의 일관성을 유지합니다.
37
+ // 벡터 유사도를 텍스트 관련성과 동일한 의미로 해석하여 일관된 점수 계산을 수행합니다.
39
38
  const vectorSimilarity = features.relevance;
40
39
  const consolidationScore = features.consolidation_score;
41
- // 최종 점수 = w1 * vector_similarity + w2 * consolidation_score
40
+ // 가중 평균을 통해 벡터 유사도와 통합 점수를 균형있게 결합하여 최종 점수를 계산합니다.
42
41
  return w1 * vectorSimilarity + w2 * consolidationScore;
43
42
  }
44
43
  return baseScore;
45
44
  }
46
45
  /**
47
- * Consolidation Score 가중치를 검색 프로파일에 따라 설정
48
- *
49
- * @param profile 검색 프로파일 ('recent', 'balanced', 'memory')
50
- * @returns Consolidation Score 가중치 설정
46
+ * 사용자의 검색 목적에 맞는 가중치를 제공하여 최적의 검색 결과를 제공합니다.
47
+ * 최근 정보를 우선하는 경우, 균형잡힌 검색, 장기 기억 중심 검색 등 다양한 시나리오를 지원합니다.
51
48
  */
52
49
  getConsolidationScoreWeights(profile = 'balanced') {
53
50
  switch (profile) {
@@ -56,55 +53,52 @@ export class SearchRanking {
56
53
  case 'balanced':
57
54
  return { vectorSimilarity: 0.8, consolidationScore: 0.2 };
58
55
  case 'memory':
59
- return { vectorSimilarity: 0.7, consolidationScore: 0.3 }; // 상한 0.4 적용됨
56
+ return { vectorSimilarity: 0.7, consolidationScore: 0.3 }; // 상한 0.4 적용되어 벡터 유사도의 최소 비율을 보장합니다.
60
57
  default:
61
58
  return { vectorSimilarity: 0.8, consolidationScore: 0.2 };
62
59
  }
63
60
  }
64
61
  /**
65
- * Consolidation Score를 사용한 최종 점수 계산
66
- *
67
- * @param vectorSimilarity 벡터 유사도 (0-1)
68
- * @param consolidationScore Consolidation Score (0-1)
69
- * @param profile 검색 프로파일 (기본값: 'balanced')
70
- * @returns 최종 점수 (0-1)
62
+ * 벡터 유사도와 통합 점수를 프로파일에 맞게 결합하여 최종 검색 점수를 계산합니다.
63
+ * 사용자의 검색 목적에 따라 다른 가중치를 적용하여 맞춤형 검색 결과를 제공합니다.
71
64
  */
72
65
  calculateFinalScoreWithConsolidation(vectorSimilarity, consolidationScore, profile = 'balanced') {
73
66
  const weights = this.getConsolidationScoreWeights(profile);
74
- // w2 상한 제한 (최대 0.4)
67
+ // 통합 점수의 영향력을 제한하여 벡터 유사도의 중요성을 보장합니다.
75
68
  const w2 = Math.min(weights.consolidationScore, 0.4);
76
- const w1 = 1 - w2; // w1 + w2 = 1 보장
69
+ const w1 = 1 - w2; // 가중치의 합이 1이 되도록 보장하여 점수 범위의 일관성을 유지합니다.
77
70
  return w1 * vectorSimilarity + w2 * consolidationScore;
78
71
  }
79
72
  /**
80
- * 관련성 점수 계산 (실제 구현)
81
- * 임베딩 유사도(60%) + BM25(30%) + 태그 매칭(5%) + 타이틀 히트(5%)
73
+ * 단일 지표만으로는 검색 관련성을 정확히 평가할 수 없으므로, 다양한 관련성 지표를 가중 평균하여 종합적인 관련성 점수를 계산합니다.
74
+ * 임베딩 유사도, BM25, 태그 매칭, 타이틀 히트를 결합하여 검색 정확도를 향상시킵니다.
82
75
  */
83
76
  calculateRelevance(input) {
84
77
  const { query, content, title, tags, embeddingSimilarity, bm25Result } = input;
85
- // 입력 검증
78
+ // 잘못된 입력으로 인한 오류를 방지하고 안정적인 점수 계산을 보장합니다.
86
79
  if (!query || !content)
87
80
  return 0;
88
- // 1. 임베딩 유사도 (60% 가중치)
81
+ // 의미적 유사성을 가장 중요하게 평가하여 사용자의 의도와 가장 가까운 결과를 찾습니다.
89
82
  const embeddingScore = embeddingSimilarity
90
83
  ? this.calculateEmbeddingSimilarity(embeddingSimilarity.queryEmbedding, embeddingSimilarity.docEmbedding)
91
84
  : 0;
92
- // 2. BM25 점수 (30% 가중치)
85
+ // 키워드 빈도 기반의 전통적인 검색 알고리즘을 활용하여 정확한 키워드 매칭을 보장합니다.
93
86
  const bm25Score = bm25Result
94
87
  ? this.normalizeBM25(bm25Result.score)
95
88
  : this.calculateSimpleBM25(query, content);
96
- // 3. 태그 매칭 (5% 가중치)
89
+ // 사용자가 명시적으로 설정한 태그를 활용하여 메타데이터 기반 관련성을 평가합니다.
97
90
  const tagScore = this.calculateTagMatch(query, tags);
98
- // 4. 타이틀 히트 (5% 가중치)
91
+ // 문서의 제목이 검색어와 일치하는 경우 높은 관련성을 부여하여 정확한 매칭을 우선 제공합니다.
99
92
  const titleScore = title ? this.calculateTitleHit(query, title) : 0;
100
- // 가중치 적용
93
+ // 지표의 중요도에 따라 가중 평균을 적용하여 종합적인 관련성 점수를 계산합니다.
101
94
  return 0.60 * embeddingScore +
102
95
  0.30 * bm25Score +
103
96
  0.05 * tagScore +
104
97
  0.05 * titleScore;
105
98
  }
106
99
  /**
107
- * 임베딩 유사도 계산 (코사인 유사도)
100
+ * 벡터 공간에서의 의미적 유사성을 정량화하여 검색 정확도를 향상시킵니다.
101
+ * 코사인 유사도를 사용하여 벡터의 방향성을 비교하고 크기 차이의 영향을 제거합니다.
108
102
  */
109
103
  calculateEmbeddingSimilarity(queryEmbedding, docEmbedding) {
110
104
  if (queryEmbedding.length !== docEmbedding.length)
@@ -115,25 +109,26 @@ export class SearchRanking {
115
109
  if (magnitudeA === 0 || magnitudeB === 0)
116
110
  return 0;
117
111
  const cosine = dotProduct / (magnitudeA * magnitudeB);
118
- return Math.max(0, cosine); // 음수 방지
112
+ return Math.max(0, cosine); // 음수 유사도를 0으로 제한하여 점수 범위의 일관성을 유지합니다.
119
113
  }
120
114
  /**
121
- * BM25 점수 정규화
115
+ * BM25 점수를 0-1 범위로 정규화하여 다른 점수 지표와 일관된 비교가 가능하도록 합니다.
122
116
  */
123
117
  normalizeBM25(bm25Score, kNorm = 2.0) {
124
118
  return bm25Score / (bm25Score + kNorm);
125
119
  }
126
120
  /**
127
- * 간단한 BM25 구현 (실제 BM25가 없는 경우)
121
+ * 외부 BM25 라이브러리가 없는 경우에도 기본적인 키워드 빈도 기반 검색을 제공합니다.
122
+ * 간소화된 BM25 알고리즘을 구현하여 검색 기능의 안정성을 보장합니다.
128
123
  */
129
124
  calculateSimpleBM25(query, content) {
130
- // 입력 검증
125
+ // 잘못된 입력으로 인한 오류를 방지하고 안정적인 점수 계산을 보장합니다.
131
126
  if (!query || !content)
132
127
  return 0;
133
128
  const queryTerms = query.toLowerCase().split(/\s+/);
134
129
  const contentTerms = content.toLowerCase().split(/\s+/);
135
130
  const termFreq = new Map();
136
- // 용어 빈도 계산
131
+ // 문서 각 용어의 출현 빈도를 계산하여 키워드 매칭 점수를 산출합니다.
137
132
  for (const term of contentTerms) {
138
133
  termFreq.set(term, (termFreq.get(term) || 0) + 1);
139
134
  }
@@ -141,19 +136,20 @@ export class SearchRanking {
141
136
  const k1 = 1.2;
142
137
  const b = 0.75;
143
138
  const docLength = contentTerms.length;
144
- const avgDocLength = 100; // 평균 문서 길이 (추정값)
139
+ const avgDocLength = 100; // 문서 길이 정규화를 위한 평균값을 사용하여 긴 문서의 불공정한 우위를 방지합니다.
145
140
  for (const term of queryTerms) {
146
141
  const tf = termFreq.get(term) || 0;
147
142
  if (tf > 0) {
148
- const idf = Math.log(2); // 간단한 IDF (실제로는 전체 문서 필요)
143
+ const idf = Math.log(2); // 간단한 IDF 사용하여 희귀 용어에 더 높은 가중치를 부여합니다. (실제 구현에서는 전체 문서 수가 필요)
149
144
  const normalizedTf = (tf * (k1 + 1)) / (tf + k1 * (1 - b + b * (docLength / avgDocLength)));
150
145
  score += idf * normalizedTf;
151
146
  }
152
147
  }
153
- return Math.min(1.0, score / 10); // 정규화
148
+ return Math.min(1.0, score / 10); // 점수를 0-1 범위로 정규화하여 다른 지표와 일관된 비교가 가능하도록 합니다.
154
149
  }
155
150
  /**
156
- * 태그 매칭 (자카드 유사도)
151
+ * 검색어와 태그 간의 집합 유사도를 계산하여 메타데이터 기반 관련성을 평가합니다.
152
+ * 자카드 유사도를 사용하여 교집합과 합집합의 비율로 관련성을 정량화합니다.
157
153
  */
158
154
  calculateTagMatch(query, tags) {
159
155
  if (tags.length === 0)
@@ -165,25 +161,27 @@ export class SearchRanking {
165
161
  return union.size > 0 ? intersection.size / union.size : 0;
166
162
  }
167
163
  /**
168
- * 타이틀 히트 계산
164
+ * 문서 제목이 검색어와 일치하는 정도를 평가하여 정확한 매칭을 우선 제공합니다.
165
+ * 제목은 문서의 핵심 내용을 요약하므로 높은 관련성 지표로 활용합니다.
169
166
  */
170
167
  calculateTitleHit(query, title) {
171
168
  const queryLower = query.toLowerCase();
172
169
  const titleLower = title.toLowerCase();
173
170
  let score = 0;
174
- // 정확 매치
171
+ // 정확한 일치를 최우선으로 평가하여 가장 관련성 높은 결과를 제공합니다.
175
172
  if (titleLower === queryLower)
176
173
  score += 1.0;
177
- // 접두 매치
174
+ // 부분 일치도 일정한 관련성을 인정하여 유연한 검색을 지원합니다.
178
175
  else if (titleLower.startsWith(queryLower))
179
176
  score += 0.5;
180
- // N-gram 매치
177
+ // N-gram 기반 유사 매칭을 통해 오타나 변형된 검색어도 처리합니다.
181
178
  else if (this.hasNgramMatch(queryLower, titleLower))
182
179
  score += 0.2;
183
180
  return Math.min(1.0, score);
184
181
  }
185
182
  /**
186
- * N-gram 매치 확인
183
+ * 연속된 문자 시퀀스의 일치 여부를 확인하여 부분 문자열 매칭을 지원합니다.
184
+ * 오타나 변형된 검색어에 대해서도 관련 결과를 찾을 수 있도록 합니다.
187
185
  */
188
186
  hasNgramMatch(query, text, n = 3) {
189
187
  if (query.length < n || text.length < n)
@@ -197,7 +195,8 @@ export class SearchRanking {
197
195
  return false;
198
196
  }
199
197
  /**
200
- * N-gram 생성
198
+ * 텍스트를 연속된 N개의 문자로 분할하여 부분 문자열 매칭을 수행합니다.
199
+ * 다양한 길이의 N-gram을 생성하여 유연한 패턴 매칭을 지원합니다.
201
200
  */
202
201
  generateNgrams(text, n) {
203
202
  const ngrams = new Set();
@@ -207,20 +206,21 @@ export class SearchRanking {
207
206
  return ngrams;
208
207
  }
209
208
  /**
210
- * 벡터 내적 계산
209
+ * 벡터의 내적을 계산하여 방향성 유사성을 측정합니다.
210
+ * 코사인 유사도 계산의 기초가 되는 연산을 수행합니다.
211
211
  */
212
212
  dotProduct(a, b) {
213
213
  return a.reduce((sum, val, i) => sum + val * (b[i] || 0), 0);
214
214
  }
215
215
  /**
216
- * 벡터 크기 계산
216
+ * 벡터의 유클리드 노름을 계산하여 코사인 유사도 계산에 필요한 벡터 크기를 구합니다.
217
217
  */
218
218
  magnitude(vector) {
219
219
  return Math.sqrt(vector.reduce((sum, val) => sum + val * val, 0));
220
220
  }
221
221
  /**
222
- * 최근성 점수 계산
223
- * 반감기 기반 지수 감쇠
222
+ * 시간에 따른 기억의 자연스러운 감쇠를 반영하여 최신 정보를 우선 제공합니다.
223
+ * 반감기 기반 지수 감쇠를 사용하여 시간이 지날수록 점수가 감소하도록 설계했습니다.
224
224
  */
225
225
  calculateRecency(createdAt, type) {
226
226
  const ageDays = this.getAgeInDays(createdAt);
@@ -228,7 +228,8 @@ export class SearchRanking {
228
228
  return Math.exp(-Math.log(2) * ageDays / halfLife);
229
229
  }
230
230
  /**
231
- * 중요도 점수 계산
231
+ * 사용자가 명시적으로 설정한 중요도와 고정 여부를 반영하여 우선순위를 결정합니다.
232
+ * 메모리 타입에 따른 기본 중요도를 적용하여 일관된 점수 체계를 유지합니다.
232
233
  */
233
234
  calculateImportance(userImportance, isPinned, type) {
234
235
  const pinnedBoost = isPinned ? 0.2 : 0;
@@ -236,31 +237,33 @@ export class SearchRanking {
236
237
  return Math.max(0, Math.min(1, userImportance + pinnedBoost + typeBoost));
237
238
  }
238
239
  /**
239
- * 사용성 점수 계산 (실제 구현)
240
- * viewCount + citeCount(2배) + editCount(0.5배) 로그 스케일 집계
240
+ * 실제 사용 빈도를 반영하여 자주 참조되는 기억을 우선 제공합니다.
241
+ * 로그 스케일을 사용하여 과도한 사용 빈도가 점수를 지배하지 않도록 균형을 맞춥니다.
242
+ * 인용과 편집에 다른 가중치를 부여하여 사용 패턴의 차이를 반영합니다.
241
243
  */
242
244
  calculateUsage(metrics, batchMin, batchMax) {
243
- // 입력 검증
245
+ // 잘못된 입력으로 인한 오류를 방지하고 안정적인 점수 계산을 보장합니다.
244
246
  if (!metrics)
245
247
  return 0;
246
248
  const { viewCount, citeCount, editCount } = metrics;
247
- // 로그 스케일 집계
249
+ // 로그 스케일을 사용하여 사용 빈도의 차이를 완화하고 균형잡힌 점수 분포를 생성합니다.
248
250
  const rawUsage = Math.log(1 + viewCount) +
249
251
  2 * Math.log(1 + citeCount) +
250
252
  0.5 * Math.log(1 + editCount);
251
- // 모든 값이 0인 경우 기본값 제공
253
+ // 사용 기록이 없는 경우에도 기본 점수를 부여하여 완전히 배제되지 않도록 합니다.
252
254
  if (rawUsage === 0) {
253
- return 0.1; // 기본 사용성 점수
255
+ return 0.1; // 기본 사용성 점수를 제공하여 새로운 기억도 검색 결과에 포함될 수 있도록 합니다.
254
256
  }
255
- // 배치 정규화 (전체 배치에서 정규화)
257
+ // 전체 배치의 최소/최대값을 기준으로 정규화하여 상대적 사용성을 정확히 반영합니다.
256
258
  if (batchMin !== undefined && batchMax !== undefined) {
257
259
  return this.normalize(rawUsage, batchMin, batchMax);
258
260
  }
259
- // 개별 정규화 (기본값)
261
+ // 배치 정보가 없는 경우 개별적으로 정규화하여 안정적인 점수 범위를 보장합니다.
260
262
  return Math.min(1.0, rawUsage / 10);
261
263
  }
262
264
  /**
263
- * 배치 사용성 점수 계산 (여러 메모리에 대해)
265
+ * 여러 메모리의 사용성을 일괄 계산하여 상대적 비교가 가능하도록 합니다.
266
+ * 배치 단위 정규화를 통해 더 정확한 사용성 평가를 수행합니다.
264
267
  */
265
268
  calculateBatchUsage(metricsList) {
266
269
  const rawUsages = metricsList.map(metrics => {
@@ -275,15 +278,17 @@ export class SearchRanking {
275
278
  return { normalized, min, max };
276
279
  }
277
280
  /**
278
- * 정규화 함수
281
+ * 값을 0-1 범위로 정규화하여 다른 점수 지표와 일관된 비교가 가능하도록 합니다.
282
+ * 최소/최대값이 같은 경우를 처리하여 안정적인 점수 계산을 보장합니다.
279
283
  */
280
284
  normalize(value, min, max, epsilon = 1e-6) {
281
285
  if (max === min)
282
- return 0.5; // 모든 값이 같을 때
286
+ return 0.5; // 모든 값이 같을 때 중간값을 반환하여 구분 불가능한 경우를 처리합니다.
283
287
  return (value - min) / (max - min + epsilon);
284
288
  }
285
289
  /**
286
- * 중복 패널티 계산 (MMR 구현)
290
+ * 유사한 내용의 중복 결과를 제거하여 검색 결과의 다양성을 확보합니다.
291
+ * MMR(Maximal Marginal Relevance) 알고리즘을 구현하여 관련성과 다양성의 균형을 맞춥니다.
287
292
  */
288
293
  calculateDuplicationPenalty(candidateContent, selectedContents) {
289
294
  if (selectedContents.length === 0)
@@ -296,7 +301,8 @@ export class SearchRanking {
296
301
  return maxSimilarity;
297
302
  }
298
303
  /**
299
- * 텍스트 유사도 계산 (자카드 유사도)
304
+ * 텍스트 간의 집합 유사도를 계산하여 중복 여부를 판단합니다.
305
+ * 자카드 유사도를 사용하여 단어 집합의 교집합과 합집합 비율로 유사성을 정량화합니다.
300
306
  */
301
307
  calculateTextSimilarity(text1, text2) {
302
308
  const words1 = new Set(text1.toLowerCase().split(/\s+/));
@@ -306,18 +312,15 @@ export class SearchRanking {
306
312
  return union.size > 0 ? intersection.size / union.size : 0;
307
313
  }
308
314
  /**
309
- * 관계 가중치 계산
310
- * 여러 관계의 confidence와 type_boost를 정규화하여 계산합니다.
311
- *
312
- * @param relations 관계 목록 (confidence와 relation_type 포함)
313
- * @param maxRelations 정규화를 위한 최대 관계 수 (기본값: 5)
314
- * @returns 정규화된 관계 가중치 (0-1)
315
+ * 관계 그래프의 신뢰도와 관계 유형을 종합하여 관련성 점수에 반영합니다.
316
+ * 여러 관계의 confidence와 type_boost를 정규화하여 일관된 가중치를 계산합니다.
317
+ * 관계의 개수와 유형에 따라 다른 가중치를 적용하여 정확한 관련성 평가를 수행합니다.
315
318
  */
316
319
  calculateRelationWeight(relations, maxRelations = 5) {
317
320
  if (relations.length === 0) {
318
321
  return 0;
319
322
  }
320
- // 관계 유형별 부스트 가중치 (RELATION_TYPE_BOOST_MAP)
323
+ // 관계 유형에 따라 다른 중요도를 부여하여 인과관계나 의존성 같은 중요한 관계를 우선 평가합니다.
321
324
  const typeBoostMap = {
322
325
  'CAUSES': 1.2,
323
326
  'DEPENDS_ON': 1.1,
@@ -326,22 +329,23 @@ export class SearchRanking {
326
329
  'REFERENCES': 0.8,
327
330
  'BELONGS_TO': 1.0
328
331
  };
329
- // 관계의 가중치 계산: confidence * type_boost
332
+ // 신뢰도와 관계 유형 부스트를 곱하여 종합적인 관계 가중치를 계산합니다.
330
333
  const weightedScores = relations.map(relation => {
331
334
  const typeBoost = typeBoostMap[relation.relation_type] || 1.0;
332
335
  return relation.confidence * typeBoost;
333
336
  });
334
- // 평균 계산
337
+ // 모든 관계의 가중치를 평균내어 종합적인 관계 점수를 산출합니다.
335
338
  const averageScore = weightedScores.reduce((sum, score) => sum + score, 0) / weightedScores.length;
336
- // 정규화: maxRelations로 나누어 0-1 범위로 정규화
337
- // 실제 관계 수가 maxRelations보다 적으면 그대로 사용
339
+ // 관계 수에 따라 정규화하여 관계가 많은 경우 불공정한 우위를 방지합니다.
340
+ // 실제 관계 수가 최대값보다 적으면 그대로 사용하여 정규화 과소평가를 방지합니다.
338
341
  const normalizationFactor = Math.min(relations.length, maxRelations);
339
342
  const normalizedScore = averageScore / normalizationFactor;
340
- // 0-1 범위로 클리핑
343
+ // 점수 범위를 0-1 제한하여 다른 지표와 일관된 비교가 가능하도록 합니다.
341
344
  return Math.max(0, Math.min(1, normalizedScore));
342
345
  }
343
346
  /**
344
- * 하위 호환성을 위한 간단한 관련성 계산 (기존 API)
347
+ * 기존 API와의 호환성을 유지하면서 간단한 관련성 계산을 제공합니다.
348
+ * 임베딩이나 BM25가 없는 경우에도 기본적인 텍스트 매칭을 수행합니다.
345
349
  */
346
350
  calculateRelevanceSimple(query, content, tags = []) {
347
351
  return this.calculateRelevance({
@@ -353,7 +357,8 @@ export class SearchRanking {
353
357
  });
354
358
  }
355
359
  /**
356
- * 하위 호환성을 위한 간단한 사용성 계산 (기존 API)
360
+ * 기존 API와의 호환성을 유지하면서 간단한 사용성 계산을 제공합니다.
361
+ * 마지막 접근 시간만을 사용하여 사용 빈도 데이터가 없는 경우에도 평가가 가능하도록 합니다.
357
362
  */
358
363
  calculateUsageSimple(lastAccessed) {
359
364
  if (!lastAccessed)
@@ -362,7 +367,7 @@ export class SearchRanking {
362
367
  return Math.exp(-daysSinceAccess / 30);
363
368
  }
364
369
  /**
365
- * 나이 계산 (일 단위)
370
+ * 메모리의 생성 시간으로부터 경과된 일수를 계산하여 최근성 평가에 사용합니다.
366
371
  */
367
372
  getAgeInDays(date) {
368
373
  const now = new Date();
@@ -370,7 +375,8 @@ export class SearchRanking {
370
375
  return diffTime / (1000 * 60 * 60 * 24);
371
376
  }
372
377
  /**
373
- * 타입별 반감기 (일 단위)
378
+ * 메모리 타입에 따라 다른 반감기를 설정하여 타입별 특성에 맞는 감쇠 속도를 적용합니다.
379
+ * working 메모리는 빠르게, semantic 메모리는 천천히 감쇠하도록 설계했습니다.
374
380
  */
375
381
  getHalfLife(type) {
376
382
  switch (type) {
@@ -382,7 +388,8 @@ export class SearchRanking {
382
388
  }
383
389
  }
384
390
  /**
385
- * 타입별 부스트 점수
391
+ * 메모리 타입에 따라 기본 중요도를 조정하여 타입별 특성을 반영합니다.
392
+ * semantic 메모리는 높은 중요도를, working 메모리는 낮은 중요도를 부여합니다.
386
393
  */
387
394
  getTypeBoost(type) {
388
395
  switch (type) {
@@ -1 +1 @@
1
- {"version":3,"file":"search-ranking.js","sourceRoot":"","sources":["../../src/algorithms/search-ranking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-ranking.js","sourceRoot":"","sources":["../../src/algorithms/search-ranking.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
- * 간격 반복 알고리즘 구현
3
- * Memento-Goals.md 간격 반복 공식 구현
2
+ * 학습 효율을 극대화하기 위해 최적의 리뷰 시점을 계산합니다.
3
+ * Memento-Goals.md 정의된 검증된 간격 반복 공식을 구현하여 과학적 근거에 기반한 학습 스케줄을 제공합니다.
4
4
  */
5
5
  export interface SpacedRepetitionFeatures {
6
6
  importance: number;
@@ -27,26 +27,28 @@ export declare class SpacedRepetitionAlgorithm {
27
27
  private readonly recallThreshold;
28
28
  constructor(weights?: Partial<SpacedRepetitionWeights>);
29
29
  /**
30
- * 다음 리뷰 간격 계산
31
- * interval = current_interval * (1 + A1*importance + A2*usage + A3*helpful - A4*bad)
30
+ * 학습자의 성과와 피드백을 반영하여 다음 리뷰 간격을 동적으로 조정합니다.
31
+ * 중요도, 사용성, 긍정적 피드백은 간격을 늘리고, 부정적 피드백은 간격을 줄여 학습 효율을 최적화합니다.
32
32
  */
33
33
  calculateNextInterval(currentInterval: number, features: SpacedRepetitionFeatures): number;
34
34
  /**
35
- * 리콜 확률 계산
36
- * P = exp(-time_since_last_review / interval)
35
+ * 지수 감쇠 모델을 사용하여 시간 경과에 따른 기억 유지 확률을 계산합니다.
36
+ * 마지막 리뷰로부터 경과된 시간과 현재 간격을 비교하여 리콜 가능성을 정량화합니다.
37
37
  */
38
38
  calculateRecallProbability(timeSinceLastReview: number, // 일 단위
39
39
  interval: number): number;
40
40
  /**
41
- * 리뷰 필요 여부 판단
41
+ * 계산된 리콜 확률이 임계값 이하인지 확인하여 리뷰가 필요한지 판단합니다.
42
+ * 망각 직전에 복습할 수 있도록 적절한 시점에 리뷰를 권장합니다.
42
43
  */
43
44
  needsReview(timeSinceLastReview: number, interval: number, threshold?: number): boolean;
44
45
  /**
45
- * 리뷰 스케줄 생성
46
+ * 메모리의 특성과 학습 성과를 반영하여 최적의 리뷰 스케줄을 생성합니다.
47
+ * 다음 리뷰 날짜, 간격, 리콜 확률 등을 종합하여 학습 계획을 수립합니다.
46
48
  */
47
49
  createReviewSchedule(memoryId: string, currentInterval: number, lastReviewDate: Date, features: SpacedRepetitionFeatures): ReviewSchedule;
48
50
  /**
49
- * 배치 리뷰 스케줄 생성
51
+ * 여러 메모리에 대해 일괄적으로 리뷰 스케줄을 생성하여 효율적인 학습 계획을 수립합니다.
50
52
  */
51
53
  createBatchReviewSchedules(memories: Array<{
52
54
  id: string;
@@ -58,11 +60,13 @@ export declare class SpacedRepetitionAlgorithm {
58
60
  bad_feedback: number;
59
61
  }>): ReviewSchedule[];
60
62
  /**
61
- * 리뷰 우선순위 계산
63
+ * 리콜 확률과 간격을 종합하여 리뷰 우선순위를 계산합니다.
64
+ * 긴급한 리뷰를 우선 처리하여 학습 효율을 최적화합니다.
62
65
  */
63
66
  calculateReviewPriority(schedule: ReviewSchedule): number;
64
67
  /**
65
- * 리뷰 성과 분석
68
+ * 실제 리콜 성과를 분석하여 알고리즘의 효과를 평가합니다.
69
+ * 간격별 성과를 분석하여 최적의 간격을 찾기 위해
66
70
  */
67
71
  analyzeReviewPerformance(schedules: ReviewSchedule[], actualRecall: Map<string, boolean>): {
68
72
  totalMemories: number;
@@ -71,12 +75,13 @@ export declare class SpacedRepetitionAlgorithm {
71
75
  performanceByInterval: Map<number, number>;
72
76
  };
73
77
  /**
74
- * 최적 간격 추천
78
+ * 학습자의 실제 리콜 성과를 반영하여 최적의 간격을 추천합니다.
79
+ * 성과가 좋으면 간격을 늘리고, 성과가 나쁘면 간격을 줄여 학습 효율을 최적화합니다.
75
80
  */
76
81
  recommendOptimalInterval(currentInterval: number, recallHistory: boolean[], // 최근 리콜 성공/실패 기록
77
82
  features: SpacedRepetitionFeatures): number;
78
83
  /**
79
- * 일수 계산
84
+ * 특정 날짜로부터 경과된 일수를 계산하여 시간 기반 계산에 사용합니다.
80
85
  */
81
86
  private getDaysSince;
82
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spaced-repetition.d.ts","sourceRoot":"","sources":["../../src/algorithms/spaced-repetition.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,IAAI,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAe;gBAEnC,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAUtD;;;OAGG;IACH,qBAAqB,CACnB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,wBAAwB,GACjC,MAAM;IAYT;;;OAGG;IACH,0BAA0B,CACxB,mBAAmB,EAAE,MAAM,EAAE,OAAO;IACpC,QAAQ,EAAE,MAAM,GACf,MAAM;IAIT;;OAEG;IACH,WAAW,CACT,mBAAmB,EAAE,MAAM,EAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAA6B,GACvC,OAAO;IAKV;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,IAAI,EACpB,QAAQ,EAAE,wBAAwB,GACjC,cAAc;IAkBjB;;OAEG;IACH,0BAA0B,CACxB,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,IAAI,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,cAAc,EAAE;IAkBnB;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM;IAQzD;;OAEG;IACH,wBAAwB,CACtB,SAAS,EAAE,cAAc,EAAE,EAC3B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC;QACD,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;IAsCD;;OAEG;IACH,wBAAwB,CACtB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,OAAO,EAAE,EAAE,iBAAiB;IAC3C,QAAQ,EAAE,wBAAwB,GACjC,MAAM;IAqBT;;OAEG;IACH,OAAO,CAAC,YAAY;CAKrB"}
1
+ {"version":3,"file":"spaced-repetition.d.ts","sourceRoot":"","sources":["../../src/algorithms/spaced-repetition.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,IAAI,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAe;gBAEnC,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAUtD;;;OAGG;IACH,qBAAqB,CACnB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,wBAAwB,GACjC,MAAM;IAYT;;;OAGG;IACH,0BAA0B,CACxB,mBAAmB,EAAE,MAAM,EAAE,OAAO;IACpC,QAAQ,EAAE,MAAM,GACf,MAAM;IAIT;;;OAGG;IACH,WAAW,CACT,mBAAmB,EAAE,MAAM,EAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAA6B,GACvC,OAAO;IAKV;;;OAGG;IACH,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,IAAI,EACpB,QAAQ,EAAE,wBAAwB,GACjC,cAAc;IAkBjB;;OAEG;IACH,0BAA0B,CACxB,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,IAAI,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,cAAc,EAAE;IAkBnB;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM;IAQzD;;;OAGG;IACH,wBAAwB,CACtB,SAAS,EAAE,cAAc,EAAE,EAC3B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC;QACD,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;IAsCD;;;OAGG;IACH,wBAAwB,CACtB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,OAAO,EAAE,EAAE,iBAAiB;IAC3C,QAAQ,EAAE,wBAAwB,GACjC,MAAM;IAqBT;;OAEG;IACH,OAAO,CAAC,YAAY;CAKrB"}