memento-mcp-server 1.6.0 → 1.7.1

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 (560) hide show
  1. package/INSTALL.en.md +303 -303
  2. package/INSTALL.md +303 -303
  3. package/README.en.md +331 -330
  4. package/README.md +432 -432
  5. package/dist/algorithms/hybrid-search-engine.d.ts +114 -44
  6. package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -1
  7. package/dist/algorithms/hybrid-search-engine.js +261 -235
  8. package/dist/algorithms/hybrid-search-engine.js.map +1 -1
  9. package/dist/algorithms/search-engine.d.ts +2 -14
  10. package/dist/algorithms/search-engine.d.ts.map +1 -1
  11. package/dist/algorithms/search-engine.js +43 -35
  12. package/dist/algorithms/search-engine.js.map +1 -1
  13. package/dist/algorithms/vector-search-engine-migration.d.ts +67 -0
  14. package/dist/algorithms/vector-search-engine-migration.d.ts.map +1 -0
  15. package/dist/algorithms/vector-search-engine-migration.js +196 -0
  16. package/dist/algorithms/vector-search-engine-migration.js.map +1 -0
  17. package/dist/algorithms/vector-search-engine-refactored.d.ts +56 -0
  18. package/dist/algorithms/vector-search-engine-refactored.d.ts.map +1 -0
  19. package/dist/algorithms/vector-search-engine-refactored.js +101 -0
  20. package/dist/algorithms/vector-search-engine-refactored.js.map +1 -0
  21. package/dist/algorithms/vector-search-engine.d.ts +9 -2
  22. package/dist/algorithms/vector-search-engine.d.ts.map +1 -1
  23. package/dist/algorithms/vector-search-engine.js +245 -121
  24. package/dist/algorithms/vector-search-engine.js.map +1 -1
  25. package/dist/client/index.d.ts.map +1 -1
  26. package/dist/client/index.js +34 -11
  27. package/dist/client/index.js.map +1 -1
  28. package/dist/config/environment.d.ts +26 -0
  29. package/dist/config/environment.d.ts.map +1 -0
  30. package/dist/config/environment.js +103 -0
  31. package/dist/config/environment.js.map +1 -0
  32. package/dist/config/index.d.ts.map +1 -1
  33. package/dist/config/index.js +29 -50
  34. package/dist/config/index.js.map +1 -1
  35. package/dist/config/vector-search.config.d.ts +25 -0
  36. package/dist/config/vector-search.config.d.ts.map +1 -0
  37. package/dist/config/vector-search.config.js +40 -0
  38. package/dist/config/vector-search.config.js.map +1 -0
  39. package/dist/database/init.d.ts.map +1 -1
  40. package/dist/database/init.js +154 -17
  41. package/dist/database/init.js.map +1 -1
  42. package/dist/database/migrate.d.ts +2 -1
  43. package/dist/database/migrate.d.ts.map +1 -1
  44. package/dist/database/migrate.js +191 -18
  45. package/dist/database/migrate.js.map +1 -1
  46. package/dist/database/schema.sql +234 -159
  47. package/dist/factories/hybrid-search.factory.d.ts +20 -0
  48. package/dist/factories/hybrid-search.factory.d.ts.map +1 -0
  49. package/dist/factories/hybrid-search.factory.js +57 -0
  50. package/dist/factories/hybrid-search.factory.js.map +1 -0
  51. package/dist/factories/spaced-repetition.factory.d.ts +48 -0
  52. package/dist/factories/spaced-repetition.factory.d.ts.map +1 -0
  53. package/dist/factories/spaced-repetition.factory.js +187 -0
  54. package/dist/factories/spaced-repetition.factory.js.map +1 -0
  55. package/dist/factories/vector-search.factory.d.ts +25 -0
  56. package/dist/factories/vector-search.factory.d.ts.map +1 -0
  57. package/dist/factories/vector-search.factory.js +47 -0
  58. package/dist/factories/vector-search.factory.js.map +1 -0
  59. package/dist/interfaces/database.interface.d.ts +36 -0
  60. package/dist/interfaces/database.interface.d.ts.map +1 -0
  61. package/dist/interfaces/database.interface.js +6 -0
  62. package/dist/interfaces/database.interface.js.map +1 -0
  63. package/dist/interfaces/spaced-repetition.interface.d.ts +63 -0
  64. package/dist/interfaces/spaced-repetition.interface.d.ts.map +1 -0
  65. package/dist/interfaces/spaced-repetition.interface.js +6 -0
  66. package/dist/interfaces/spaced-repetition.interface.js.map +1 -0
  67. package/dist/repositories/vector-performance.repository.d.ts +25 -0
  68. package/dist/repositories/vector-performance.repository.d.ts.map +1 -0
  69. package/dist/repositories/vector-performance.repository.js +134 -0
  70. package/dist/repositories/vector-performance.repository.js.map +1 -0
  71. package/dist/repositories/vector-search.repository.d.ts +43 -0
  72. package/dist/repositories/vector-search.repository.d.ts.map +1 -0
  73. package/dist/repositories/vector-search.repository.js +377 -0
  74. package/dist/repositories/vector-search.repository.js.map +1 -0
  75. package/dist/server/http-server.d.ts.map +1 -1
  76. package/dist/server/http-server.js +25 -24
  77. package/dist/server/http-server.js.map +1 -1
  78. package/dist/server/index.d.ts +1 -0
  79. package/dist/server/index.d.ts.map +1 -1
  80. package/dist/server/index.js +3 -1
  81. package/dist/server/index.js.map +1 -1
  82. package/dist/services/alert-notification-service.d.ts +16 -0
  83. package/dist/services/alert-notification-service.d.ts.map +1 -0
  84. package/dist/services/alert-notification-service.js +44 -0
  85. package/dist/services/alert-notification-service.js.map +1 -0
  86. package/dist/services/async-optimizer.d.ts +62 -8
  87. package/dist/services/async-optimizer.d.ts.map +1 -1
  88. package/dist/services/async-optimizer.js +137 -8
  89. package/dist/services/async-optimizer.js.map +1 -1
  90. package/dist/services/batch-scheduler.d.ts +6 -0
  91. package/dist/services/batch-scheduler.d.ts.map +1 -1
  92. package/dist/services/batch-scheduler.js +59 -19
  93. package/dist/services/batch-scheduler.js.map +1 -1
  94. package/dist/services/cache-service.d.ts +32 -0
  95. package/dist/services/cache-service.d.ts.map +1 -1
  96. package/dist/services/cache-service.js +81 -6
  97. package/dist/services/cache-service.js.map +1 -1
  98. package/dist/services/database-optimizer.js +63 -63
  99. package/dist/services/database-optimizer.js.map +1 -1
  100. package/dist/services/embedding-migration-service.d.ts +24 -0
  101. package/dist/services/embedding-migration-service.d.ts.map +1 -0
  102. package/dist/services/embedding-migration-service.js +360 -0
  103. package/dist/services/embedding-migration-service.js.map +1 -0
  104. package/dist/services/embedding-provider-factory.d.ts +12 -5
  105. package/dist/services/embedding-provider-factory.d.ts.map +1 -1
  106. package/dist/services/embedding-provider-factory.js +107 -26
  107. package/dist/services/embedding-provider-factory.js.map +1 -1
  108. package/dist/services/forgetting-policy-service.js +17 -17
  109. package/dist/services/gemini-embedding-service.d.ts +1 -1
  110. package/dist/services/gemini-embedding-service.d.ts.map +1 -1
  111. package/dist/services/gemini-embedding-service.js +25 -18
  112. package/dist/services/gemini-embedding-service.js.map +1 -1
  113. package/dist/services/memory-embedding-service.d.ts +8 -0
  114. package/dist/services/memory-embedding-service.d.ts.map +1 -1
  115. package/dist/services/memory-embedding-service.js +180 -71
  116. package/dist/services/memory-embedding-service.js.map +1 -1
  117. package/dist/services/migration-history-service.d.ts +14 -0
  118. package/dist/services/migration-history-service.d.ts.map +1 -0
  119. package/dist/services/migration-history-service.js +270 -0
  120. package/dist/services/migration-history-service.js.map +1 -0
  121. package/dist/services/migration-monitor-service.d.ts +24 -0
  122. package/dist/services/migration-monitor-service.d.ts.map +1 -0
  123. package/dist/services/migration-monitor-service.js +93 -0
  124. package/dist/services/migration-monitor-service.js.map +1 -0
  125. package/dist/services/model-availability-service.d.ts +22 -0
  126. package/dist/services/model-availability-service.d.ts.map +1 -0
  127. package/dist/services/model-availability-service.js +140 -0
  128. package/dist/services/model-availability-service.js.map +1 -0
  129. package/dist/services/openai-embedding-service.d.ts +36 -0
  130. package/dist/services/openai-embedding-service.d.ts.map +1 -0
  131. package/dist/services/openai-embedding-service.js +192 -0
  132. package/dist/services/openai-embedding-service.js.map +1 -0
  133. package/dist/services/performance-monitor.d.ts +154 -10
  134. package/dist/services/performance-monitor.d.ts.map +1 -1
  135. package/dist/services/performance-monitor.js +446 -60
  136. package/dist/services/performance-monitor.js.map +1 -1
  137. package/dist/services/spaced-repetition/interval-calculation.service.d.ts +38 -0
  138. package/dist/services/spaced-repetition/interval-calculation.service.d.ts.map +1 -0
  139. package/dist/services/spaced-repetition/interval-calculation.service.js +105 -0
  140. package/dist/services/spaced-repetition/interval-calculation.service.js.map +1 -0
  141. package/dist/services/spaced-repetition/optimal-interval.service.d.ts +56 -0
  142. package/dist/services/spaced-repetition/optimal-interval.service.d.ts.map +1 -0
  143. package/dist/services/spaced-repetition/optimal-interval.service.js +163 -0
  144. package/dist/services/spaced-repetition/optimal-interval.service.js.map +1 -0
  145. package/dist/services/spaced-repetition/performance-analysis.service.d.ts +48 -0
  146. package/dist/services/spaced-repetition/performance-analysis.service.d.ts.map +1 -0
  147. package/dist/services/spaced-repetition/performance-analysis.service.js +174 -0
  148. package/dist/services/spaced-repetition/performance-analysis.service.js.map +1 -0
  149. package/dist/services/spaced-repetition/priority-calculation.service.d.ts +53 -0
  150. package/dist/services/spaced-repetition/priority-calculation.service.d.ts.map +1 -0
  151. package/dist/services/spaced-repetition/priority-calculation.service.js +161 -0
  152. package/dist/services/spaced-repetition/priority-calculation.service.js.map +1 -0
  153. package/dist/services/spaced-repetition/recall-probability.service.d.ts +36 -0
  154. package/dist/services/spaced-repetition/recall-probability.service.d.ts.map +1 -0
  155. package/dist/services/spaced-repetition/recall-probability.service.js +88 -0
  156. package/dist/services/spaced-repetition/recall-probability.service.js.map +1 -0
  157. package/dist/services/spaced-repetition/review-scheduling.service.d.ts +43 -0
  158. package/dist/services/spaced-repetition/review-scheduling.service.d.ts.map +1 -0
  159. package/dist/services/spaced-repetition/review-scheduling.service.js +130 -0
  160. package/dist/services/spaced-repetition/review-scheduling.service.js.map +1 -0
  161. package/dist/services/spaced-repetition/spaced-repetition-container.d.ts +69 -0
  162. package/dist/services/spaced-repetition/spaced-repetition-container.d.ts.map +1 -0
  163. package/dist/services/spaced-repetition/spaced-repetition-container.js +136 -0
  164. package/dist/services/spaced-repetition/spaced-repetition-container.js.map +1 -0
  165. package/dist/services/unified-embedding-service.d.ts +3 -0
  166. package/dist/services/unified-embedding-service.d.ts.map +1 -1
  167. package/dist/services/unified-embedding-service.js +58 -62
  168. package/dist/services/unified-embedding-service.js.map +1 -1
  169. package/dist/services/vector-compatibility-service.d.ts +68 -0
  170. package/dist/services/vector-compatibility-service.d.ts.map +1 -0
  171. package/dist/services/vector-compatibility-service.js +373 -0
  172. package/dist/services/vector-compatibility-service.js.map +1 -0
  173. package/dist/services/vector-search/vector-index-manager.d.ts +27 -0
  174. package/dist/services/vector-search/vector-index-manager.d.ts.map +1 -0
  175. package/dist/services/vector-search/vector-index-manager.js +66 -0
  176. package/dist/services/vector-search/vector-index-manager.js.map +1 -0
  177. package/dist/services/vector-search/vector-performance-tester.d.ts +30 -0
  178. package/dist/services/vector-search/vector-performance-tester.d.ts.map +1 -0
  179. package/dist/services/vector-search/vector-performance-tester.js +87 -0
  180. package/dist/services/vector-search/vector-performance-tester.js.map +1 -0
  181. package/dist/services/vector-search/vector-search-container.d.ts +41 -0
  182. package/dist/services/vector-search/vector-search-container.d.ts.map +1 -0
  183. package/dist/services/vector-search/vector-search-container.js +74 -0
  184. package/dist/services/vector-search/vector-search-container.js.map +1 -0
  185. package/dist/services/vector-search/vector-search-facade.d.ts +63 -0
  186. package/dist/services/vector-search/vector-search-facade.d.ts.map +1 -0
  187. package/dist/services/vector-search/vector-search-facade.js +91 -0
  188. package/dist/services/vector-search/vector-search-facade.js.map +1 -0
  189. package/dist/services/vector-search/vector-search-result-normalizer.d.ts +6 -0
  190. package/dist/services/vector-search/vector-search-result-normalizer.d.ts.map +1 -0
  191. package/dist/services/vector-search/vector-search-result-normalizer.js +65 -0
  192. package/dist/services/vector-search/vector-search-result-normalizer.js.map +1 -0
  193. package/dist/services/vector-search/vector-search.service.d.ts +33 -0
  194. package/dist/services/vector-search/vector-search.service.d.ts.map +1 -0
  195. package/dist/services/vector-search/vector-search.service.js +149 -0
  196. package/dist/services/vector-search/vector-search.service.js.map +1 -0
  197. package/dist/tools/forget-tool.js +14 -14
  198. package/dist/tools/pin-tool.js +14 -14
  199. package/dist/tools/unpin-tool.js +21 -21
  200. package/dist/types/alerts.types.d.ts +26 -0
  201. package/dist/types/alerts.types.d.ts.map +1 -0
  202. package/dist/types/alerts.types.js +2 -0
  203. package/dist/types/alerts.types.js.map +1 -0
  204. package/dist/types/embedding-provider-monitoring.types.d.ts +24 -0
  205. package/dist/types/embedding-provider-monitoring.types.d.ts.map +1 -0
  206. package/dist/types/embedding-provider-monitoring.types.js +2 -0
  207. package/dist/types/embedding-provider-monitoring.types.js.map +1 -0
  208. package/dist/types/embedding.types.d.ts +36 -1
  209. package/dist/types/embedding.types.d.ts.map +1 -1
  210. package/dist/types/migration.types.d.ts +131 -0
  211. package/dist/types/migration.types.d.ts.map +1 -0
  212. package/dist/types/migration.types.js +6 -0
  213. package/dist/types/migration.types.js.map +1 -0
  214. package/dist/types/spaced-repetition.types.d.ts +61 -0
  215. package/dist/types/spaced-repetition.types.d.ts.map +1 -0
  216. package/dist/types/spaced-repetition.types.js +6 -0
  217. package/dist/types/spaced-repetition.types.js.map +1 -0
  218. package/dist/types/vector-search.types.d.ts +96 -0
  219. package/dist/types/vector-search.types.d.ts.map +1 -0
  220. package/dist/types/vector-search.types.js +2 -0
  221. package/dist/types/vector-search.types.js.map +1 -0
  222. package/dist/utils/configuration-validator.d.ts +23 -0
  223. package/dist/utils/configuration-validator.d.ts.map +1 -0
  224. package/dist/utils/configuration-validator.js +102 -0
  225. package/dist/utils/configuration-validator.js.map +1 -0
  226. package/dist/utils/database.d.ts.map +1 -1
  227. package/dist/utils/database.js +101 -95
  228. package/dist/utils/database.js.map +1 -1
  229. package/dist/utils/environment-check.d.ts +8 -0
  230. package/dist/utils/environment-check.d.ts.map +1 -0
  231. package/dist/utils/environment-check.js +25 -0
  232. package/dist/utils/environment-check.js.map +1 -0
  233. package/dist/utils/logger.d.ts +8 -0
  234. package/dist/utils/logger.d.ts.map +1 -0
  235. package/dist/utils/logger.js +33 -0
  236. package/dist/utils/logger.js.map +1 -0
  237. package/package.json +139 -125
  238. package/scripts/auto-setup.js +233 -233
  239. package/scripts/backup-daily.bat +28 -28
  240. package/scripts/backup-embeddings.js +108 -108
  241. package/scripts/check-db-integrity.js +93 -93
  242. package/scripts/debug-embeddings.js +184 -184
  243. package/scripts/direct-sql-migration.sql +36 -36
  244. package/scripts/docker-migration.sh +105 -105
  245. package/scripts/fix-migration.js +93 -93
  246. package/scripts/fix-vector-dimensions.js +206 -206
  247. package/scripts/migrate-embedding-data.js +307 -307
  248. package/scripts/regenerate-embeddings.js +144 -144
  249. package/scripts/restore-legacy.ps1 +60 -60
  250. package/scripts/run-migration.js +122 -122
  251. package/scripts/safe-migration.js +150 -150
  252. package/scripts/simple-migrate.js +41 -41
  253. package/scripts/simple-update.js +123 -123
  254. package/src/database/schema.sql +234 -159
  255. package/.cursor/rules/cache-management.mdc +0 -171
  256. package/.cursor/rules/database-schema.mdc +0 -344
  257. package/.cursor/rules/deployment.mdc +0 -596
  258. package/.cursor/rules/error-logging.mdc +0 -298
  259. package/.cursor/rules/forgetting-algorithms.mdc +0 -426
  260. package/.cursor/rules/http-server.mdc +0 -432
  261. package/.cursor/rules/hybrid-search.mdc +0 -424
  262. package/.cursor/rules/implementation.mdc +0 -369
  263. package/.cursor/rules/lightweight-embedding.mdc +0 -178
  264. package/.cursor/rules/mcp-client-development.mdc +0 -0
  265. package/.cursor/rules/mcp-server-development.mdc +0 -0
  266. package/.cursor/rules/mcp-tools-architecture.mdc +0 -205
  267. package/.cursor/rules/memento-memory-rule.mdc +0 -8
  268. package/.cursor/rules/memento-project-overview.mdc +0 -0
  269. package/.cursor/rules/memory-algorithms.mdc +0 -502
  270. package/.cursor/rules/monitoring.mdc +0 -622
  271. package/.cursor/rules/performance-alerts.mdc +0 -537
  272. package/.cursor/rules/performance-monitoring.mdc +0 -345
  273. package/.cursor/rules/performance-optimization.mdc +0 -563
  274. package/.cursor/rules/project-structure.mdc +0 -310
  275. package/.cursor/rules/testing.mdc +0 -473
  276. package/.dockerignore +0 -15
  277. package/.eslintrc.json +0 -34
  278. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -51
  279. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -45
  280. package/.github/ISSUE_TEMPLATE/question.md +0 -31
  281. package/.github/PULL_REQUEST_TEMPLATE.md +0 -97
  282. package/AGENTS.md +0 -28
  283. package/CHANGELOG.md +0 -416
  284. package/CODE_OF_CONDUCT.md +0 -62
  285. package/CONTRIBUTING.md +0 -165
  286. package/DOCKER_SETUP_GUIDE.md +0 -84
  287. package/Dockerfile +0 -90
  288. package/backup/legacy-removal-20250930-201816/http-server-legacy.ts +0 -1068
  289. package/backup/legacy-removal-20250930-201816/rollback-to-legacy.ps1 +0 -46
  290. package/backup/legacy-removal-20250930-201816/rollback-to-legacy.sh +0 -48
  291. package/dist/server/index-backup.d.ts +0 -5
  292. package/dist/server/index-backup.d.ts.map +0 -1
  293. package/dist/server/index-backup.js +0 -793
  294. package/dist/server/index-backup.js.map +0 -1
  295. package/dist/server/index-refactored.d.ts +0 -6
  296. package/dist/server/index-refactored.d.ts.map +0 -1
  297. package/dist/server/index-refactored.js +0 -206
  298. package/dist/server/index-refactored.js.map +0 -1
  299. package/dist/services/performance-monitoring-integration.d.ts +0 -77
  300. package/dist/services/performance-monitoring-integration.d.ts.map +0 -1
  301. package/dist/services/performance-monitoring-integration.js +0 -177
  302. package/dist/services/performance-monitoring-integration.js.map +0 -1
  303. package/dist/test/debug-http-v2.d.ts +0 -5
  304. package/dist/test/debug-http-v2.d.ts.map +0 -1
  305. package/dist/test/debug-http-v2.js +0 -28
  306. package/dist/test/debug-http-v2.js.map +0 -1
  307. package/dist/test/performance-benchmark.d.ts +0 -57
  308. package/dist/test/performance-benchmark.d.ts.map +0 -1
  309. package/dist/test/performance-benchmark.js +0 -427
  310. package/dist/test/performance-benchmark.js.map +0 -1
  311. package/dist/test/test-alerts-direct.d.ts +0 -7
  312. package/dist/test/test-alerts-direct.d.ts.map +0 -1
  313. package/dist/test/test-alerts-direct.js +0 -101
  314. package/dist/test/test-alerts-direct.js.map +0 -1
  315. package/dist/test/test-batch-scheduler.d.ts +0 -2
  316. package/dist/test/test-batch-scheduler.d.ts.map +0 -1
  317. package/dist/test/test-batch-scheduler.js +0 -156
  318. package/dist/test/test-batch-scheduler.js.map +0 -1
  319. package/dist/test/test-client.d.ts +0 -5
  320. package/dist/test/test-client.d.ts.map +0 -1
  321. package/dist/test/test-client.js +0 -86
  322. package/dist/test/test-client.js.map +0 -1
  323. package/dist/test/test-embedding.d.ts +0 -6
  324. package/dist/test/test-embedding.d.ts.map +0 -1
  325. package/dist/test/test-embedding.js +0 -142
  326. package/dist/test/test-embedding.js.map +0 -1
  327. package/dist/test/test-error-logging.d.ts +0 -7
  328. package/dist/test/test-error-logging.d.ts.map +0 -1
  329. package/dist/test/test-error-logging.js +0 -105
  330. package/dist/test/test-error-logging.js.map +0 -1
  331. package/dist/test/test-forgetting.d.ts +0 -6
  332. package/dist/test/test-forgetting.d.ts.map +0 -1
  333. package/dist/test/test-forgetting.js +0 -154
  334. package/dist/test/test-forgetting.js.map +0 -1
  335. package/dist/test/test-gemini-embedding.d.ts +0 -7
  336. package/dist/test/test-gemini-embedding.d.ts.map +0 -1
  337. package/dist/test/test-gemini-embedding.js +0 -134
  338. package/dist/test/test-gemini-embedding.js.map +0 -1
  339. package/dist/test/test-http-server-v2-simple.d.ts +0 -6
  340. package/dist/test/test-http-server-v2-simple.d.ts.map +0 -1
  341. package/dist/test/test-http-server-v2-simple.js +0 -131
  342. package/dist/test/test-http-server-v2-simple.js.map +0 -1
  343. package/dist/test/test-http-server-v2.d.ts +0 -7
  344. package/dist/test/test-http-server-v2.d.ts.map +0 -1
  345. package/dist/test/test-http-server-v2.js +0 -529
  346. package/dist/test/test-http-server-v2.js.map +0 -1
  347. package/dist/test/test-lightweight-embedding.d.ts +0 -6
  348. package/dist/test/test-lightweight-embedding.d.ts.map +0 -1
  349. package/dist/test/test-lightweight-embedding.js +0 -189
  350. package/dist/test/test-lightweight-embedding.js.map +0 -1
  351. package/dist/test/test-m1-completion.d.ts +0 -7
  352. package/dist/test/test-m1-completion.d.ts.map +0 -1
  353. package/dist/test/test-m1-completion.js +0 -124
  354. package/dist/test/test-m1-completion.js.map +0 -1
  355. package/dist/test/test-memory-injection-prompt.d.ts +0 -2
  356. package/dist/test/test-memory-injection-prompt.d.ts.map +0 -1
  357. package/dist/test/test-memory-injection-prompt.js +0 -299
  358. package/dist/test/test-memory-injection-prompt.js.map +0 -1
  359. package/dist/test/test-performance-alerts.d.ts +0 -7
  360. package/dist/test/test-performance-alerts.d.ts.map +0 -1
  361. package/dist/test/test-performance-alerts.js +0 -109
  362. package/dist/test/test-performance-alerts.js.map +0 -1
  363. package/dist/test/test-performance-monitor.d.ts +0 -2
  364. package/dist/test/test-performance-monitor.d.ts.map +0 -1
  365. package/dist/test/test-performance-monitor.js +0 -182
  366. package/dist/test/test-performance-monitor.js.map +0 -1
  367. package/dist/test/test-performance-monitoring.d.ts +0 -6
  368. package/dist/test/test-performance-monitoring.d.ts.map +0 -1
  369. package/dist/test/test-performance-monitoring.js +0 -156
  370. package/dist/test/test-performance-monitoring.js.map +0 -1
  371. package/dist/test/test-search.d.ts +0 -5
  372. package/dist/test/test-search.d.ts.map +0 -1
  373. package/dist/test/test-search.js +0 -141
  374. package/dist/test/test-search.js.map +0 -1
  375. package/dist/test/test-simple-alerts.d.ts +0 -6
  376. package/dist/test/test-simple-alerts.d.ts.map +0 -1
  377. package/dist/test/test-simple-alerts.js +0 -106
  378. package/dist/test/test-simple-alerts.js.map +0 -1
  379. package/dist/test/test-vector-search-engine.d.ts +0 -2
  380. package/dist/test/test-vector-search-engine.d.ts.map +0 -1
  381. package/dist/test/test-vector-search-engine.js +0 -225
  382. package/dist/test/test-vector-search-engine.js.map +0 -1
  383. package/docker-compose.dev.yml +0 -50
  384. package/docker-compose.prod.yml +0 -77
  385. package/docker-compose.yml +0 -43
  386. package/docs/en/Memento-Goals.md +0 -217
  387. package/docs/en/Memento-M1-DetailSpecs.md +0 -130
  388. package/docs/en/Memento-Milestones.md +0 -135
  389. package/docs/en/Search-Ranking-Memory-Decay-Formulas.md +0 -177
  390. package/docs/en/api-reference.md +0 -658
  391. package/docs/en/architecture.md +0 -1302
  392. package/docs/en/developer-guide.md +0 -1005
  393. package/docs/en/user-manual.md +0 -595
  394. package/docs/ko/Memento-Goals.md +0 -217
  395. package/docs/ko/Memento-M1-DetailSpecs.md +0 -130
  396. package/docs/ko/Memento-Milestones.md +0 -134
  397. package/docs/ko/Search-Ranking-Memory-Decay-Formulas.md +0 -177
  398. package/docs/ko/api-reference.md +0 -658
  399. package/docs/ko/architecture.md +0 -1302
  400. package/docs/ko/developer-guide.md +0 -1006
  401. package/docs/ko/embedding-api-reference.md +0 -122
  402. package/docs/ko/embedding-configuration.md +0 -62
  403. package/docs/ko/embedding-performance-benchmark.md +0 -62
  404. package/docs/ko/embedding-service-guide.md +0 -314
  405. package/docs/ko/user-manual.md +0 -595
  406. package/env.example +0 -49
  407. package/install.sh +0 -191
  408. package/mcp-http-client.js +0 -218
  409. package/mcp.json +0 -0
  410. package/packages/mcp-client/docs/API-REFERENCE.md +0 -560
  411. package/packages/mcp-client/docs/BEST-PRACTICES.md +0 -564
  412. package/packages/mcp-client/docs/MIGRATION-GUIDE.md +0 -344
  413. package/packages/mcp-client/docs/PERFORMANCE-GUIDE.md +0 -476
  414. package/packages/mcp-client/docs/TROUBLESHOOTING.md +0 -564
  415. package/packages/mcp-client/package-lock.json +0 -907
  416. package/packages/mcp-client/package.json +0 -58
  417. package/packages/mcp-client/performance-optimizer.js +0 -428
  418. package/packages/mcp-client/test-basic.js +0 -65
  419. package/packages/mcp-client/test-integration.js +0 -366
  420. package/src/algorithms/forgetting-algorithm.spec.ts +0 -538
  421. package/src/algorithms/forgetting-algorithm.ts +0 -243
  422. package/src/algorithms/hybrid-search-engine.spec.ts +0 -484
  423. package/src/algorithms/hybrid-search-engine.ts +0 -489
  424. package/src/algorithms/search-engine.spec.ts +0 -429
  425. package/src/algorithms/search-engine.ts +0 -392
  426. package/src/algorithms/search-ranking.spec.ts +0 -293
  427. package/src/algorithms/search-ranking.ts +0 -407
  428. package/src/algorithms/spaced-repetition.spec.ts +0 -510
  429. package/src/algorithms/spaced-repetition.ts +0 -238
  430. package/src/algorithms/vector-search-engine.ts +0 -505
  431. package/src/client/index.spec.ts +0 -427
  432. package/src/client/index.ts +0 -222
  433. package/src/config/index.spec.ts +0 -339
  434. package/src/config/index.ts +0 -106
  435. package/src/database/init.spec.ts +0 -239
  436. package/src/database/init.ts +0 -130
  437. package/src/database/migrate.spec.ts +0 -293
  438. package/src/database/migrate.ts +0 -94
  439. package/src/database/migrations/001_add_embedding_metadata.sql +0 -29
  440. package/src/npm-client/context-injector.spec.ts +0 -335
  441. package/src/npm-client/context-injector.ts +0 -412
  442. package/src/npm-client/index.spec.ts +0 -108
  443. package/src/npm-client/index.ts +0 -96
  444. package/src/npm-client/memento-client.spec.ts +0 -549
  445. package/src/npm-client/memento-client.ts +0 -501
  446. package/src/npm-client/memory-manager.spec.ts +0 -374
  447. package/src/npm-client/memory-manager.ts +0 -414
  448. package/src/npm-client/types.spec.ts +0 -427
  449. package/src/npm-client/types.ts +0 -296
  450. package/src/npm-client/utils.spec.ts +0 -355
  451. package/src/npm-client/utils.ts +0 -423
  452. package/src/scripts/copy-assets.js +0 -37
  453. package/src/server/http-server.spec.ts +0 -648
  454. package/src/server/http-server.ts +0 -1030
  455. package/src/server/index-backup.ts +0 -875
  456. package/src/server/index-refactored.ts +0 -237
  457. package/src/server/index.spec.ts +0 -281
  458. package/src/server/index.ts +0 -347
  459. package/src/server/simple-mcp-server.spec.ts +0 -207
  460. package/src/server/simple-mcp-server.ts +0 -173
  461. package/src/services/async-optimizer.spec.ts +0 -569
  462. package/src/services/async-optimizer.ts +0 -484
  463. package/src/services/batch-scheduler.ts +0 -759
  464. package/src/services/cache-service.spec.ts +0 -372
  465. package/src/services/cache-service.ts +0 -434
  466. package/src/services/database-optimizer.spec.ts +0 -344
  467. package/src/services/database-optimizer.ts +0 -450
  468. package/src/services/embedding-provider-factory.ts +0 -173
  469. package/src/services/embedding-service.spec.ts +0 -342
  470. package/src/services/embedding-service.ts +0 -333
  471. package/src/services/error-logging-service.spec.ts +0 -416
  472. package/src/services/error-logging-service.ts +0 -383
  473. package/src/services/forgetting-policy-service.spec.ts +0 -140
  474. package/src/services/forgetting-policy-service.ts +0 -334
  475. package/src/services/gemini-embedding-service.spec.ts +0 -463
  476. package/src/services/gemini-embedding-service.ts +0 -283
  477. package/src/services/lightweight-embedding-service.spec.ts +0 -458
  478. package/src/services/lightweight-embedding-service.ts +0 -324
  479. package/src/services/memory-embedding-service.spec.ts +0 -417
  480. package/src/services/memory-embedding-service.ts +0 -289
  481. package/src/services/minilm-embedding-service.spec.ts +0 -104
  482. package/src/services/minilm-embedding-service.ts +0 -262
  483. package/src/services/performance-alert-service.spec.ts +0 -517
  484. package/src/services/performance-alert-service.ts +0 -477
  485. package/src/services/performance-monitor.spec.ts +0 -401
  486. package/src/services/performance-monitor.ts +0 -532
  487. package/src/services/performance-monitoring-integration.spec.ts +0 -478
  488. package/src/services/performance-monitoring-integration.ts.bak +0 -276
  489. package/src/services/unified-embedding-service.spec.ts +0 -224
  490. package/src/services/unified-embedding-service.ts +0 -255
  491. package/src/test/debug-http-v2.ts +0 -30
  492. package/src/test/embedding-integration-test.spec.ts +0 -295
  493. package/src/test/embedding-integration-test.ts +0 -295
  494. package/src/test/embedding-performance-benchmark.spec.ts +0 -354
  495. package/src/test/embedding-performance-benchmark.ts +0 -312
  496. package/src/test/performance-benchmark.ts +0 -565
  497. package/src/test/test-alerts-direct.ts +0 -136
  498. package/src/test/test-batch-scheduler-simple.spec.ts +0 -122
  499. package/src/test/test-batch-scheduler.spec.ts +0 -453
  500. package/src/test/test-batch-scheduler.ts +0 -182
  501. package/src/test/test-client.ts +0 -97
  502. package/src/test/test-embedding.ts +0 -153
  503. package/src/test/test-error-handling.spec.ts +0 -575
  504. package/src/test/test-error-logging.ts +0 -117
  505. package/src/test/test-forgetting.ts +0 -162
  506. package/src/test/test-gemini-embedding.ts +0 -159
  507. package/src/test/test-http-server-v2-simple.ts +0 -147
  508. package/src/test/test-http-server-v2.ts +0 -586
  509. package/src/test/test-hybrid-search-engine.spec.ts +0 -521
  510. package/src/test/test-integration-fixed.spec.ts +0 -612
  511. package/src/test/test-integration.spec.ts +0 -463
  512. package/src/test/test-lightweight-embedding.ts +0 -208
  513. package/src/test/test-m1-completion.spec.ts +0 -614
  514. package/src/test/test-m1-completion.ts +0 -141
  515. package/src/test/test-m1-integration.spec.ts +0 -514
  516. package/src/test/test-memory-injection-prompt.spec.ts +0 -650
  517. package/src/test/test-memory-injection-prompt.ts +0 -391
  518. package/src/test/test-performance-alerts.ts +0 -125
  519. package/src/test/test-performance-monitor-updates.spec.ts +0 -490
  520. package/src/test/test-performance-monitor.spec.ts +0 -284
  521. package/src/test/test-performance-monitor.ts +0 -228
  522. package/src/test/test-performance-monitoring.ts +0 -171
  523. package/src/test/test-search.ts +0 -151
  524. package/src/test/test-simple-alerts.ts +0 -136
  525. package/src/test/test-vector-search-engine.spec.ts +0 -408
  526. package/src/test/test-vector-search-engine.ts +0 -303
  527. package/src/tools/base-tool.ts +0 -189
  528. package/src/tools/cleanup-memory-tool.ts +0 -77
  529. package/src/tools/database-optimize-tool.ts +0 -79
  530. package/src/tools/error-stats.ts +0 -119
  531. package/src/tools/forget-tool.spec.ts +0 -613
  532. package/src/tools/forget-tool.ts +0 -454
  533. package/src/tools/forgetting-stats-tool.ts +0 -47
  534. package/src/tools/index.ts +0 -71
  535. package/src/tools/memory-injection-prompt.ts +0 -257
  536. package/src/tools/performance-alerts.ts +0 -226
  537. package/src/tools/performance-stats-tool.ts +0 -48
  538. package/src/tools/pin-tool.spec.ts +0 -497
  539. package/src/tools/pin-tool.ts +0 -277
  540. package/src/tools/recall-tool.spec.ts +0 -475
  541. package/src/tools/recall-tool.ts +0 -389
  542. package/src/tools/remember-tool.spec.ts +0 -469
  543. package/src/tools/remember-tool.ts +0 -112
  544. package/src/tools/resolve-error.ts +0 -69
  545. package/src/tools/tool-registry.ts +0 -417
  546. package/src/tools/types.ts +0 -63
  547. package/src/tools/unpin-tool.spec.ts +0 -549
  548. package/src/tools/unpin-tool.ts +0 -306
  549. package/src/types/embedding.types.ts +0 -78
  550. package/src/types/index.spec.ts +0 -420
  551. package/src/types/index.ts +0 -117
  552. package/src/utils/database.spec.ts +0 -77
  553. package/src/utils/database.ts +0 -458
  554. package/src/utils/stopwords.ts +0 -128
  555. package/start-docker-setup.bat +0 -38
  556. package/static/logo.png +0 -0
  557. package/static/memento_logo.svg +0 -2
  558. package/test-docker.js +0 -103
  559. package/tsconfig.json +0 -46
  560. package/vitest.config.ts +0 -23
