memento-mcp-server 1.6.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INSTALL.en.md +303 -303
- package/INSTALL.md +303 -303
- package/README.en.md +331 -330
- package/README.md +432 -432
- package/dist/algorithms/hybrid-search-engine.d.ts +114 -44
- package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -1
- package/dist/algorithms/hybrid-search-engine.js +261 -235
- package/dist/algorithms/hybrid-search-engine.js.map +1 -1
- package/dist/algorithms/search-engine.d.ts +2 -14
- package/dist/algorithms/search-engine.d.ts.map +1 -1
- package/dist/algorithms/search-engine.js +43 -35
- package/dist/algorithms/search-engine.js.map +1 -1
- package/dist/algorithms/vector-search-engine-migration.d.ts +67 -0
- package/dist/algorithms/vector-search-engine-migration.d.ts.map +1 -0
- package/dist/algorithms/vector-search-engine-migration.js +196 -0
- package/dist/algorithms/vector-search-engine-migration.js.map +1 -0
- package/dist/algorithms/vector-search-engine-refactored.d.ts +56 -0
- package/dist/algorithms/vector-search-engine-refactored.d.ts.map +1 -0
- package/dist/algorithms/vector-search-engine-refactored.js +101 -0
- package/dist/algorithms/vector-search-engine-refactored.js.map +1 -0
- package/dist/algorithms/vector-search-engine.d.ts +9 -2
- package/dist/algorithms/vector-search-engine.d.ts.map +1 -1
- package/dist/algorithms/vector-search-engine.js +245 -121
- package/dist/algorithms/vector-search-engine.js.map +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +34 -11
- package/dist/client/index.js.map +1 -1
- package/dist/config/environment.d.ts +26 -0
- package/dist/config/environment.d.ts.map +1 -0
- package/dist/config/environment.js +103 -0
- package/dist/config/environment.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +29 -50
- package/dist/config/index.js.map +1 -1
- package/dist/config/vector-search.config.d.ts +25 -0
- package/dist/config/vector-search.config.d.ts.map +1 -0
- package/dist/config/vector-search.config.js +40 -0
- package/dist/config/vector-search.config.js.map +1 -0
- package/dist/database/init.d.ts.map +1 -1
- package/dist/database/init.js +154 -17
- package/dist/database/init.js.map +1 -1
- package/dist/database/migrate.d.ts +2 -1
- package/dist/database/migrate.d.ts.map +1 -1
- package/dist/database/migrate.js +191 -18
- package/dist/database/migrate.js.map +1 -1
- package/dist/database/schema.sql +234 -159
- package/dist/factories/hybrid-search.factory.d.ts +20 -0
- package/dist/factories/hybrid-search.factory.d.ts.map +1 -0
- package/dist/factories/hybrid-search.factory.js +57 -0
- package/dist/factories/hybrid-search.factory.js.map +1 -0
- package/dist/factories/spaced-repetition.factory.d.ts +48 -0
- package/dist/factories/spaced-repetition.factory.d.ts.map +1 -0
- package/dist/factories/spaced-repetition.factory.js +187 -0
- package/dist/factories/spaced-repetition.factory.js.map +1 -0
- package/dist/factories/vector-search.factory.d.ts +25 -0
- package/dist/factories/vector-search.factory.d.ts.map +1 -0
- package/dist/factories/vector-search.factory.js +47 -0
- package/dist/factories/vector-search.factory.js.map +1 -0
- package/dist/interfaces/database.interface.d.ts +36 -0
- package/dist/interfaces/database.interface.d.ts.map +1 -0
- package/dist/interfaces/database.interface.js +6 -0
- package/dist/interfaces/database.interface.js.map +1 -0
- package/dist/interfaces/spaced-repetition.interface.d.ts +63 -0
- package/dist/interfaces/spaced-repetition.interface.d.ts.map +1 -0
- package/dist/interfaces/spaced-repetition.interface.js +6 -0
- package/dist/interfaces/spaced-repetition.interface.js.map +1 -0
- package/dist/repositories/vector-performance.repository.d.ts +25 -0
- package/dist/repositories/vector-performance.repository.d.ts.map +1 -0
- package/dist/repositories/vector-performance.repository.js +134 -0
- package/dist/repositories/vector-performance.repository.js.map +1 -0
- package/dist/repositories/vector-search.repository.d.ts +43 -0
- package/dist/repositories/vector-search.repository.d.ts.map +1 -0
- package/dist/repositories/vector-search.repository.js +377 -0
- package/dist/repositories/vector-search.repository.js.map +1 -0
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +25 -24
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -7
- package/dist/server/index.js.map +1 -1
- package/dist/services/alert-notification-service.d.ts +16 -0
- package/dist/services/alert-notification-service.d.ts.map +1 -0
- package/dist/services/alert-notification-service.js +44 -0
- package/dist/services/alert-notification-service.js.map +1 -0
- package/dist/services/async-optimizer.d.ts +62 -8
- package/dist/services/async-optimizer.d.ts.map +1 -1
- package/dist/services/async-optimizer.js +137 -8
- package/dist/services/async-optimizer.js.map +1 -1
- package/dist/services/batch-scheduler.d.ts +6 -0
- package/dist/services/batch-scheduler.d.ts.map +1 -1
- package/dist/services/batch-scheduler.js +59 -19
- package/dist/services/batch-scheduler.js.map +1 -1
- package/dist/services/cache-service.d.ts +32 -0
- package/dist/services/cache-service.d.ts.map +1 -1
- package/dist/services/cache-service.js +81 -6
- package/dist/services/cache-service.js.map +1 -1
- package/dist/services/database-optimizer.js +63 -63
- package/dist/services/database-optimizer.js.map +1 -1
- package/dist/services/embedding-migration-service.d.ts +24 -0
- package/dist/services/embedding-migration-service.d.ts.map +1 -0
- package/dist/services/embedding-migration-service.js +360 -0
- package/dist/services/embedding-migration-service.js.map +1 -0
- package/dist/services/embedding-provider-factory.d.ts +12 -5
- package/dist/services/embedding-provider-factory.d.ts.map +1 -1
- package/dist/services/embedding-provider-factory.js +107 -26
- package/dist/services/embedding-provider-factory.js.map +1 -1
- package/dist/services/forgetting-policy-service.js +17 -17
- package/dist/services/gemini-embedding-service.d.ts +1 -1
- package/dist/services/gemini-embedding-service.d.ts.map +1 -1
- package/dist/services/gemini-embedding-service.js +25 -18
- package/dist/services/gemini-embedding-service.js.map +1 -1
- package/dist/services/memory-embedding-service.d.ts +8 -0
- package/dist/services/memory-embedding-service.d.ts.map +1 -1
- package/dist/services/memory-embedding-service.js +180 -71
- package/dist/services/memory-embedding-service.js.map +1 -1
- package/dist/services/migration-history-service.d.ts +14 -0
- package/dist/services/migration-history-service.d.ts.map +1 -0
- package/dist/services/migration-history-service.js +270 -0
- package/dist/services/migration-history-service.js.map +1 -0
- package/dist/services/migration-monitor-service.d.ts +24 -0
- package/dist/services/migration-monitor-service.d.ts.map +1 -0
- package/dist/services/migration-monitor-service.js +93 -0
- package/dist/services/migration-monitor-service.js.map +1 -0
- package/dist/services/model-availability-service.d.ts +22 -0
- package/dist/services/model-availability-service.d.ts.map +1 -0
- package/dist/services/model-availability-service.js +140 -0
- package/dist/services/model-availability-service.js.map +1 -0
- package/dist/services/openai-embedding-service.d.ts +36 -0
- package/dist/services/openai-embedding-service.d.ts.map +1 -0
- package/dist/services/openai-embedding-service.js +192 -0
- package/dist/services/openai-embedding-service.js.map +1 -0
- package/dist/services/performance-monitor.d.ts +154 -10
- package/dist/services/performance-monitor.d.ts.map +1 -1
- package/dist/services/performance-monitor.js +446 -60
- package/dist/services/performance-monitor.js.map +1 -1
- package/dist/services/spaced-repetition/interval-calculation.service.d.ts +38 -0
- package/dist/services/spaced-repetition/interval-calculation.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/interval-calculation.service.js +105 -0
- package/dist/services/spaced-repetition/interval-calculation.service.js.map +1 -0
- package/dist/services/spaced-repetition/optimal-interval.service.d.ts +56 -0
- package/dist/services/spaced-repetition/optimal-interval.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/optimal-interval.service.js +163 -0
- package/dist/services/spaced-repetition/optimal-interval.service.js.map +1 -0
- package/dist/services/spaced-repetition/performance-analysis.service.d.ts +48 -0
- package/dist/services/spaced-repetition/performance-analysis.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/performance-analysis.service.js +174 -0
- package/dist/services/spaced-repetition/performance-analysis.service.js.map +1 -0
- package/dist/services/spaced-repetition/priority-calculation.service.d.ts +53 -0
- package/dist/services/spaced-repetition/priority-calculation.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/priority-calculation.service.js +161 -0
- package/dist/services/spaced-repetition/priority-calculation.service.js.map +1 -0
- package/dist/services/spaced-repetition/recall-probability.service.d.ts +36 -0
- package/dist/services/spaced-repetition/recall-probability.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/recall-probability.service.js +88 -0
- package/dist/services/spaced-repetition/recall-probability.service.js.map +1 -0
- package/dist/services/spaced-repetition/review-scheduling.service.d.ts +43 -0
- package/dist/services/spaced-repetition/review-scheduling.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/review-scheduling.service.js +130 -0
- package/dist/services/spaced-repetition/review-scheduling.service.js.map +1 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.d.ts +69 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.d.ts.map +1 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.js +136 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.js.map +1 -0
- package/dist/services/unified-embedding-service.d.ts +3 -0
- package/dist/services/unified-embedding-service.d.ts.map +1 -1
- package/dist/services/unified-embedding-service.js +58 -62
- package/dist/services/unified-embedding-service.js.map +1 -1
- package/dist/services/vector-compatibility-service.d.ts +68 -0
- package/dist/services/vector-compatibility-service.d.ts.map +1 -0
- package/dist/services/vector-compatibility-service.js +373 -0
- package/dist/services/vector-compatibility-service.js.map +1 -0
- package/dist/services/vector-search/vector-index-manager.d.ts +27 -0
- package/dist/services/vector-search/vector-index-manager.d.ts.map +1 -0
- package/dist/services/vector-search/vector-index-manager.js +66 -0
- package/dist/services/vector-search/vector-index-manager.js.map +1 -0
- package/dist/services/vector-search/vector-performance-tester.d.ts +30 -0
- package/dist/services/vector-search/vector-performance-tester.d.ts.map +1 -0
- package/dist/services/vector-search/vector-performance-tester.js +87 -0
- package/dist/services/vector-search/vector-performance-tester.js.map +1 -0
- package/dist/services/vector-search/vector-search-container.d.ts +41 -0
- package/dist/services/vector-search/vector-search-container.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-container.js +74 -0
- package/dist/services/vector-search/vector-search-container.js.map +1 -0
- package/dist/services/vector-search/vector-search-facade.d.ts +63 -0
- package/dist/services/vector-search/vector-search-facade.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-facade.js +91 -0
- package/dist/services/vector-search/vector-search-facade.js.map +1 -0
- package/dist/services/vector-search/vector-search-result-normalizer.d.ts +6 -0
- package/dist/services/vector-search/vector-search-result-normalizer.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-result-normalizer.js +65 -0
- package/dist/services/vector-search/vector-search-result-normalizer.js.map +1 -0
- package/dist/services/vector-search/vector-search.service.d.ts +33 -0
- package/dist/services/vector-search/vector-search.service.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search.service.js +149 -0
- package/dist/services/vector-search/vector-search.service.js.map +1 -0
- package/dist/tools/forget-tool.js +14 -14
- package/dist/tools/pin-tool.js +14 -14
- package/dist/tools/unpin-tool.js +21 -21
- package/dist/types/alerts.types.d.ts +26 -0
- package/dist/types/alerts.types.d.ts.map +1 -0
- package/dist/types/alerts.types.js +2 -0
- package/dist/types/alerts.types.js.map +1 -0
- package/dist/types/embedding-provider-monitoring.types.d.ts +24 -0
- package/dist/types/embedding-provider-monitoring.types.d.ts.map +1 -0
- package/dist/types/embedding-provider-monitoring.types.js +2 -0
- package/dist/types/embedding-provider-monitoring.types.js.map +1 -0
- package/dist/types/embedding.types.d.ts +36 -1
- package/dist/types/embedding.types.d.ts.map +1 -1
- package/dist/types/migration.types.d.ts +131 -0
- package/dist/types/migration.types.d.ts.map +1 -0
- package/dist/types/migration.types.js +6 -0
- package/dist/types/migration.types.js.map +1 -0
- package/dist/types/spaced-repetition.types.d.ts +61 -0
- package/dist/types/spaced-repetition.types.d.ts.map +1 -0
- package/dist/types/spaced-repetition.types.js +6 -0
- package/dist/types/spaced-repetition.types.js.map +1 -0
- package/dist/types/vector-search.types.d.ts +96 -0
- package/dist/types/vector-search.types.d.ts.map +1 -0
- package/dist/types/vector-search.types.js +2 -0
- package/dist/types/vector-search.types.js.map +1 -0
- package/dist/utils/configuration-validator.d.ts +23 -0
- package/dist/utils/configuration-validator.d.ts.map +1 -0
- package/dist/utils/configuration-validator.js +102 -0
- package/dist/utils/configuration-validator.js.map +1 -0
- package/dist/utils/database.d.ts.map +1 -1
- package/dist/utils/database.js +101 -95
- package/dist/utils/database.js.map +1 -1
- package/dist/utils/environment-check.d.ts +8 -0
- package/dist/utils/environment-check.d.ts.map +1 -0
- package/dist/utils/environment-check.js +25 -0
- package/dist/utils/environment-check.js.map +1 -0
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +33 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +139 -125
- package/scripts/auto-setup.js +233 -233
- package/scripts/backup-daily.bat +28 -28
- package/scripts/backup-embeddings.js +108 -108
- package/scripts/check-db-integrity.js +93 -93
- package/scripts/debug-embeddings.js +184 -184
- package/scripts/direct-sql-migration.sql +36 -36
- package/scripts/docker-migration.sh +105 -105
- package/scripts/fix-migration.js +93 -93
- package/scripts/fix-vector-dimensions.js +206 -206
- package/scripts/migrate-embedding-data.js +307 -307
- package/scripts/regenerate-embeddings.js +144 -144
- package/scripts/restore-legacy.ps1 +60 -60
- package/scripts/run-migration.js +122 -122
- package/scripts/safe-migration.js +150 -150
- package/scripts/simple-migrate.js +41 -41
- package/scripts/simple-update.js +123 -123
- package/src/database/schema.sql +234 -159
- package/.cursor/rules/cache-management.mdc +0 -171
- package/.cursor/rules/database-schema.mdc +0 -344
- package/.cursor/rules/deployment.mdc +0 -596
- package/.cursor/rules/error-logging.mdc +0 -298
- package/.cursor/rules/forgetting-algorithms.mdc +0 -426
- package/.cursor/rules/http-server.mdc +0 -432
- package/.cursor/rules/hybrid-search.mdc +0 -424
- package/.cursor/rules/implementation.mdc +0 -369
- package/.cursor/rules/lightweight-embedding.mdc +0 -178
- package/.cursor/rules/mcp-client-development.mdc +0 -0
- package/.cursor/rules/mcp-server-development.mdc +0 -0
- package/.cursor/rules/mcp-tools-architecture.mdc +0 -205
- package/.cursor/rules/memento-memory-rule.mdc +0 -8
- package/.cursor/rules/memento-project-overview.mdc +0 -0
- package/.cursor/rules/memory-algorithms.mdc +0 -502
- package/.cursor/rules/monitoring.mdc +0 -622
- package/.cursor/rules/performance-alerts.mdc +0 -537
- package/.cursor/rules/performance-monitoring.mdc +0 -345
- package/.cursor/rules/performance-optimization.mdc +0 -563
- package/.cursor/rules/project-structure.mdc +0 -310
- package/.cursor/rules/testing.mdc +0 -473
- package/.dockerignore +0 -15
- package/.eslintrc.json +0 -34
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -51
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -45
- package/.github/ISSUE_TEMPLATE/question.md +0 -31
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -97
- package/AGENTS.md +0 -28
- package/CHANGELOG.md +0 -416
- package/CODE_OF_CONDUCT.md +0 -62
- package/CONTRIBUTING.md +0 -165
- package/DOCKER_SETUP_GUIDE.md +0 -84
- package/Dockerfile +0 -90
- package/backup/legacy-removal-20250930-201816/http-server-legacy.ts +0 -1068
- package/backup/legacy-removal-20250930-201816/rollback-to-legacy.ps1 +0 -46
- package/backup/legacy-removal-20250930-201816/rollback-to-legacy.sh +0 -48
- package/dist/server/index-backup.d.ts +0 -5
- package/dist/server/index-backup.d.ts.map +0 -1
- package/dist/server/index-backup.js +0 -793
- package/dist/server/index-backup.js.map +0 -1
- package/dist/server/index-refactored.d.ts +0 -6
- package/dist/server/index-refactored.d.ts.map +0 -1
- package/dist/server/index-refactored.js +0 -206
- package/dist/server/index-refactored.js.map +0 -1
- package/dist/services/performance-monitoring-integration.d.ts +0 -77
- package/dist/services/performance-monitoring-integration.d.ts.map +0 -1
- package/dist/services/performance-monitoring-integration.js +0 -177
- package/dist/services/performance-monitoring-integration.js.map +0 -1
- package/dist/test/debug-http-v2.d.ts +0 -5
- package/dist/test/debug-http-v2.d.ts.map +0 -1
- package/dist/test/debug-http-v2.js +0 -28
- package/dist/test/debug-http-v2.js.map +0 -1
- package/dist/test/performance-benchmark.d.ts +0 -57
- package/dist/test/performance-benchmark.d.ts.map +0 -1
- package/dist/test/performance-benchmark.js +0 -427
- package/dist/test/performance-benchmark.js.map +0 -1
- package/dist/test/test-alerts-direct.d.ts +0 -7
- package/dist/test/test-alerts-direct.d.ts.map +0 -1
- package/dist/test/test-alerts-direct.js +0 -101
- package/dist/test/test-alerts-direct.js.map +0 -1
- package/dist/test/test-batch-scheduler.d.ts +0 -2
- package/dist/test/test-batch-scheduler.d.ts.map +0 -1
- package/dist/test/test-batch-scheduler.js +0 -156
- package/dist/test/test-batch-scheduler.js.map +0 -1
- package/dist/test/test-client.d.ts +0 -5
- package/dist/test/test-client.d.ts.map +0 -1
- package/dist/test/test-client.js +0 -86
- package/dist/test/test-client.js.map +0 -1
- package/dist/test/test-embedding.d.ts +0 -6
- package/dist/test/test-embedding.d.ts.map +0 -1
- package/dist/test/test-embedding.js +0 -142
- package/dist/test/test-embedding.js.map +0 -1
- package/dist/test/test-error-logging.d.ts +0 -7
- package/dist/test/test-error-logging.d.ts.map +0 -1
- package/dist/test/test-error-logging.js +0 -105
- package/dist/test/test-error-logging.js.map +0 -1
- package/dist/test/test-forgetting.d.ts +0 -6
- package/dist/test/test-forgetting.d.ts.map +0 -1
- package/dist/test/test-forgetting.js +0 -154
- package/dist/test/test-forgetting.js.map +0 -1
- package/dist/test/test-gemini-embedding.d.ts +0 -7
- package/dist/test/test-gemini-embedding.d.ts.map +0 -1
- package/dist/test/test-gemini-embedding.js +0 -134
- package/dist/test/test-gemini-embedding.js.map +0 -1
- package/dist/test/test-http-server-v2-simple.d.ts +0 -6
- package/dist/test/test-http-server-v2-simple.d.ts.map +0 -1
- package/dist/test/test-http-server-v2-simple.js +0 -131
- package/dist/test/test-http-server-v2-simple.js.map +0 -1
- package/dist/test/test-http-server-v2.d.ts +0 -7
- package/dist/test/test-http-server-v2.d.ts.map +0 -1
- package/dist/test/test-http-server-v2.js +0 -529
- package/dist/test/test-http-server-v2.js.map +0 -1
- package/dist/test/test-lightweight-embedding.d.ts +0 -6
- package/dist/test/test-lightweight-embedding.d.ts.map +0 -1
- package/dist/test/test-lightweight-embedding.js +0 -189
- package/dist/test/test-lightweight-embedding.js.map +0 -1
- package/dist/test/test-m1-completion.d.ts +0 -7
- package/dist/test/test-m1-completion.d.ts.map +0 -1
- package/dist/test/test-m1-completion.js +0 -124
- package/dist/test/test-m1-completion.js.map +0 -1
- package/dist/test/test-memory-injection-prompt.d.ts +0 -2
- package/dist/test/test-memory-injection-prompt.d.ts.map +0 -1
- package/dist/test/test-memory-injection-prompt.js +0 -299
- package/dist/test/test-memory-injection-prompt.js.map +0 -1
- package/dist/test/test-performance-alerts.d.ts +0 -7
- package/dist/test/test-performance-alerts.d.ts.map +0 -1
- package/dist/test/test-performance-alerts.js +0 -109
- package/dist/test/test-performance-alerts.js.map +0 -1
- package/dist/test/test-performance-monitor.d.ts +0 -2
- package/dist/test/test-performance-monitor.d.ts.map +0 -1
- package/dist/test/test-performance-monitor.js +0 -182
- package/dist/test/test-performance-monitor.js.map +0 -1
- package/dist/test/test-performance-monitoring.d.ts +0 -6
- package/dist/test/test-performance-monitoring.d.ts.map +0 -1
- package/dist/test/test-performance-monitoring.js +0 -156
- package/dist/test/test-performance-monitoring.js.map +0 -1
- package/dist/test/test-search.d.ts +0 -5
- package/dist/test/test-search.d.ts.map +0 -1
- package/dist/test/test-search.js +0 -141
- package/dist/test/test-search.js.map +0 -1
- package/dist/test/test-simple-alerts.d.ts +0 -6
- package/dist/test/test-simple-alerts.d.ts.map +0 -1
- package/dist/test/test-simple-alerts.js +0 -106
- package/dist/test/test-simple-alerts.js.map +0 -1
- package/dist/test/test-vector-search-engine.d.ts +0 -2
- package/dist/test/test-vector-search-engine.d.ts.map +0 -1
- package/dist/test/test-vector-search-engine.js +0 -225
- package/dist/test/test-vector-search-engine.js.map +0 -1
- package/docker-compose.dev.yml +0 -50
- package/docker-compose.prod.yml +0 -77
- package/docker-compose.yml +0 -43
- package/docs/en/Memento-Goals.md +0 -217
- package/docs/en/Memento-M1-DetailSpecs.md +0 -130
- package/docs/en/Memento-Milestones.md +0 -135
- package/docs/en/Search-Ranking-Memory-Decay-Formulas.md +0 -177
- package/docs/en/api-reference.md +0 -658
- package/docs/en/architecture.md +0 -1302
- package/docs/en/developer-guide.md +0 -1005
- package/docs/en/user-manual.md +0 -595
- package/docs/ko/Memento-Goals.md +0 -217
- package/docs/ko/Memento-M1-DetailSpecs.md +0 -130
- package/docs/ko/Memento-Milestones.md +0 -134
- package/docs/ko/Search-Ranking-Memory-Decay-Formulas.md +0 -177
- package/docs/ko/api-reference.md +0 -658
- package/docs/ko/architecture.md +0 -1302
- package/docs/ko/developer-guide.md +0 -1006
- package/docs/ko/embedding-api-reference.md +0 -122
- package/docs/ko/embedding-configuration.md +0 -62
- package/docs/ko/embedding-performance-benchmark.md +0 -62
- package/docs/ko/embedding-service-guide.md +0 -314
- package/docs/ko/user-manual.md +0 -595
- package/env.example +0 -49
- package/install.sh +0 -191
- package/mcp-http-client.js +0 -218
- package/mcp.json +0 -0
- package/packages/mcp-client/docs/API-REFERENCE.md +0 -560
- package/packages/mcp-client/docs/BEST-PRACTICES.md +0 -564
- package/packages/mcp-client/docs/MIGRATION-GUIDE.md +0 -344
- package/packages/mcp-client/docs/PERFORMANCE-GUIDE.md +0 -476
- package/packages/mcp-client/docs/TROUBLESHOOTING.md +0 -564
- package/packages/mcp-client/package-lock.json +0 -907
- package/packages/mcp-client/package.json +0 -58
- package/packages/mcp-client/performance-optimizer.js +0 -428
- package/packages/mcp-client/test-basic.js +0 -65
- package/packages/mcp-client/test-integration.js +0 -366
- package/src/algorithms/forgetting-algorithm.spec.ts +0 -538
- package/src/algorithms/forgetting-algorithm.ts +0 -243
- package/src/algorithms/hybrid-search-engine.spec.ts +0 -484
- package/src/algorithms/hybrid-search-engine.ts +0 -489
- package/src/algorithms/search-engine.spec.ts +0 -429
- package/src/algorithms/search-engine.ts +0 -392
- package/src/algorithms/search-ranking.spec.ts +0 -293
- package/src/algorithms/search-ranking.ts +0 -407
- package/src/algorithms/spaced-repetition.spec.ts +0 -510
- package/src/algorithms/spaced-repetition.ts +0 -238
- package/src/algorithms/vector-search-engine.ts +0 -505
- package/src/client/index.spec.ts +0 -427
- package/src/client/index.ts +0 -222
- package/src/config/index.spec.ts +0 -339
- package/src/config/index.ts +0 -106
- package/src/database/init.spec.ts +0 -239
- package/src/database/init.ts +0 -130
- package/src/database/migrate.spec.ts +0 -293
- package/src/database/migrate.ts +0 -94
- package/src/database/migrations/001_add_embedding_metadata.sql +0 -29
- package/src/npm-client/context-injector.spec.ts +0 -335
- package/src/npm-client/context-injector.ts +0 -412
- package/src/npm-client/index.spec.ts +0 -108
- package/src/npm-client/index.ts +0 -96
- package/src/npm-client/memento-client.spec.ts +0 -549
- package/src/npm-client/memento-client.ts +0 -501
- package/src/npm-client/memory-manager.spec.ts +0 -374
- package/src/npm-client/memory-manager.ts +0 -414
- package/src/npm-client/types.spec.ts +0 -427
- package/src/npm-client/types.ts +0 -296
- package/src/npm-client/utils.spec.ts +0 -355
- package/src/npm-client/utils.ts +0 -423
- package/src/scripts/copy-assets.js +0 -37
- package/src/server/http-server.spec.ts +0 -648
- package/src/server/http-server.ts +0 -1030
- package/src/server/index-backup.ts +0 -875
- package/src/server/index-refactored.ts +0 -237
- package/src/server/index.spec.ts +0 -281
- package/src/server/index.ts +0 -347
- package/src/server/simple-mcp-server.spec.ts +0 -207
- package/src/server/simple-mcp-server.ts +0 -173
- package/src/services/async-optimizer.spec.ts +0 -569
- package/src/services/async-optimizer.ts +0 -484
- package/src/services/batch-scheduler.ts +0 -759
- package/src/services/cache-service.spec.ts +0 -372
- package/src/services/cache-service.ts +0 -434
- package/src/services/database-optimizer.spec.ts +0 -344
- package/src/services/database-optimizer.ts +0 -450
- package/src/services/embedding-provider-factory.ts +0 -173
- package/src/services/embedding-service.spec.ts +0 -342
- package/src/services/embedding-service.ts +0 -333
- package/src/services/error-logging-service.spec.ts +0 -416
- package/src/services/error-logging-service.ts +0 -383
- package/src/services/forgetting-policy-service.spec.ts +0 -140
- package/src/services/forgetting-policy-service.ts +0 -334
- package/src/services/gemini-embedding-service.spec.ts +0 -463
- package/src/services/gemini-embedding-service.ts +0 -283
- package/src/services/lightweight-embedding-service.spec.ts +0 -458
- package/src/services/lightweight-embedding-service.ts +0 -324
- package/src/services/memory-embedding-service.spec.ts +0 -417
- package/src/services/memory-embedding-service.ts +0 -289
- package/src/services/minilm-embedding-service.spec.ts +0 -104
- package/src/services/minilm-embedding-service.ts +0 -262
- package/src/services/performance-alert-service.spec.ts +0 -517
- package/src/services/performance-alert-service.ts +0 -477
- package/src/services/performance-monitor.spec.ts +0 -401
- package/src/services/performance-monitor.ts +0 -532
- package/src/services/performance-monitoring-integration.spec.ts +0 -478
- package/src/services/performance-monitoring-integration.ts.bak +0 -276
- package/src/services/unified-embedding-service.spec.ts +0 -224
- package/src/services/unified-embedding-service.ts +0 -255
- package/src/test/debug-http-v2.ts +0 -30
- package/src/test/embedding-integration-test.spec.ts +0 -295
- package/src/test/embedding-integration-test.ts +0 -295
- package/src/test/embedding-performance-benchmark.spec.ts +0 -354
- package/src/test/embedding-performance-benchmark.ts +0 -312
- package/src/test/performance-benchmark.ts +0 -565
- package/src/test/test-alerts-direct.ts +0 -136
- package/src/test/test-batch-scheduler-simple.spec.ts +0 -122
- package/src/test/test-batch-scheduler.spec.ts +0 -453
- package/src/test/test-batch-scheduler.ts +0 -182
- package/src/test/test-client.ts +0 -97
- package/src/test/test-embedding.ts +0 -153
- package/src/test/test-error-handling.spec.ts +0 -575
- package/src/test/test-error-logging.ts +0 -117
- package/src/test/test-forgetting.ts +0 -162
- package/src/test/test-gemini-embedding.ts +0 -159
- package/src/test/test-http-server-v2-simple.ts +0 -147
- package/src/test/test-http-server-v2.ts +0 -586
- package/src/test/test-hybrid-search-engine.spec.ts +0 -521
- package/src/test/test-integration-fixed.spec.ts +0 -612
- package/src/test/test-integration.spec.ts +0 -463
- package/src/test/test-lightweight-embedding.ts +0 -208
- package/src/test/test-m1-completion.spec.ts +0 -614
- package/src/test/test-m1-completion.ts +0 -141
- package/src/test/test-m1-integration.spec.ts +0 -514
- package/src/test/test-memory-injection-prompt.spec.ts +0 -650
- package/src/test/test-memory-injection-prompt.ts +0 -391
- package/src/test/test-performance-alerts.ts +0 -125
- package/src/test/test-performance-monitor-updates.spec.ts +0 -490
- package/src/test/test-performance-monitor.spec.ts +0 -284
- package/src/test/test-performance-monitor.ts +0 -228
- package/src/test/test-performance-monitoring.ts +0 -171
- package/src/test/test-search.ts +0 -151
- package/src/test/test-simple-alerts.ts +0 -136
- package/src/test/test-vector-search-engine.spec.ts +0 -408
- package/src/test/test-vector-search-engine.ts +0 -303
- package/src/tools/base-tool.ts +0 -189
- package/src/tools/cleanup-memory-tool.ts +0 -77
- package/src/tools/database-optimize-tool.ts +0 -79
- package/src/tools/error-stats.ts +0 -119
- package/src/tools/forget-tool.spec.ts +0 -613
- package/src/tools/forget-tool.ts +0 -454
- package/src/tools/forgetting-stats-tool.ts +0 -47
- package/src/tools/index.ts +0 -71
- package/src/tools/memory-injection-prompt.ts +0 -257
- package/src/tools/performance-alerts.ts +0 -226
- package/src/tools/performance-stats-tool.ts +0 -48
- package/src/tools/pin-tool.spec.ts +0 -497
- package/src/tools/pin-tool.ts +0 -277
- package/src/tools/recall-tool.spec.ts +0 -475
- package/src/tools/recall-tool.ts +0 -389
- package/src/tools/remember-tool.spec.ts +0 -469
- package/src/tools/remember-tool.ts +0 -112
- package/src/tools/resolve-error.ts +0 -69
- package/src/tools/tool-registry.ts +0 -417
- package/src/tools/types.ts +0 -63
- package/src/tools/unpin-tool.spec.ts +0 -549
- package/src/tools/unpin-tool.ts +0 -306
- package/src/types/embedding.types.ts +0 -78
- package/src/types/index.spec.ts +0 -420
- package/src/types/index.ts +0 -117
- package/src/utils/database.spec.ts +0 -77
- package/src/utils/database.ts +0 -458
- package/src/utils/stopwords.ts +0 -128
- package/start-docker-setup.bat +0 -38
- package/static/logo.png +0 -0
- package/static/memento_logo.svg +0 -2
- package/test-docker.js +0 -103
- package/tsconfig.json +0 -46
- package/vitest.config.ts +0 -23
|
@@ -1,184 +1,184 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* 임베딩 디버깅 스크립트
|
|
5
|
-
* 현재 데이터베이스의 임베딩 상태를 상세히 분석
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import Database from 'better-sqlite3';
|
|
9
|
-
import path from 'path';
|
|
10
|
-
import { fileURLToPath } from 'url';
|
|
11
|
-
|
|
12
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
-
const __dirname = path.dirname(__filename);
|
|
14
|
-
|
|
15
|
-
// 데이터베이스 경로 설정
|
|
16
|
-
const dbPath = process.env.DB_PATH || path.join(__dirname, '..', 'data', 'memory.db');
|
|
17
|
-
|
|
18
|
-
async function debugEmbeddings() {
|
|
19
|
-
console.log('🔍 임베딩 상태 디버깅 시작...');
|
|
20
|
-
|
|
21
|
-
// 데이터베이스 연결
|
|
22
|
-
const db = new Database(dbPath);
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
// 1. 전체 임베딩 통계
|
|
26
|
-
console.log('\n📊 전체 임베딩 통계:');
|
|
27
|
-
const totalStats = db.prepare(`
|
|
28
|
-
SELECT
|
|
29
|
-
COUNT(*) as total_count,
|
|
30
|
-
AVG(dim) as avg_dim,
|
|
31
|
-
MIN(dim) as min_dim,
|
|
32
|
-
MAX(dim) as max_dim,
|
|
33
|
-
COUNT(DISTINCT dim) as unique_dims
|
|
34
|
-
FROM memory_embedding
|
|
35
|
-
`).get();
|
|
36
|
-
|
|
37
|
-
console.log(`- 총 임베딩 개수: ${totalStats.total_count}`);
|
|
38
|
-
console.log(`- 평균 차원: ${totalStats.avg_dim?.toFixed(1) || 'N/A'}`);
|
|
39
|
-
console.log(`- 최소 차원: ${totalStats.min_dim || 'N/A'}`);
|
|
40
|
-
console.log(`- 최대 차원: ${totalStats.max_dim || 'N/A'}`);
|
|
41
|
-
console.log(`- 고유 차원 수: ${totalStats.unique_dims}`);
|
|
42
|
-
|
|
43
|
-
// 2. 차원별 분포
|
|
44
|
-
console.log('\n📈 차원별 분포:');
|
|
45
|
-
const dimensionStats = db.prepare(`
|
|
46
|
-
SELECT
|
|
47
|
-
dim,
|
|
48
|
-
COUNT(*) as count,
|
|
49
|
-
GROUP_CONCAT(memory_id) as memory_ids
|
|
50
|
-
FROM memory_embedding
|
|
51
|
-
GROUP BY dim
|
|
52
|
-
ORDER BY dim
|
|
53
|
-
`).all();
|
|
54
|
-
|
|
55
|
-
dimensionStats.forEach(stat => {
|
|
56
|
-
console.log(`- ${stat.dim}차원: ${stat.count}개`);
|
|
57
|
-
if (stat.count <= 5) {
|
|
58
|
-
console.log(` 메모리 ID: ${stat.memory_ids}`);
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
// 3. 모델별 분포
|
|
63
|
-
console.log('\n🤖 모델별 분포:');
|
|
64
|
-
const modelStats = db.prepare(`
|
|
65
|
-
SELECT
|
|
66
|
-
model,
|
|
67
|
-
COUNT(*) as count,
|
|
68
|
-
AVG(dim) as avg_dim
|
|
69
|
-
FROM memory_embedding
|
|
70
|
-
GROUP BY model
|
|
71
|
-
ORDER BY count DESC
|
|
72
|
-
`).all();
|
|
73
|
-
|
|
74
|
-
modelStats.forEach(stat => {
|
|
75
|
-
console.log(`- ${stat.model || 'NULL'}: ${stat.count}개 (평균 ${stat.avg_dim?.toFixed(1)}차원)`);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
// 4. 최근 생성된 임베딩들
|
|
79
|
-
console.log('\n🕒 최근 생성된 임베딩 (최대 10개):');
|
|
80
|
-
const recentEmbeddings = db.prepare(`
|
|
81
|
-
SELECT
|
|
82
|
-
memory_id,
|
|
83
|
-
dim,
|
|
84
|
-
model,
|
|
85
|
-
created_at,
|
|
86
|
-
LENGTH(embedding) as embedding_length
|
|
87
|
-
FROM memory_embedding
|
|
88
|
-
ORDER BY created_at DESC
|
|
89
|
-
LIMIT 10
|
|
90
|
-
`).all();
|
|
91
|
-
|
|
92
|
-
recentEmbeddings.forEach(emb => {
|
|
93
|
-
console.log(`- ${emb.memory_id}: ${emb.dim}차원, ${emb.model}, ${emb.created_at}`);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
// 5. 문제가 있는 임베딩 찾기
|
|
97
|
-
console.log('\n⚠️ 문제가 있을 수 있는 임베딩들:');
|
|
98
|
-
|
|
99
|
-
// 차원이 0인 경우
|
|
100
|
-
const zeroDim = db.prepare(`
|
|
101
|
-
SELECT memory_id, dim, model FROM memory_embedding WHERE dim = 0
|
|
102
|
-
`).all();
|
|
103
|
-
|
|
104
|
-
if (zeroDim.length > 0) {
|
|
105
|
-
console.log(`- 차원이 0인 임베딩: ${zeroDim.length}개`);
|
|
106
|
-
zeroDim.forEach(emb => {
|
|
107
|
-
console.log(` ${emb.memory_id} (${emb.model})`);
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// 차원이 매우 큰 경우 (1536보다 큰 경우)
|
|
112
|
-
const largeDim = db.prepare(`
|
|
113
|
-
SELECT memory_id, dim, model FROM memory_embedding WHERE dim > 1536
|
|
114
|
-
`).all();
|
|
115
|
-
|
|
116
|
-
if (largeDim.length > 0) {
|
|
117
|
-
console.log(`- 차원이 1536보다 큰 임베딩: ${largeDim.length}개`);
|
|
118
|
-
largeDim.forEach(emb => {
|
|
119
|
-
console.log(` ${emb.memory_id}: ${emb.dim}차원 (${emb.model})`);
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// 6. 임베딩 데이터 샘플 확인
|
|
124
|
-
console.log('\n🔬 임베딩 데이터 샘플 (첫 3개):');
|
|
125
|
-
const samples = db.prepare(`
|
|
126
|
-
SELECT
|
|
127
|
-
memory_id,
|
|
128
|
-
dim,
|
|
129
|
-
model,
|
|
130
|
-
SUBSTR(embedding, 1, 100) as embedding_preview
|
|
131
|
-
FROM memory_embedding
|
|
132
|
-
LIMIT 3
|
|
133
|
-
`).all();
|
|
134
|
-
|
|
135
|
-
samples.forEach((sample, index) => {
|
|
136
|
-
console.log(`\n샘플 ${index + 1}:`);
|
|
137
|
-
console.log(`- 메모리 ID: ${sample.memory_id}`);
|
|
138
|
-
console.log(`- 차원: ${sample.dim}`);
|
|
139
|
-
console.log(`- 모델: ${sample.model}`);
|
|
140
|
-
console.log(`- 임베딩 미리보기: ${sample.embedding_preview}...`);
|
|
141
|
-
|
|
142
|
-
// 실제 벡터 길이 확인
|
|
143
|
-
try {
|
|
144
|
-
const fullEmbedding = db.prepare(`
|
|
145
|
-
SELECT embedding FROM memory_embedding WHERE memory_id = ?
|
|
146
|
-
`).get(sample.memory_id);
|
|
147
|
-
|
|
148
|
-
const vector = JSON.parse(fullEmbedding.embedding);
|
|
149
|
-
console.log(`- 실제 벡터 길이: ${vector.length}`);
|
|
150
|
-
console.log(`- 첫 5개 값: [${vector.slice(0, 5).join(', ')}...]`);
|
|
151
|
-
} catch (error) {
|
|
152
|
-
console.log(`- 벡터 파싱 오류: ${error.message}`);
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
// 7. 메모리 아이템과의 연결 상태 확인
|
|
157
|
-
console.log('\n🔗 메모리 아이템 연결 상태:');
|
|
158
|
-
const connectionStats = db.prepare(`
|
|
159
|
-
SELECT
|
|
160
|
-
(SELECT COUNT(*) FROM memory_item) as total_memories,
|
|
161
|
-
(SELECT COUNT(*) FROM memory_embedding) as total_embeddings,
|
|
162
|
-
(SELECT COUNT(*) FROM memory_item mi
|
|
163
|
-
LEFT JOIN memory_embedding me ON mi.id = me.memory_id
|
|
164
|
-
WHERE me.memory_id IS NULL) as memories_without_embedding
|
|
165
|
-
`).get();
|
|
166
|
-
|
|
167
|
-
console.log(`- 총 메모리 개수: ${connectionStats.total_memories}`);
|
|
168
|
-
console.log(`- 총 임베딩 개수: ${connectionStats.total_embeddings}`);
|
|
169
|
-
console.log(`- 임베딩이 없는 메모리: ${connectionStats.memories_without_embedding}`);
|
|
170
|
-
|
|
171
|
-
} catch (error) {
|
|
172
|
-
console.error('❌ 디버깅 실패:', error);
|
|
173
|
-
process.exit(1);
|
|
174
|
-
} finally {
|
|
175
|
-
db.close();
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
// 스크립트 실행
|
|
180
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
181
|
-
debugEmbeddings().catch(console.error);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
export { debugEmbeddings };
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 임베딩 디버깅 스크립트
|
|
5
|
+
* 현재 데이터베이스의 임베딩 상태를 상세히 분석
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import Database from 'better-sqlite3';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
|
|
12
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
+
const __dirname = path.dirname(__filename);
|
|
14
|
+
|
|
15
|
+
// 데이터베이스 경로 설정
|
|
16
|
+
const dbPath = process.env.DB_PATH || path.join(__dirname, '..', 'data', 'memory.db');
|
|
17
|
+
|
|
18
|
+
async function debugEmbeddings() {
|
|
19
|
+
console.log('🔍 임베딩 상태 디버깅 시작...');
|
|
20
|
+
|
|
21
|
+
// 데이터베이스 연결
|
|
22
|
+
const db = new Database(dbPath);
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
// 1. 전체 임베딩 통계
|
|
26
|
+
console.log('\n📊 전체 임베딩 통계:');
|
|
27
|
+
const totalStats = db.prepare(`
|
|
28
|
+
SELECT
|
|
29
|
+
COUNT(*) as total_count,
|
|
30
|
+
AVG(dim) as avg_dim,
|
|
31
|
+
MIN(dim) as min_dim,
|
|
32
|
+
MAX(dim) as max_dim,
|
|
33
|
+
COUNT(DISTINCT dim) as unique_dims
|
|
34
|
+
FROM memory_embedding
|
|
35
|
+
`).get();
|
|
36
|
+
|
|
37
|
+
console.log(`- 총 임베딩 개수: ${totalStats.total_count}`);
|
|
38
|
+
console.log(`- 평균 차원: ${totalStats.avg_dim?.toFixed(1) || 'N/A'}`);
|
|
39
|
+
console.log(`- 최소 차원: ${totalStats.min_dim || 'N/A'}`);
|
|
40
|
+
console.log(`- 최대 차원: ${totalStats.max_dim || 'N/A'}`);
|
|
41
|
+
console.log(`- 고유 차원 수: ${totalStats.unique_dims}`);
|
|
42
|
+
|
|
43
|
+
// 2. 차원별 분포
|
|
44
|
+
console.log('\n📈 차원별 분포:');
|
|
45
|
+
const dimensionStats = db.prepare(`
|
|
46
|
+
SELECT
|
|
47
|
+
dim,
|
|
48
|
+
COUNT(*) as count,
|
|
49
|
+
GROUP_CONCAT(memory_id) as memory_ids
|
|
50
|
+
FROM memory_embedding
|
|
51
|
+
GROUP BY dim
|
|
52
|
+
ORDER BY dim
|
|
53
|
+
`).all();
|
|
54
|
+
|
|
55
|
+
dimensionStats.forEach(stat => {
|
|
56
|
+
console.log(`- ${stat.dim}차원: ${stat.count}개`);
|
|
57
|
+
if (stat.count <= 5) {
|
|
58
|
+
console.log(` 메모리 ID: ${stat.memory_ids}`);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// 3. 모델별 분포
|
|
63
|
+
console.log('\n🤖 모델별 분포:');
|
|
64
|
+
const modelStats = db.prepare(`
|
|
65
|
+
SELECT
|
|
66
|
+
model,
|
|
67
|
+
COUNT(*) as count,
|
|
68
|
+
AVG(dim) as avg_dim
|
|
69
|
+
FROM memory_embedding
|
|
70
|
+
GROUP BY model
|
|
71
|
+
ORDER BY count DESC
|
|
72
|
+
`).all();
|
|
73
|
+
|
|
74
|
+
modelStats.forEach(stat => {
|
|
75
|
+
console.log(`- ${stat.model || 'NULL'}: ${stat.count}개 (평균 ${stat.avg_dim?.toFixed(1)}차원)`);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// 4. 최근 생성된 임베딩들
|
|
79
|
+
console.log('\n🕒 최근 생성된 임베딩 (최대 10개):');
|
|
80
|
+
const recentEmbeddings = db.prepare(`
|
|
81
|
+
SELECT
|
|
82
|
+
memory_id,
|
|
83
|
+
dim,
|
|
84
|
+
model,
|
|
85
|
+
created_at,
|
|
86
|
+
LENGTH(embedding) as embedding_length
|
|
87
|
+
FROM memory_embedding
|
|
88
|
+
ORDER BY created_at DESC
|
|
89
|
+
LIMIT 10
|
|
90
|
+
`).all();
|
|
91
|
+
|
|
92
|
+
recentEmbeddings.forEach(emb => {
|
|
93
|
+
console.log(`- ${emb.memory_id}: ${emb.dim}차원, ${emb.model}, ${emb.created_at}`);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
// 5. 문제가 있는 임베딩 찾기
|
|
97
|
+
console.log('\n⚠️ 문제가 있을 수 있는 임베딩들:');
|
|
98
|
+
|
|
99
|
+
// 차원이 0인 경우
|
|
100
|
+
const zeroDim = db.prepare(`
|
|
101
|
+
SELECT memory_id, dim, model FROM memory_embedding WHERE dim = 0
|
|
102
|
+
`).all();
|
|
103
|
+
|
|
104
|
+
if (zeroDim.length > 0) {
|
|
105
|
+
console.log(`- 차원이 0인 임베딩: ${zeroDim.length}개`);
|
|
106
|
+
zeroDim.forEach(emb => {
|
|
107
|
+
console.log(` ${emb.memory_id} (${emb.model})`);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// 차원이 매우 큰 경우 (1536보다 큰 경우)
|
|
112
|
+
const largeDim = db.prepare(`
|
|
113
|
+
SELECT memory_id, dim, model FROM memory_embedding WHERE dim > 1536
|
|
114
|
+
`).all();
|
|
115
|
+
|
|
116
|
+
if (largeDim.length > 0) {
|
|
117
|
+
console.log(`- 차원이 1536보다 큰 임베딩: ${largeDim.length}개`);
|
|
118
|
+
largeDim.forEach(emb => {
|
|
119
|
+
console.log(` ${emb.memory_id}: ${emb.dim}차원 (${emb.model})`);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// 6. 임베딩 데이터 샘플 확인
|
|
124
|
+
console.log('\n🔬 임베딩 데이터 샘플 (첫 3개):');
|
|
125
|
+
const samples = db.prepare(`
|
|
126
|
+
SELECT
|
|
127
|
+
memory_id,
|
|
128
|
+
dim,
|
|
129
|
+
model,
|
|
130
|
+
SUBSTR(embedding, 1, 100) as embedding_preview
|
|
131
|
+
FROM memory_embedding
|
|
132
|
+
LIMIT 3
|
|
133
|
+
`).all();
|
|
134
|
+
|
|
135
|
+
samples.forEach((sample, index) => {
|
|
136
|
+
console.log(`\n샘플 ${index + 1}:`);
|
|
137
|
+
console.log(`- 메모리 ID: ${sample.memory_id}`);
|
|
138
|
+
console.log(`- 차원: ${sample.dim}`);
|
|
139
|
+
console.log(`- 모델: ${sample.model}`);
|
|
140
|
+
console.log(`- 임베딩 미리보기: ${sample.embedding_preview}...`);
|
|
141
|
+
|
|
142
|
+
// 실제 벡터 길이 확인
|
|
143
|
+
try {
|
|
144
|
+
const fullEmbedding = db.prepare(`
|
|
145
|
+
SELECT embedding FROM memory_embedding WHERE memory_id = ?
|
|
146
|
+
`).get(sample.memory_id);
|
|
147
|
+
|
|
148
|
+
const vector = JSON.parse(fullEmbedding.embedding);
|
|
149
|
+
console.log(`- 실제 벡터 길이: ${vector.length}`);
|
|
150
|
+
console.log(`- 첫 5개 값: [${vector.slice(0, 5).join(', ')}...]`);
|
|
151
|
+
} catch (error) {
|
|
152
|
+
console.log(`- 벡터 파싱 오류: ${error.message}`);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// 7. 메모리 아이템과의 연결 상태 확인
|
|
157
|
+
console.log('\n🔗 메모리 아이템 연결 상태:');
|
|
158
|
+
const connectionStats = db.prepare(`
|
|
159
|
+
SELECT
|
|
160
|
+
(SELECT COUNT(*) FROM memory_item) as total_memories,
|
|
161
|
+
(SELECT COUNT(*) FROM memory_embedding) as total_embeddings,
|
|
162
|
+
(SELECT COUNT(*) FROM memory_item mi
|
|
163
|
+
LEFT JOIN memory_embedding me ON mi.id = me.memory_id
|
|
164
|
+
WHERE me.memory_id IS NULL) as memories_without_embedding
|
|
165
|
+
`).get();
|
|
166
|
+
|
|
167
|
+
console.log(`- 총 메모리 개수: ${connectionStats.total_memories}`);
|
|
168
|
+
console.log(`- 총 임베딩 개수: ${connectionStats.total_embeddings}`);
|
|
169
|
+
console.log(`- 임베딩이 없는 메모리: ${connectionStats.memories_without_embedding}`);
|
|
170
|
+
|
|
171
|
+
} catch (error) {
|
|
172
|
+
console.error('❌ 디버깅 실패:', error);
|
|
173
|
+
process.exit(1);
|
|
174
|
+
} finally {
|
|
175
|
+
db.close();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// 스크립트 실행
|
|
180
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
181
|
+
debugEmbeddings().catch(console.error);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export { debugEmbeddings };
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
-- 임베딩 데이터 마이그레이션 SQL
|
|
2
|
-
-- 기존 데이터에 메타데이터 추가
|
|
3
|
-
|
|
4
|
-
-- 1. 기존 데이터 업데이트
|
|
5
|
-
UPDATE memory_embedding
|
|
6
|
-
SET
|
|
7
|
-
embedding_provider = CASE
|
|
8
|
-
WHEN model = 'lightweight-hybrid' THEN 'tfidf'
|
|
9
|
-
WHEN model IS NULL OR model = '' THEN 'tfidf'
|
|
10
|
-
ELSE 'unknown'
|
|
11
|
-
END,
|
|
12
|
-
dimensions = dim,
|
|
13
|
-
created_by = 'legacy'
|
|
14
|
-
WHERE embedding_provider IS NULL;
|
|
15
|
-
|
|
16
|
-
-- 2. 인덱스 생성
|
|
17
|
-
CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider ON memory_embedding(embedding_provider);
|
|
18
|
-
CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions);
|
|
19
|
-
CREATE INDEX IF NOT EXISTS idx_memory_embedding_created_by ON memory_embedding(created_by);
|
|
20
|
-
|
|
21
|
-
-- 3. 검증 쿼리
|
|
22
|
-
SELECT
|
|
23
|
-
COUNT(*) as total,
|
|
24
|
-
COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
|
|
25
|
-
COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
|
|
26
|
-
COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
|
|
27
|
-
FROM memory_embedding;
|
|
28
|
-
|
|
29
|
-
-- 4. 최종 데이터 분포 확인
|
|
30
|
-
SELECT
|
|
31
|
-
embedding_provider,
|
|
32
|
-
dimensions,
|
|
33
|
-
COUNT(*) as count
|
|
34
|
-
FROM memory_embedding
|
|
35
|
-
GROUP BY embedding_provider, dimensions
|
|
36
|
-
ORDER BY count DESC;
|
|
1
|
+
-- 임베딩 데이터 마이그레이션 SQL
|
|
2
|
+
-- 기존 데이터에 메타데이터 추가
|
|
3
|
+
|
|
4
|
+
-- 1. 기존 데이터 업데이트
|
|
5
|
+
UPDATE memory_embedding
|
|
6
|
+
SET
|
|
7
|
+
embedding_provider = CASE
|
|
8
|
+
WHEN model = 'lightweight-hybrid' THEN 'tfidf'
|
|
9
|
+
WHEN model IS NULL OR model = '' THEN 'tfidf'
|
|
10
|
+
ELSE 'unknown'
|
|
11
|
+
END,
|
|
12
|
+
dimensions = dim,
|
|
13
|
+
created_by = 'legacy'
|
|
14
|
+
WHERE embedding_provider IS NULL;
|
|
15
|
+
|
|
16
|
+
-- 2. 인덱스 생성
|
|
17
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider ON memory_embedding(embedding_provider);
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions);
|
|
19
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_created_by ON memory_embedding(created_by);
|
|
20
|
+
|
|
21
|
+
-- 3. 검증 쿼리
|
|
22
|
+
SELECT
|
|
23
|
+
COUNT(*) as total,
|
|
24
|
+
COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
|
|
25
|
+
COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
|
|
26
|
+
COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
|
|
27
|
+
FROM memory_embedding;
|
|
28
|
+
|
|
29
|
+
-- 4. 최종 데이터 분포 확인
|
|
30
|
+
SELECT
|
|
31
|
+
embedding_provider,
|
|
32
|
+
dimensions,
|
|
33
|
+
COUNT(*) as count
|
|
34
|
+
FROM memory_embedding
|
|
35
|
+
GROUP BY embedding_provider, dimensions
|
|
36
|
+
ORDER BY count DESC;
|
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
echo "🐳 도커 환경에서 임베딩 데이터 마이그레이션 시작..."
|
|
4
|
-
|
|
5
|
-
# 1. 백업 생성
|
|
6
|
-
echo "💾 백업 생성 중..."
|
|
7
|
-
cp /app/data/memory.db /app/data/memory-backup-$(date +%s).db
|
|
8
|
-
|
|
9
|
-
# 2. sqlite-vec 없이 새로운 데이터베이스 생성
|
|
10
|
-
echo "📝 새로운 데이터베이스 생성 중..."
|
|
11
|
-
sqlite3 /app/data/memory-new.db << 'EOF'
|
|
12
|
-
-- 메인 기억 테이블
|
|
13
|
-
CREATE TABLE memory_item (
|
|
14
|
-
id TEXT PRIMARY KEY,
|
|
15
|
-
type TEXT CHECK (type IN ('working','episodic','semantic','procedural')) NOT NULL,
|
|
16
|
-
content TEXT NOT NULL,
|
|
17
|
-
importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
|
|
18
|
-
privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
|
|
19
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
20
|
-
last_accessed TIMESTAMP,
|
|
21
|
-
pinned BOOLEAN DEFAULT FALSE,
|
|
22
|
-
tags TEXT,
|
|
23
|
-
source TEXT,
|
|
24
|
-
view_count INTEGER DEFAULT 0,
|
|
25
|
-
cite_count INTEGER DEFAULT 0,
|
|
26
|
-
edit_count INTEGER DEFAULT 0
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
-- 임베딩 저장 테이블 (새로운 컬럼 포함)
|
|
30
|
-
CREATE TABLE memory_embedding (
|
|
31
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
32
|
-
memory_id TEXT NOT NULL,
|
|
33
|
-
embedding TEXT NOT NULL,
|
|
34
|
-
dim INTEGER NOT NULL,
|
|
35
|
-
model TEXT,
|
|
36
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
37
|
-
embedding_provider TEXT,
|
|
38
|
-
dimensions INTEGER,
|
|
39
|
-
created_by TEXT DEFAULT 'migration',
|
|
40
|
-
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
41
|
-
UNIQUE(memory_id)
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
-- 인덱스 생성
|
|
45
|
-
CREATE INDEX idx_memory_embedding_provider ON memory_embedding(embedding_provider);
|
|
46
|
-
CREATE INDEX idx_memory_embedding_dimensions ON memory_embedding(dimensions);
|
|
47
|
-
CREATE INDEX idx_memory_embedding_created_by ON memory_embedding(created_by);
|
|
48
|
-
EOF
|
|
49
|
-
|
|
50
|
-
# 3. 데이터 복사
|
|
51
|
-
echo "📊 데이터 복사 중..."
|
|
52
|
-
sqlite3 /app/data/memory-new.db << 'EOF'
|
|
53
|
-
ATTACH DATABASE '/app/data/memory.db' AS source;
|
|
54
|
-
|
|
55
|
-
-- memory_item 데이터 복사
|
|
56
|
-
INSERT INTO memory_item
|
|
57
|
-
SELECT * FROM source.memory_item;
|
|
58
|
-
|
|
59
|
-
-- memory_embedding 데이터 복사 및 메타데이터 추가
|
|
60
|
-
INSERT INTO memory_embedding (memory_id, embedding, dim, model, created_at, embedding_provider, dimensions, created_by)
|
|
61
|
-
SELECT
|
|
62
|
-
memory_id,
|
|
63
|
-
embedding,
|
|
64
|
-
dim,
|
|
65
|
-
model,
|
|
66
|
-
created_at,
|
|
67
|
-
CASE
|
|
68
|
-
WHEN model = 'lightweight-hybrid' THEN 'tfidf'
|
|
69
|
-
WHEN model IS NULL OR model = '' THEN 'tfidf'
|
|
70
|
-
ELSE 'unknown'
|
|
71
|
-
END as embedding_provider,
|
|
72
|
-
dim as dimensions,
|
|
73
|
-
'legacy' as created_by
|
|
74
|
-
FROM source.memory_embedding;
|
|
75
|
-
|
|
76
|
-
DETACH DATABASE source;
|
|
77
|
-
EOF
|
|
78
|
-
|
|
79
|
-
# 4. 검증
|
|
80
|
-
echo "🔍 마이그레이션 검증 중..."
|
|
81
|
-
sqlite3 /app/data/memory-new.db << 'EOF'
|
|
82
|
-
SELECT
|
|
83
|
-
COUNT(*) as total,
|
|
84
|
-
COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
|
|
85
|
-
COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
|
|
86
|
-
COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
|
|
87
|
-
FROM memory_embedding;
|
|
88
|
-
|
|
89
|
-
SELECT
|
|
90
|
-
embedding_provider,
|
|
91
|
-
dimensions,
|
|
92
|
-
COUNT(*) as count
|
|
93
|
-
FROM memory_embedding
|
|
94
|
-
GROUP BY embedding_provider, dimensions
|
|
95
|
-
ORDER BY count DESC;
|
|
96
|
-
EOF
|
|
97
|
-
|
|
98
|
-
# 5. 원본 데이터베이스 교체
|
|
99
|
-
echo "🔄 데이터베이스 교체 중..."
|
|
100
|
-
mv /app/data/memory.db /app/data/memory-old.db
|
|
101
|
-
mv /app/data/memory-new.db /app/data/memory.db
|
|
102
|
-
|
|
103
|
-
echo "✅ 마이그레이션 완료!"
|
|
104
|
-
echo "💾 백업 파일: /app/data/memory-backup-*.db"
|
|
105
|
-
echo "🔄 롤백이 필요한 경우: mv /app/data/memory-old.db /app/data/memory.db"
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
echo "🐳 도커 환경에서 임베딩 데이터 마이그레이션 시작..."
|
|
4
|
+
|
|
5
|
+
# 1. 백업 생성
|
|
6
|
+
echo "💾 백업 생성 중..."
|
|
7
|
+
cp /app/data/memory.db /app/data/memory-backup-$(date +%s).db
|
|
8
|
+
|
|
9
|
+
# 2. sqlite-vec 없이 새로운 데이터베이스 생성
|
|
10
|
+
echo "📝 새로운 데이터베이스 생성 중..."
|
|
11
|
+
sqlite3 /app/data/memory-new.db << 'EOF'
|
|
12
|
+
-- 메인 기억 테이블
|
|
13
|
+
CREATE TABLE memory_item (
|
|
14
|
+
id TEXT PRIMARY KEY,
|
|
15
|
+
type TEXT CHECK (type IN ('working','episodic','semantic','procedural')) NOT NULL,
|
|
16
|
+
content TEXT NOT NULL,
|
|
17
|
+
importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
|
|
18
|
+
privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
|
|
19
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
20
|
+
last_accessed TIMESTAMP,
|
|
21
|
+
pinned BOOLEAN DEFAULT FALSE,
|
|
22
|
+
tags TEXT,
|
|
23
|
+
source TEXT,
|
|
24
|
+
view_count INTEGER DEFAULT 0,
|
|
25
|
+
cite_count INTEGER DEFAULT 0,
|
|
26
|
+
edit_count INTEGER DEFAULT 0
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
-- 임베딩 저장 테이블 (새로운 컬럼 포함)
|
|
30
|
+
CREATE TABLE memory_embedding (
|
|
31
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
32
|
+
memory_id TEXT NOT NULL,
|
|
33
|
+
embedding TEXT NOT NULL,
|
|
34
|
+
dim INTEGER NOT NULL,
|
|
35
|
+
model TEXT,
|
|
36
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
37
|
+
embedding_provider TEXT,
|
|
38
|
+
dimensions INTEGER,
|
|
39
|
+
created_by TEXT DEFAULT 'migration',
|
|
40
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
41
|
+
UNIQUE(memory_id)
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
-- 인덱스 생성
|
|
45
|
+
CREATE INDEX idx_memory_embedding_provider ON memory_embedding(embedding_provider);
|
|
46
|
+
CREATE INDEX idx_memory_embedding_dimensions ON memory_embedding(dimensions);
|
|
47
|
+
CREATE INDEX idx_memory_embedding_created_by ON memory_embedding(created_by);
|
|
48
|
+
EOF
|
|
49
|
+
|
|
50
|
+
# 3. 데이터 복사
|
|
51
|
+
echo "📊 데이터 복사 중..."
|
|
52
|
+
sqlite3 /app/data/memory-new.db << 'EOF'
|
|
53
|
+
ATTACH DATABASE '/app/data/memory.db' AS source;
|
|
54
|
+
|
|
55
|
+
-- memory_item 데이터 복사
|
|
56
|
+
INSERT INTO memory_item
|
|
57
|
+
SELECT * FROM source.memory_item;
|
|
58
|
+
|
|
59
|
+
-- memory_embedding 데이터 복사 및 메타데이터 추가
|
|
60
|
+
INSERT INTO memory_embedding (memory_id, embedding, dim, model, created_at, embedding_provider, dimensions, created_by)
|
|
61
|
+
SELECT
|
|
62
|
+
memory_id,
|
|
63
|
+
embedding,
|
|
64
|
+
dim,
|
|
65
|
+
model,
|
|
66
|
+
created_at,
|
|
67
|
+
CASE
|
|
68
|
+
WHEN model = 'lightweight-hybrid' THEN 'tfidf'
|
|
69
|
+
WHEN model IS NULL OR model = '' THEN 'tfidf'
|
|
70
|
+
ELSE 'unknown'
|
|
71
|
+
END as embedding_provider,
|
|
72
|
+
dim as dimensions,
|
|
73
|
+
'legacy' as created_by
|
|
74
|
+
FROM source.memory_embedding;
|
|
75
|
+
|
|
76
|
+
DETACH DATABASE source;
|
|
77
|
+
EOF
|
|
78
|
+
|
|
79
|
+
# 4. 검증
|
|
80
|
+
echo "🔍 마이그레이션 검증 중..."
|
|
81
|
+
sqlite3 /app/data/memory-new.db << 'EOF'
|
|
82
|
+
SELECT
|
|
83
|
+
COUNT(*) as total,
|
|
84
|
+
COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
|
|
85
|
+
COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
|
|
86
|
+
COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
|
|
87
|
+
FROM memory_embedding;
|
|
88
|
+
|
|
89
|
+
SELECT
|
|
90
|
+
embedding_provider,
|
|
91
|
+
dimensions,
|
|
92
|
+
COUNT(*) as count
|
|
93
|
+
FROM memory_embedding
|
|
94
|
+
GROUP BY embedding_provider, dimensions
|
|
95
|
+
ORDER BY count DESC;
|
|
96
|
+
EOF
|
|
97
|
+
|
|
98
|
+
# 5. 원본 데이터베이스 교체
|
|
99
|
+
echo "🔄 데이터베이스 교체 중..."
|
|
100
|
+
mv /app/data/memory.db /app/data/memory-old.db
|
|
101
|
+
mv /app/data/memory-new.db /app/data/memory.db
|
|
102
|
+
|
|
103
|
+
echo "✅ 마이그레이션 완료!"
|
|
104
|
+
echo "💾 백업 파일: /app/data/memory-backup-*.db"
|
|
105
|
+
echo "🔄 롤백이 필요한 경우: mv /app/data/memory-old.db /app/data/memory.db"
|