@@ -1,295 +0,0 @@
1
- /**
2
- * 임베딩 서비스 통합 테스트
3
- * 실제 시나리오에서의 동작 검증
4
- */
5
-
6
- import { describe, it, expect, beforeAll, afterAll } from 'vitest';
7
- import { UnifiedEmbeddingService } from '../services/unified-embedding-service.js';
8
- import { EmbeddingProviderFactory } from '../services/embedding-provider-factory.js';
9
- import type { EmbeddingData } from '../types/embedding.types.js';
10
-
11
- // 실제 사용 시나리오 데이터
12
- const memoryItems: EmbeddingData[] = [
13
- {
14
- id: 'memory-1',
15
- content: '사용자가 React Hook에 대해 질문했습니다. useState와 useEffect의 차이점을 설명해주세요.',
16
- embedding: []
17
- },
18
- {
19
- id: 'memory-2',
20
- content: 'TypeScript의 타입 시스템에 대한 질문이 있었습니다. 인터페이스와 타입의 차이점을 알고 싶어합니다.',
21
- embedding: []
22
- },
23
- {
24
- id: 'memory-3',
25
- content: '데이터베이스 최적화에 대한 질문입니다. 인덱스 설계와 쿼리 성능 개선 방법을 문의했습니다.',
26
- embedding: []
27
- },
28
- {
29
- id: 'memory-4',
30
- content: 'AI 모델 학습에 대한 질문입니다. 과적합 방지와 일반화 성능 향상 방법을 알고 싶어합니다.',
31
- embedding: []
32
- },
33
- {
34
- id: 'memory-5',
35
- content: '웹 개발에서 보안 관련 질문입니다. XSS와 CSRF 공격 방어 방법에 대해 문의했습니다.',
36
- embedding: []
37
- }
38
- ];
39
-
40
- describe('임베딩 서비스 통합 테스트', () => {
41
- let unifiedService: UnifiedEmbeddingService;
42
- let factory: EmbeddingProviderFactory;
43
-
44
- beforeAll(async () => {
45
- unifiedService = new UnifiedEmbeddingService();
46
- factory = EmbeddingProviderFactory.getInstance();
47
- });
48
-
49
- afterAll(async () => {
50
- // 정리 작업
51
- });
52
-
53
- describe('실제 사용 시나리오', () => {
54
- it('메모리 아이템 임베딩 생성 및 저장', async () => {
55
- console.log('\n📝 메모리 아이템 임베딩 생성 테스트');
56
-
57
- for (const item of memoryItems) {
58
- const result = await unifiedService.generateEmbedding(item.content);
59
-
60
- expect(result).toBeDefined();
61
- expect(result?.embedding).toBeDefined();
62
- expect(result?.embedding.length).toBeGreaterThan(0);
63
-
64
- // 임베딩을 아이템에 저장
65
- item.embedding = result!.embedding;
66
-
67
- console.log(`✅ ${item.id}: ${result?.embedding.length}차원 임베딩 생성 완료`);
68
- }
69
- });
70
-
71
- it('유사한 메모리 검색', async () => {
72
- console.log('\n🔍 유사한 메모리 검색 테스트');
73
-
74
- const queries = [
75
- 'React Hook 사용법',
76
- 'TypeScript 타입 정의',
77
- '데이터베이스 성능',
78
- '머신러닝 모델',
79
- '웹 보안 취약점'
80
- ];
81
-
82
- for (const query of queries) {
83
- const results = await unifiedService.searchSimilar(query, memoryItems, 3, 0.5);
84
-
85
- expect(results).toBeDefined();
86
- expect(Array.isArray(results)).toBe(true);
87
- expect(results.length).toBeGreaterThan(0);
88
-
89
- console.log(`\n🔍 쿼리: "${query}"`);
90
- results.forEach((result, index) => {
91
- console.log(` ${index + 1}. ${result.id} (유사도: ${result.similarity.toFixed(3)})`);
92
- console.log(` 내용: ${result.content.substring(0, 50)}...`);
93
- });
94
- }
95
- });
96
-
97
- it('제공자 전환 테스트', async () => {
98
- console.log('\n🔄 제공자 전환 테스트');
99
-
100
- const text = '제공자 전환 테스트를 위한 샘플 텍스트입니다.';
101
-
102
- // 현재 제공자 확인
103
- const currentProvider = unifiedService.getCurrentProviderName();
104
- console.log(`현재 제공자: ${currentProvider}`);
105
-
106
- // 임베딩 생성
107
- const result = await unifiedService.generateEmbedding(text);
108
- expect(result).toBeDefined();
109
-
110
- // 사용 가능한 제공자 목록 확인
111
- const availableProviders = factory.getAvailableProviders();
112
- console.log('사용 가능한 제공자:');
113
- availableProviders.forEach(provider => {
114
- console.log(` - ${provider.name}: ${provider.available ? '사용 가능' : '사용 불가'} (우선순위: ${provider.priority})`);
115
- });
116
- });
117
-
118
- it('에러 처리 및 폴백 테스트', async () => {
119
- console.log('\n⚠️ 에러 처리 및 폴백 테스트');
120
-
121
- // 빈 텍스트 처리
122
- try {
123
- await unifiedService.generateEmbedding('');
124
- expect.fail('빈 텍스트에 대해 에러가 발생해야 합니다');
125
- } catch (error) {
126
- expect(error).toBeDefined();
127
- console.log('✅ 빈 텍스트 에러 처리 확인');
128
- }
129
-
130
- // null 텍스트 처리
131
- try {
132
- await unifiedService.generateEmbedding(null as any);
133
- expect.fail('null 텍스트에 대해 에러가 발생해야 합니다');
134
- } catch (error) {
135
- expect(error).toBeDefined();
136
- console.log('✅ null 텍스트 에러 처리 확인');
137
- }
138
- });
139
-
140
- it('성능 및 메모리 사용량 모니터링', async () => {
141
- console.log('\n📊 성능 및 메모리 사용량 모니터링');
142
-
143
- const startMemory = process.memoryUsage();
144
- const startTime = performance.now();
145
-
146
- // 대량 임베딩 생성
147
- const largeTexts = Array.from({ length: 10 }, (_, i) =>
148
- `대량 처리 테스트 텍스트 ${i + 1}. 이것은 성능 테스트를 위한 샘플 텍스트입니다.`
149
- );
150
-
151
- const results = await Promise.all(
152
- largeTexts.map(text => unifiedService.generateEmbedding(text))
153
- );
154
-
155
- const endTime = performance.now();
156
- const endMemory = process.memoryUsage();
157
-
158
- const duration = endTime - startTime;
159
- const memoryUsed = endMemory.heapUsed - startMemory.heapUsed;
160
-
161
- console.log(`처리 시간: ${duration.toFixed(2)}ms`);
162
- console.log(`메모리 사용량: ${(memoryUsed / 1024 / 1024).toFixed(2)}MB`);
163
- console.log(`평균 처리 시간: ${(duration / largeTexts.length).toFixed(2)}ms/텍스트`);
164
-
165
- expect(results).toHaveLength(largeTexts.length);
166
- results.forEach(result => {
167
- expect(result).toBeDefined();
168
- expect(result?.embedding).toBeDefined();
169
- });
170
- });
171
- });
172
-
173
- describe('제공자별 특성 검증', () => {
174
- it('MiniLM 제공자 특성', async () => {
175
- console.log('\n🤖 MiniLM 제공자 특성 검증');
176
-
177
- const text = 'MiniLM 모델은 경량화된 언어 모델입니다.';
178
- const result = await unifiedService.generateEmbedding(text);
179
-
180
- expect(result).toBeDefined();
181
- expect(result?.embedding).toHaveLength(384);
182
- expect(result?.model).toContain('MiniLM');
183
-
184
- console.log(`모델: ${result?.model}`);
185
- console.log(`차원: ${result?.embedding.length}`);
186
- console.log(`토큰 사용량: ${result?.usage.total_tokens}`);
187
- });
188
-
189
- it('TF-IDF 제공자 특성', async () => {
190
- console.log('\n📊 TF-IDF 제공자 특성 검증');
191
-
192
- // TF-IDF 서비스를 직접 사용
193
- const { LightweightEmbeddingService } = await import('../services/lightweight-embedding-service.js');
194
- const tfidfService = new LightweightEmbeddingService();
195
-
196
- const text = 'TF-IDF는 텍스트 마이닝에서 중요한 기법입니다.';
197
- const result = await tfidfService.generateEmbedding(text);
198
-
199
- expect(result).toBeDefined();
200
- expect(result?.embedding).toHaveLength(512);
201
- expect(result?.model).toContain('lightweight');
202
-
203
- console.log(`모델: ${result?.model}`);
204
- console.log(`차원: ${result?.embedding.length}`);
205
- });
206
- });
207
-
208
- describe('실제 사용 패턴 시뮬레이션', () => {
209
- it('AI Agent 메모리 저장 시나리오', async () => {
210
- console.log('\n🤖 AI Agent 메모리 저장 시나리오');
211
-
212
- const agentMemories = [
213
- '사용자가 React 컴포넌트 생명주기에 대해 질문했습니다.',
214
- 'TypeScript의 제네릭 사용법에 대한 설명을 요청했습니다.',
215
- '데이터베이스 정규화 과정을 설명해달라고 했습니다.',
216
- '머신러닝 모델 평가 지표에 대해 문의했습니다.',
217
- '웹 애플리케이션 보안 체크리스트를 요청했습니다.'
218
- ];
219
-
220
- const embeddings: EmbeddingData[] = [];
221
-
222
- for (let i = 0; i < agentMemories.length; i++) {
223
- const memory = agentMemories[i];
224
- const result = await unifiedService.generateEmbedding(memory);
225
-
226
- expect(result).toBeDefined();
227
-
228
- embeddings.push({
229
- id: `agent-memory-${i + 1}`,
230
- content: memory,
231
- embedding: result!.embedding
232
- });
233
-
234
- console.log(`✅ Agent 메모리 ${i + 1} 저장 완료`);
235
- }
236
-
237
- // 관련 메모리 검색
238
- const query = 'React와 TypeScript 관련 질문';
239
- const similarMemories = await unifiedService.searchSimilar(query, embeddings, 3, 0.3);
240
-
241
- expect(similarMemories).toBeDefined();
242
- expect(similarMemories.length).toBeGreaterThan(0);
243
-
244
- console.log(`\n🔍 쿼리: "${query}"`);
245
- similarMemories.forEach((memory, index) => {
246
- console.log(` ${index + 1}. ${memory.id} (유사도: ${memory.similarity.toFixed(3)})`);
247
- });
248
- });
249
-
250
- it('대화 컨텍스트 검색 시나리오', async () => {
251
- console.log('\n💬 대화 컨텍스트 검색 시나리오');
252
-
253
- const conversationHistory = [
254
- '안녕하세요! React에 대해 질문이 있습니다.',
255
- 'useState Hook을 사용할 때 주의사항이 있나요?',
256
- '네, 의존성 배열을 잘 관리해야 합니다.',
257
- 'useEffect의 cleanup 함수는 언제 사용하나요?',
258
- '컴포넌트가 언마운트될 때 정리 작업을 위해 사용합니다.'
259
- ];
260
-
261
- const conversationEmbeddings: EmbeddingData[] = [];
262
-
263
- for (let i = 0; i < conversationHistory.length; i++) {
264
- const message = conversationHistory[i];
265
- const result = await unifiedService.generateEmbedding(message);
266
-
267
- expect(result).toBeDefined();
268
-
269
- conversationEmbeddings.push({
270
- id: `conv-${i + 1}`,
271
- content: message,
272
- embedding: result!.embedding
273
- });
274
- }
275
-
276
- // 관련 대화 검색
277
- const currentQuestion = 'React Hook의 의존성 배열에 대해 더 자세히 알고 싶습니다.';
278
- const relevantMessages = await unifiedService.searchSimilar(
279
- currentQuestion,
280
- conversationEmbeddings,
281
- 5,
282
- 0.4
283
- );
284
-
285
- expect(relevantMessages).toBeDefined();
286
- expect(relevantMessages.length).toBeGreaterThan(0);
287
-
288
- console.log(`\n🔍 현재 질문: "${currentQuestion}"`);
289
- console.log('관련 대화:');
290
- relevantMessages.forEach((message, index) => {
291
- console.log(` ${index + 1}. ${message.content} (유사도: ${message.similarity.toFixed(3)})`);
292
- });
293
- });
294
- });
295
- });
@@ -1,354 +0,0 @@
1
- /**
2
- * 임베딩 서비스 성능 벤치마크
3
- * TF-IDF, MiniLM, OpenAI, Gemini 성능 비교
4
- */
5
-
6
- import { describe, it, expect, beforeAll, afterAll } from 'vitest';
7
- import { MiniLMEmbeddingService } from '../services/minilm-embedding-service.js';
8
- import { LightweightEmbeddingService } from '../services/lightweight-embedding-service.js';
9
- import { UnifiedEmbeddingService } from '../services/unified-embedding-service.js';
10
- import type { EmbeddingData } from '../types/embedding.types.js';
11
-
12
- // 테스트 데이터
13
- const testTexts = [
14
- 'Hello world, this is a simple test.',
15
- 'The quick brown fox jumps over the lazy dog.',
16
- 'Machine learning and artificial intelligence are transforming the world.',
17
- 'TypeScript is a strongly typed programming language that builds on JavaScript.',
18
- 'Memento is an AI memory system that helps agents remember and recall information.',
19
- 'Vector embeddings are numerical representations of text that capture semantic meaning.',
20
- 'Natural language processing enables computers to understand human language.',
21
- 'Deep learning models can process vast amounts of data to find patterns.',
22
- 'The future of AI lies in creating more efficient and accessible systems.',
23
- 'Open source software drives innovation in the technology industry.'
24
- ];
25
-
26
- // 각 서비스별로 실제 벡터를 생성하므로 고정된 testEmbeddings 제거
27
- // const testEmbeddings: EmbeddingData[] = testTexts.map((text, index) => ({
28
- // id: `test-${index}`,
29
- // content: text,
30
- // embedding: Array.from({ length: 384 }, () => Math.random())
31
- // }));
32
-
33
- interface BenchmarkResult {
34
- provider: string;
35
- operation: string;
36
- duration: number;
37
- success: boolean;
38
- error?: string;
39
- memoryUsage?: number;
40
- }
41
-
42
- class PerformanceBenchmark {
43
- private results: BenchmarkResult[] = [];
44
-
45
- async measureOperation<T>(
46
- provider: string,
47
- operation: string,
48
- fn: () => Promise<T>
49
- ): Promise<T | null> {
50
- const startTime = performance.now();
51
- const startMemory = process.memoryUsage();
52
-
53
- try {
54
- const result = await fn();
55
- const endTime = performance.now();
56
- const endMemory = process.memoryUsage();
57
-
58
- this.results.push({
59
- provider,
60
- operation,
61
- duration: endTime - startTime,
62
- success: true,
63
- memoryUsage: endMemory.heapUsed - startMemory.heapUsed
64
- });
65
-
66
- return result;
67
- } catch (error) {
68
- const endTime = performance.now();
69
-
70
- this.results.push({
71
- provider,
72
- operation,
73
- duration: endTime - startTime,
74
- success: false,
75
- error: error instanceof Error ? error.message : 'Unknown error'
76
- });
77
-
78
- return null;
79
- }
80
- }
81
-
82
- getResults(): BenchmarkResult[] {
83
- return this.results;
84
- }
85
-
86
- getSummary(): Record<string, any> {
87
- const summary: Record<string, any> = {};
88
-
89
- // 제공자별 성능 요약
90
- const providers = [...new Set(this.results.map(r => r.provider))];
91
-
92
- for (const provider of providers) {
93
- const providerResults = this.results.filter(r => r.provider === provider);
94
- const successfulResults = providerResults.filter(r => r.success);
95
-
96
- summary[provider] = {
97
- totalOperations: providerResults.length,
98
- successfulOperations: successfulResults.length,
99
- successRate: successfulResults.length / providerResults.length,
100
- averageDuration: successfulResults.reduce((sum, r) => sum + r.duration, 0) / successfulResults.length,
101
- totalMemoryUsage: successfulResults.reduce((sum, r) => sum + (r.memoryUsage || 0), 0),
102
- operations: providerResults.map(r => ({
103
- operation: r.operation,
104
- duration: r.duration,
105
- success: r.success,
106
- error: r.error
107
- }))
108
- };
109
- }
110
-
111
- return summary;
112
- }
113
- }
114
-
115
- describe('임베딩 서비스 성능 벤치마크', () => {
116
- let benchmark: PerformanceBenchmark;
117
- let minilmService: MiniLMEmbeddingService;
118
- let tfidfService: LightweightEmbeddingService;
119
- let unifiedService: UnifiedEmbeddingService;
120
-
121
- beforeAll(async () => {
122
- benchmark = new PerformanceBenchmark();
123
- minilmService = new MiniLMEmbeddingService();
124
- tfidfService = new LightweightEmbeddingService();
125
- unifiedService = new UnifiedEmbeddingService();
126
- });
127
-
128
- afterAll(() => {
129
- // 벤치마크 결과 출력
130
- const summary = benchmark.getSummary();
131
- console.log('\n📊 임베딩 서비스 성능 벤치마크 결과:');
132
- console.log(JSON.stringify(summary, null, 2));
133
- });
134
-
135
- describe('MiniLM 임베딩 서비스', () => {
136
- it('단일 텍스트 임베딩 생성 성능', async () => {
137
- const text = testTexts[0];
138
-
139
- const result = await benchmark.measureOperation(
140
- 'minilm',
141
- 'single-embedding',
142
- () => minilmService.generateEmbedding(text)
143
- );
144
-
145
- expect(result).toBeDefined();
146
- expect(result?.embedding).toHaveLength(384);
147
- });
148
-
149
- it('배치 임베딩 생성 성능', async () => {
150
- const promises = testTexts.map(text =>
151
- benchmark.measureOperation(
152
- 'minilm',
153
- 'batch-embedding',
154
- () => minilmService.generateEmbedding(text)
155
- )
156
- );
157
-
158
- const results = await Promise.all(promises);
159
-
160
- expect(results).toHaveLength(testTexts.length);
161
- results.forEach(result => {
162
- expect(result).toBeDefined();
163
- expect(result?.embedding).toHaveLength(384);
164
- });
165
- });
166
-
167
- it('유사도 검색 성능', async () => {
168
- const query = 'artificial intelligence and machine learning';
169
-
170
- // MiniLM용 실제 벡터 생성
171
- const minilmEmbeddings: EmbeddingData[] = [];
172
- for (let i = 0; i < testTexts.length; i++) {
173
- const result = await minilmService.generateEmbedding(testTexts[i]);
174
- if (result) {
175
- minilmEmbeddings.push({
176
- id: `minilm-test-${i}`,
177
- content: testTexts[i],
178
- embedding: result.embedding
179
- });
180
- }
181
- }
182
-
183
- const result = await benchmark.measureOperation(
184
- 'minilm',
185
- 'similarity-search',
186
- () => minilmService.searchSimilar(query, minilmEmbeddings, 5, 0.7)
187
- );
188
-
189
- expect(result).toBeDefined();
190
- expect(Array.isArray(result)).toBe(true);
191
- });
192
- });
193
-
194
- describe('TF-IDF 임베딩 서비스', () => {
195
- it('단일 텍스트 임베딩 생성 성능', async () => {
196
- const text = testTexts[0];
197
-
198
- const result = await benchmark.measureOperation(
199
- 'tfidf',
200
- 'single-embedding',
201
- () => tfidfService.generateEmbedding(text)
202
- );
203
-
204
- expect(result).toBeDefined();
205
- expect(result?.embedding).toHaveLength(512);
206
- });
207
-
208
- it('배치 임베딩 생성 성능', async () => {
209
- const promises = testTexts.map(text =>
210
- benchmark.measureOperation(
211
- 'tfidf',
212
- 'batch-embedding',
213
- () => tfidfService.generateEmbedding(text)
214
- )
215
- );
216
-
217
- const results = await Promise.all(promises);
218
-
219
- expect(results).toHaveLength(testTexts.length);
220
- results.forEach(result => {
221
- expect(result).toBeDefined();
222
- expect(result?.embedding).toHaveLength(512);
223
- });
224
- });
225
-
226
- it('유사도 검색 성능', async () => {
227
- const query = 'artificial intelligence and machine learning';
228
-
229
- // TF-IDF용 실제 벡터 생성
230
- const tfidfEmbeddings: EmbeddingData[] = [];
231
- for (let i = 0; i < testTexts.length; i++) {
232
- const result = await tfidfService.generateEmbedding(testTexts[i]);
233
- if (result) {
234
- tfidfEmbeddings.push({
235
- id: `tfidf-test-${i}`,
236
- content: testTexts[i],
237
- embedding: result.embedding
238
- });
239
- }
240
- }
241
-
242
- const result = await benchmark.measureOperation(
243
- 'tfidf',
244
- 'similarity-search',
245
- () => tfidfService.searchSimilar(query, tfidfEmbeddings, 5, 0.7)
246
- );
247
-
248
- expect(result).toBeDefined();
249
- expect(Array.isArray(result)).toBe(true);
250
- });
251
- });
252
-
253
- describe('통합 임베딩 서비스', () => {
254
- it('MiniLM 제공자로 임베딩 생성 성능', async () => {
255
- const text = testTexts[0];
256
-
257
- const result = await benchmark.measureOperation(
258
- 'unified-minilm',
259
- 'single-embedding',
260
- () => unifiedService.generateEmbedding(text)
261
- );
262
-
263
- expect(result).toBeDefined();
264
- // MiniLM은 384차원, TF-IDF는 512차원 - 실제 사용되는 제공자에 따라 다름
265
- expect(result?.embedding.length).toBeGreaterThan(0);
266
- });
267
-
268
- it('배치 임베딩 생성 성능', async () => {
269
- const promises = testTexts.map(text =>
270
- benchmark.measureOperation(
271
- 'unified-minilm',
272
- 'batch-embedding',
273
- () => unifiedService.generateEmbedding(text)
274
- )
275
- );
276
-
277
- const results = await Promise.all(promises);
278
-
279
- expect(results).toHaveLength(testTexts.length);
280
- results.forEach(result => {
281
- expect(result).toBeDefined();
282
- // MiniLM은 384차원, TF-IDF는 512차원 - 실제 사용되는 제공자에 따라 다름
283
- expect(result?.embedding.length).toBeGreaterThan(0);
284
- });
285
- });
286
-
287
- it('유사도 검색 성능', async () => {
288
- const query = 'artificial intelligence and machine learning';
289
-
290
- // 통합 서비스용 실제 벡터 생성 (실제 사용되는 제공자에 맞는 차원)
291
- const unifiedEmbeddings: EmbeddingData[] = [];
292
- for (let i = 0; i < testTexts.length; i++) {
293
- const result = await unifiedService.generateEmbedding(testTexts[i]);
294
- if (result) {
295
- unifiedEmbeddings.push({
296
- id: `unified-test-${i}`,
297
- content: testTexts[i],
298
- embedding: result.embedding
299
- });
300
- }
301
- }
302
-
303
- const result = await benchmark.measureOperation(
304
- 'unified-minilm',
305
- 'similarity-search',
306
- () => unifiedService.searchSimilar(query, unifiedEmbeddings, 5, 0.7)
307
- );
308
-
309
- expect(result).toBeDefined();
310
- expect(Array.isArray(result)).toBe(true);
311
- });
312
- });
313
-
314
- describe('성능 비교 분석', () => {
315
- it('임베딩 생성 속도 비교', () => {
316
- const summary = benchmark.getSummary();
317
-
318
- // MiniLM vs TF-IDF 속도 비교
319
- const minilmAvg = summary['minilm']?.averageDuration || 0;
320
- const tfidfAvg = summary['tfidf']?.averageDuration || 0;
321
-
322
- console.log(`\n⚡ 임베딩 생성 속도 비교:`);
323
- console.log(`MiniLM: ${minilmAvg.toFixed(2)}ms`);
324
- console.log(`TF-IDF: ${tfidfAvg.toFixed(2)}ms`);
325
-
326
- // MiniLM이 TF-IDF보다 빠를 것으로 예상
327
- expect(minilmAvg).toBeGreaterThan(0);
328
- expect(tfidfAvg).toBeGreaterThan(0);
329
- });
330
-
331
- it('메모리 사용량 비교', () => {
332
- const summary = benchmark.getSummary();
333
-
334
- const minilmMemory = summary['minilm']?.totalMemoryUsage || 0;
335
- const tfidfMemory = summary['tfidf']?.totalMemoryUsage || 0;
336
-
337
- console.log(`\n💾 메모리 사용량 비교:`);
338
- console.log(`MiniLM: ${(minilmMemory / 1024 / 1024).toFixed(2)}MB`);
339
- console.log(`TF-IDF: ${(tfidfMemory / 1024 / 1024).toFixed(2)}MB`);
340
-
341
- expect(minilmMemory).toBeGreaterThan(0);
342
- expect(tfidfMemory).toBeGreaterThan(0);
343
- });
344
-
345
- it('성공률 확인', () => {
346
- const summary = benchmark.getSummary();
347
-
348
- Object.entries(summary).forEach(([provider, stats]) => {
349
- console.log(`\n✅ ${provider} 성공률: ${(stats.successRate * 100).toFixed(1)}%`);
350
- expect(stats.successRate).toBeGreaterThan(0.8); // 80% 이상 성공률
351
- });
352
- });
353
- });
354
- });