memento-mcp-server 1.30.2 → 1.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/ranking-weights.toml +5 -0
- package/dist/node_modules/@memento/core/dist/config/ranking-weights.toml +5 -0
- package/dist/node_modules/@memento/core/dist/domains/memory/recall/recall-tool-schema.d.ts +4 -4
- package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool-schema.d.ts +4 -4
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/category-quality-aggregator.js +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/category-quality-aggregator.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.d.ts +234 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.js +210 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-comparison.d.ts +22 -1027
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-comparison.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-comparison.js +16 -1997
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-comparison.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-degradation-alerts.d.ts +116 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-degradation-alerts.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-degradation-alerts.js +287 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-degradation-alerts.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-extreme-scenarios.d.ts +218 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-extreme-scenarios.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-extreme-scenarios.js +317 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-extreme-scenarios.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-files.d.ts +92 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-files.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-files.js +458 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-files.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-ground-truth.d.ts +105 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-ground-truth.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-ground-truth.js +200 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-ground-truth.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-paths.d.ts +8 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-paths.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-paths.js +10 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-paths.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-quality-comparison.d.ts +273 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-quality-comparison.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-quality-comparison.js +388 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-quality-comparison.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-search-results.d.ts +79 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-search-results.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-search-results.js +182 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-search-results.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/relation/tools/visualize-relations-tool.d.ts +2 -2
- package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-engine/search-engine-ranking.d.ts +2 -1
- package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-engine/search-engine-ranking.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-engine/search-engine-ranking.js +7 -3
- package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-engine/search-engine-ranking.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/index.d.ts +1 -1
- package/dist/node_modules/@memento/core/dist/index.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/index.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.d.ts +17 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.js +40 -2
- package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/repositories/job-run-repository.d.ts +9 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/repositories/job-run-repository.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/repositories/job-run-repository.js +19 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/repositories/job-run-repository.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/config/environment.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/config/environment.js +5 -2
- package/dist/node_modules/@memento/core/dist/shared/config/environment.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.d.ts +5 -0
- package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.js +14 -2
- package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.d.ts +3 -1
- package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.js +1 -1
- package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.js.map +1 -1
- package/dist/node_modules/@memento/core/package.json +1 -1
- package/dist/node_modules/@memento/core/scripts/copy-assets.js +8 -3
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +1 -20
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/routes/admin/admin-batch.routes.d.ts.map +1 -1
- package/dist/server/routes/admin/admin-batch.routes.js +2 -0
- package/dist/server/routes/admin/admin-batch.routes.js.map +1 -1
- package/dist/server/routes/admin/admin-graph-response.d.ts +1 -0
- package/dist/server/routes/admin/admin-graph-response.d.ts.map +1 -1
- package/dist/server/routes/admin/admin-graph-response.js +18 -0
- package/dist/server/routes/admin/admin-graph-response.js.map +1 -1
- package/dist/server/routes/admin/admin-graph.routes.d.ts.map +1 -1
- package/dist/server/routes/admin/admin-graph.routes.js +10 -0
- package/dist/server/routes/admin/admin-graph.routes.js.map +1 -1
- package/dist/server/routes/admin/admin-status-service.d.ts +49 -0
- package/dist/server/routes/admin/admin-status-service.d.ts.map +1 -0
- package/dist/server/routes/admin/admin-status-service.js +168 -0
- package/dist/server/routes/admin/admin-status-service.js.map +1 -0
- package/dist/server/routes/admin/admin-status.routes.d.ts +7 -0
- package/dist/server/routes/admin/admin-status.routes.d.ts.map +1 -0
- package/dist/server/routes/admin/admin-status.routes.js +10 -0
- package/dist/server/routes/admin/admin-status.routes.js.map +1 -0
- package/dist/server/routes/admin.routes.d.ts.map +1 -1
- package/dist/server/routes/admin.routes.js +2 -0
- package/dist/server/routes/admin.routes.js.map +1 -1
- package/dist/server/routes/mcp/message-processor.d.ts.map +1 -1
- package/dist/server/routes/mcp/message-processor.js +50 -7
- package/dist/server/routes/mcp/message-processor.js.map +1 -1
- package/dist/server/static-root.d.ts +6 -0
- package/dist/server/static-root.d.ts.map +1 -0
- package/dist/server/static-root.js +37 -0
- package/dist/server/static-root.js.map +1 -0
- package/package.json +3 -1
- package/static/css/components.css +315 -0
- package/static/css/dashboard.css +2387 -0
- package/static/css/tokens.css +168 -0
- package/static/dashboard.html +836 -0
- package/static/graph.html +672 -0
- package/static/js/agent-sessions-panel-data.js +129 -0
- package/static/js/agent-sessions-panel-import.js +110 -0
- package/static/js/agent-sessions-panel-render-dom.js +45 -0
- package/static/js/agent-sessions-panel-render-injections.js +72 -0
- package/static/js/agent-sessions-panel-render-provenance.js +52 -0
- package/static/js/agent-sessions-panel-render-sessions.js +92 -0
- package/static/js/agent-sessions-panel-render-timeline-category.js +26 -0
- package/static/js/agent-sessions-panel-render-timeline.js +80 -0
- package/static/js/agent-sessions-panel-render.js +26 -0
- package/static/js/agent-sessions-panel-shared.js +103 -0
- package/static/js/agent-sessions-panel.js +91 -0
- package/static/js/anchor-map-data.js +130 -0
- package/static/js/anchor-map-layout.js +260 -0
- package/static/js/anchor-map-render.js +576 -0
- package/static/js/anchor-map-search.js +225 -0
- package/static/js/anchor-map-shared.js +143 -0
- package/static/js/anchor-map-ws.js +122 -0
- package/static/js/anchor-map.js +148 -0
- package/static/js/dashboard-auth-dom.js +43 -0
- package/static/js/dashboard-auth-error.js +23 -0
- package/static/js/dashboard-auth-render-form.js +27 -0
- package/static/js/dashboard-auth-render-message.js +15 -0
- package/static/js/dashboard-auth-render-status.js +16 -0
- package/static/js/dashboard-auth-render-tabs.js +20 -0
- package/static/js/dashboard-auth-render.js +17 -0
- package/static/js/dashboard-auth-requests.js +21 -0
- package/static/js/dashboard-auth-session-check.js +40 -0
- package/static/js/dashboard-auth-sign-in.js +43 -0
- package/static/js/dashboard-auth-state.js +47 -0
- package/static/js/dashboard-auth-ui.js +37 -0
- package/static/js/dashboard-auth.js +30 -0
- package/static/js/dashboard-tabs-init.js +121 -0
- package/static/js/dashboard-tabs-panels.js +51 -0
- package/static/js/dashboard-tabs.js +105 -0
- package/static/js/embedding-map-chart-colors.js +21 -0
- package/static/js/embedding-map-chart-scatter.js +92 -0
- package/static/js/embedding-map-chart-setup.js +89 -0
- package/static/js/embedding-map-fetch-status.js +234 -0
- package/static/js/embedding-map-fetch.js +138 -0
- package/static/js/embedding-map-panel.js +136 -0
- package/static/js/embedding-map-state.js +27 -0
- package/static/js/embedding-map-tooltip.js +48 -0
- package/static/js/embedding-map.js +54 -0
- package/static/js/graph-detail.js +53 -0
- package/static/js/graph-embed-init.js +11 -0
- package/static/js/graph-fetch.js +130 -0
- package/static/js/graph-render.js +177 -0
- package/static/js/graph-search.js +89 -0
- package/static/js/graph-shared.js +195 -0
- package/static/js/graph.js +81 -0
- package/static/js/jobs-panel-fetch.js +226 -0
- package/static/js/jobs-panel-render.js +220 -0
- package/static/js/jobs-panel-shared.js +133 -0
- package/static/js/jobs-panel.js +94 -0
- package/static/js/memento-admin-fetch.js +65 -0
- package/static/js/memory-evolution-demo-shell-data.js +277 -0
- package/static/js/memory-evolution-demo-shell-render-consolidation.js +143 -0
- package/static/js/memory-evolution-demo-shell-render-snapshot.js +145 -0
- package/static/js/memory-evolution-demo-shell-render-timeline.js +118 -0
- package/static/js/memory-evolution-demo-shell-render.js +25 -0
- package/static/js/memory-evolution-demo-shell-shared.js +313 -0
- package/static/js/memory-evolution-demo-shell.js +41 -0
- package/static/js/memory-inspector.js +31 -0
- package/static/js/ops-status-panel.js +227 -0
- package/static/js/ops-strip.js +145 -0
- package/static/js/review-candidates-panel-bulk.js +196 -0
- package/static/js/review-candidates-panel-health-fetch.js +110 -0
- package/static/js/review-candidates-panel-health-render.js +187 -0
- package/static/js/review-candidates-panel-health.js +17 -0
- package/static/js/review-candidates-panel-poll-badge.js +25 -0
- package/static/js/review-candidates-panel-poll-boot.js +48 -0
- package/static/js/review-candidates-panel-poll-config.js +40 -0
- package/static/js/review-candidates-panel-poll-cycle.js +31 -0
- package/static/js/review-candidates-panel-poll-fetch.js +24 -0
- package/static/js/review-candidates-panel-poll-notify-os.js +28 -0
- package/static/js/review-candidates-panel-poll-prompt.js +53 -0
- package/static/js/review-candidates-panel-poll-snapshot.js +41 -0
- package/static/js/review-candidates-panel-poll-stream.js +51 -0
- package/static/js/review-candidates-panel-poll-toast.js +25 -0
- package/static/js/review-candidates-panel-poll.js +9 -0
- package/static/js/review-candidates-panel-render-actions.js +94 -0
- package/static/js/review-candidates-panel-render-list.js +235 -0
- package/static/js/review-candidates-panel-render-preview.js +189 -0
- package/static/js/review-candidates-panel-render.js +23 -0
- package/static/js/review-candidates-panel-shared.js +125 -0
- package/static/js/review-candidates-panel.js +53 -0
- package/static/logo.png +0 -0
- package/static/memento_logo.svg +2 -0
|
@@ -40,3 +40,8 @@ max_relations = 5
|
|
|
40
40
|
[vector_length_decay]
|
|
41
41
|
enabled = true
|
|
42
42
|
characteristic_length = 40
|
|
43
|
+
|
|
44
|
+
# #1079: BM25 rank → relevance 시그모이드의 온도. factor = 1/(1+exp(rank/T))
|
|
45
|
+
# T=1 이면 실제 rank 구간(-20~-2)이 전부 포화 꼬리에 들어가 동적 범위가 0.083 으로 뭉갠다.
|
|
46
|
+
[fts_relevance]
|
|
47
|
+
temperature = 10
|
|
@@ -40,3 +40,8 @@ max_relations = 5
|
|
|
40
40
|
[vector_length_decay]
|
|
41
41
|
enabled = true
|
|
42
42
|
characteristic_length = 40
|
|
43
|
+
|
|
44
|
+
# #1079: BM25 rank → relevance 시그모이드의 온도. factor = 1/(1+exp(rank/T))
|
|
45
|
+
# T=1 이면 실제 rank 구간(-20~-2)이 전부 포화 꼬리에 들어가 동적 범위가 0.083 으로 뭉갠다.
|
|
46
|
+
[fts_relevance]
|
|
47
|
+
temperature = 10
|
|
@@ -72,8 +72,8 @@ export declare const RecallSchema: z.ZodEffects<z.ZodObject<{
|
|
|
72
72
|
neighbors_limit: number;
|
|
73
73
|
neighbors_per_item: number;
|
|
74
74
|
neighbors_similarity_threshold: number;
|
|
75
|
-
key?: string | undefined;
|
|
76
75
|
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
76
|
+
key?: string | undefined;
|
|
77
77
|
workflow_name?: string | undefined;
|
|
78
78
|
skill_name?: string | undefined;
|
|
79
79
|
query?: string | undefined;
|
|
@@ -104,8 +104,8 @@ export declare const RecallSchema: z.ZodEffects<z.ZodObject<{
|
|
|
104
104
|
provider_filter?: ("tfidf" | "lightweight" | "minilm" | "openai" | "gemini")[] | undefined;
|
|
105
105
|
auto_set_anchor?: boolean | undefined;
|
|
106
106
|
}, {
|
|
107
|
-
key?: string | undefined;
|
|
108
107
|
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
108
|
+
key?: string | undefined;
|
|
109
109
|
workflow_name?: string | undefined;
|
|
110
110
|
skill_name?: string | undefined;
|
|
111
111
|
query?: string | undefined;
|
|
@@ -154,8 +154,8 @@ export declare const RecallSchema: z.ZodEffects<z.ZodObject<{
|
|
|
154
154
|
neighbors_limit: number;
|
|
155
155
|
neighbors_per_item: number;
|
|
156
156
|
neighbors_similarity_threshold: number;
|
|
157
|
-
key?: string | undefined;
|
|
158
157
|
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
158
|
+
key?: string | undefined;
|
|
159
159
|
workflow_name?: string | undefined;
|
|
160
160
|
skill_name?: string | undefined;
|
|
161
161
|
query?: string | undefined;
|
|
@@ -186,8 +186,8 @@ export declare const RecallSchema: z.ZodEffects<z.ZodObject<{
|
|
|
186
186
|
provider_filter?: ("tfidf" | "lightweight" | "minilm" | "openai" | "gemini")[] | undefined;
|
|
187
187
|
auto_set_anchor?: boolean | undefined;
|
|
188
188
|
}, {
|
|
189
|
-
key?: string | undefined;
|
|
190
189
|
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
190
|
+
key?: string | undefined;
|
|
191
191
|
workflow_name?: string | undefined;
|
|
192
192
|
skill_name?: string | undefined;
|
|
193
193
|
query?: string | undefined;
|
package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool-schema.d.ts
CHANGED
|
@@ -33,9 +33,9 @@ export declare const RememberSchema: z.ZodEffects<z.ZodObject<{
|
|
|
33
33
|
}, "strict", z.ZodTypeAny, {
|
|
34
34
|
importance: number;
|
|
35
35
|
privacy_scope: "private" | "team" | "public";
|
|
36
|
+
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
36
37
|
key?: string | undefined;
|
|
37
38
|
value?: string | undefined;
|
|
38
|
-
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
39
39
|
workflow_name?: string | undefined;
|
|
40
40
|
skill_name?: string | undefined;
|
|
41
41
|
content?: string | undefined;
|
|
@@ -59,9 +59,9 @@ export declare const RememberSchema: z.ZodEffects<z.ZodObject<{
|
|
|
59
59
|
last_mentioned_at?: string | undefined;
|
|
60
60
|
source_session_id?: string | undefined;
|
|
61
61
|
}, {
|
|
62
|
+
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
62
63
|
key?: string | undefined;
|
|
63
64
|
value?: string | undefined;
|
|
64
|
-
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
65
65
|
workflow_name?: string | undefined;
|
|
66
66
|
skill_name?: string | undefined;
|
|
67
67
|
importance?: number | undefined;
|
|
@@ -89,9 +89,9 @@ export declare const RememberSchema: z.ZodEffects<z.ZodObject<{
|
|
|
89
89
|
}>, {
|
|
90
90
|
importance: number;
|
|
91
91
|
privacy_scope: "private" | "team" | "public";
|
|
92
|
+
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
92
93
|
key?: string | undefined;
|
|
93
94
|
value?: string | undefined;
|
|
94
|
-
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
95
95
|
workflow_name?: string | undefined;
|
|
96
96
|
skill_name?: string | undefined;
|
|
97
97
|
content?: string | undefined;
|
|
@@ -115,9 +115,9 @@ export declare const RememberSchema: z.ZodEffects<z.ZodObject<{
|
|
|
115
115
|
last_mentioned_at?: string | undefined;
|
|
116
116
|
source_session_id?: string | undefined;
|
|
117
117
|
}, {
|
|
118
|
+
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
118
119
|
key?: string | undefined;
|
|
119
120
|
value?: string | undefined;
|
|
120
|
-
type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
|
|
121
121
|
workflow_name?: string | undefined;
|
|
122
122
|
skill_name?: string | undefined;
|
|
123
123
|
importance?: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"category-quality-aggregator.js","sourceRoot":"","sources":["../../../../../src/domains/monitoring/services/quality-assurance/category-quality-aggregator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"category-quality-aggregator.js","sourceRoot":"","sources":["../../../../../src/domains/monitoring/services/quality-assurance/category-quality-aggregator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 벡터 검색 품질 검증 — baseline 스냅샷 저장·로드·비교
|
|
3
|
+
* (#910: report-comparison.ts 에서 분리)
|
|
4
|
+
*/
|
|
5
|
+
import type { OrderPreservationReport } from './types.js';
|
|
6
|
+
import type { QualityMetrics } from './report-quality-comparison.js';
|
|
7
|
+
import type { ExtremeScenarioReport } from './report-extreme-scenarios.js';
|
|
8
|
+
/**
|
|
9
|
+
* Baseline 스냅샷 인터페이스
|
|
10
|
+
* 벡터 검색 품질의 baseline을 저장하고 비교하기 위한 구조
|
|
11
|
+
*/
|
|
12
|
+
export interface BaselineSnapshot {
|
|
13
|
+
/**
|
|
14
|
+
* 스냅샷 버전
|
|
15
|
+
*/
|
|
16
|
+
version: string;
|
|
17
|
+
/**
|
|
18
|
+
* 스냅샷 생성 시간 (ISO 8601 형식)
|
|
19
|
+
*/
|
|
20
|
+
timestamp: string;
|
|
21
|
+
/**
|
|
22
|
+
* 테스트 설정 정보
|
|
23
|
+
*/
|
|
24
|
+
testConfiguration: {
|
|
25
|
+
/**
|
|
26
|
+
* 테스트 데이터 크기
|
|
27
|
+
*/
|
|
28
|
+
dataSize: number;
|
|
29
|
+
/**
|
|
30
|
+
* 가중치 설정
|
|
31
|
+
*/
|
|
32
|
+
weights: {
|
|
33
|
+
/**
|
|
34
|
+
* 벡터 유사도 가중치 (w1)
|
|
35
|
+
*/
|
|
36
|
+
vectorSimilarity: number;
|
|
37
|
+
/**
|
|
38
|
+
* Consolidation 점수 가중치 (w2)
|
|
39
|
+
*/
|
|
40
|
+
consolidationScore: number;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* 품질 지표
|
|
45
|
+
*/
|
|
46
|
+
metrics: {
|
|
47
|
+
/**
|
|
48
|
+
* 순서 보존 지표
|
|
49
|
+
*/
|
|
50
|
+
orderPreservation: {
|
|
51
|
+
/**
|
|
52
|
+
* Kendall's Tau 순서 일치도
|
|
53
|
+
*/
|
|
54
|
+
kendallTau: number;
|
|
55
|
+
/**
|
|
56
|
+
* 상위 10개 결과 유지율
|
|
57
|
+
*/
|
|
58
|
+
top10Retention: number;
|
|
59
|
+
/**
|
|
60
|
+
* 상위 5개 결과 유지율
|
|
61
|
+
*/
|
|
62
|
+
top5Retention: number;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* 품질 지표 (Precision, Recall, NDCG)
|
|
66
|
+
*/
|
|
67
|
+
quality: {
|
|
68
|
+
/**
|
|
69
|
+
* Precision@K (K 값별 Precision)
|
|
70
|
+
*/
|
|
71
|
+
precision: Record<number, number>;
|
|
72
|
+
/**
|
|
73
|
+
* Recall@K (K 값별 Recall)
|
|
74
|
+
*/
|
|
75
|
+
recall: Record<number, number>;
|
|
76
|
+
/**
|
|
77
|
+
* NDCG@K (K 값별 NDCG)
|
|
78
|
+
*/
|
|
79
|
+
ndcg: Record<number, number>;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* 극단적 시나리오 검증 결과
|
|
83
|
+
*/
|
|
84
|
+
extremeScenarios: {
|
|
85
|
+
/**
|
|
86
|
+
* 저벡터 유사도 + 고 consolidation 점수 검증 통과 여부 (1: 통과, 0: 실패)
|
|
87
|
+
*/
|
|
88
|
+
lowVectorHighConsolidation: number;
|
|
89
|
+
/**
|
|
90
|
+
* 고벡터 유사도 + 저 consolidation 점수 검증 통과 여부 (1: 통과, 0: 실패)
|
|
91
|
+
*/
|
|
92
|
+
highVectorLowConsolidation: number;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Baseline 스냅샷 저장
|
|
98
|
+
* Baseline 스냅샷을 JSON 형식으로 파일에 저장합니다.
|
|
99
|
+
*
|
|
100
|
+
* @param snapshot 저장할 Baseline 스냅샷
|
|
101
|
+
* @param filePath 저장할 파일 경로 (기본값: `data/vector-search-quality-baseline.json`)
|
|
102
|
+
* @throws 파일 저장 실패 시 에러 발생
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const snapshot: BaselineSnapshot = {
|
|
107
|
+
* version: '1.0.0',
|
|
108
|
+
* timestamp: new Date().toISOString(),
|
|
109
|
+
* testConfiguration: { dataSize: 100, weights: { vectorSimilarity: 0.6, consolidationScore: 0.4 } },
|
|
110
|
+
* metrics: {
|
|
111
|
+
* orderPreservation: { kendallTau: 0.85, top10Retention: 0.9, top5Retention: 0.95 },
|
|
112
|
+
* quality: { precision: {}, recall: {}, ndcg: {} },
|
|
113
|
+
* extremeScenarios: { lowVectorHighConsolidation: 1, highVectorLowConsolidation: 1 }
|
|
114
|
+
* }
|
|
115
|
+
* };
|
|
116
|
+
* saveBaselineSnapshot(snapshot);
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export declare function saveBaselineSnapshot(snapshot: BaselineSnapshot, filePath?: string): void;
|
|
120
|
+
/**
|
|
121
|
+
* Baseline 스냅샷 로드
|
|
122
|
+
* 저장된 Baseline 스냅샷을 파일에서 로드합니다.
|
|
123
|
+
*
|
|
124
|
+
* @param filePath 로드할 파일 경로 (기본값: `data/vector-search-quality-baseline.json`)
|
|
125
|
+
* @returns 로드된 Baseline 스냅샷 또는 null (파일이 없거나 로드 실패 시)
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* const snapshot = loadBaselineSnapshot();
|
|
130
|
+
* if (snapshot) {
|
|
131
|
+
* console.log(`Baseline 버전: ${snapshot.version}`);
|
|
132
|
+
* console.log(`Baseline 생성 시간: ${snapshot.timestamp}`);
|
|
133
|
+
* } else {
|
|
134
|
+
* console.log('Baseline 스냅샷이 없습니다.');
|
|
135
|
+
* }
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
export declare function loadBaselineSnapshot(filePath?: string): BaselineSnapshot | null;
|
|
139
|
+
/**
|
|
140
|
+
* Baseline 비교 결과
|
|
141
|
+
*/
|
|
142
|
+
export interface BaselineComparisonResult {
|
|
143
|
+
/**
|
|
144
|
+
* Baseline 스냅샷 정보
|
|
145
|
+
*/
|
|
146
|
+
baseline: {
|
|
147
|
+
version: string;
|
|
148
|
+
timestamp: string;
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* 순서 보존 지표 비교 결과
|
|
152
|
+
*/
|
|
153
|
+
orderPreservation: {
|
|
154
|
+
/**
|
|
155
|
+
* Kendall's Tau 변화 (현재 - baseline)
|
|
156
|
+
*/
|
|
157
|
+
kendallTauChange: number;
|
|
158
|
+
/**
|
|
159
|
+
* Top10 유지율 변화 (현재 - baseline)
|
|
160
|
+
*/
|
|
161
|
+
top10RetentionChange: number;
|
|
162
|
+
/**
|
|
163
|
+
* Top5 유지율 변화 (현재 - baseline)
|
|
164
|
+
*/
|
|
165
|
+
top5RetentionChange: number;
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* 품질 지표 비교 결과
|
|
169
|
+
*/
|
|
170
|
+
quality: {
|
|
171
|
+
/**
|
|
172
|
+
* Precision@K 변화율 (K 값별)
|
|
173
|
+
*/
|
|
174
|
+
precisionChange: Record<number, number>;
|
|
175
|
+
/**
|
|
176
|
+
* Recall@K 변화율 (K 값별)
|
|
177
|
+
*/
|
|
178
|
+
recallChange: Record<number, number>;
|
|
179
|
+
/**
|
|
180
|
+
* NDCG@K 변화율 (K 값별)
|
|
181
|
+
*/
|
|
182
|
+
ndcgChange: Record<number, number>;
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* 극단적 시나리오 검증 비교 결과
|
|
186
|
+
*/
|
|
187
|
+
extremeScenarios: {
|
|
188
|
+
/**
|
|
189
|
+
* 저벡터 유사도 + 고 consolidation 점수 검증 변화 (현재 - baseline)
|
|
190
|
+
*/
|
|
191
|
+
lowVectorHighConsolidationChange: number;
|
|
192
|
+
/**
|
|
193
|
+
* 고벡터 유사도 + 저 consolidation 점수 검증 변화 (현재 - baseline)
|
|
194
|
+
*/
|
|
195
|
+
highVectorLowConsolidationChange: number;
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* 전체 품질 저하 여부
|
|
199
|
+
*/
|
|
200
|
+
hasDegradation: boolean;
|
|
201
|
+
/**
|
|
202
|
+
* 품질 저하 세부 사항
|
|
203
|
+
*/
|
|
204
|
+
degradationDetails: string[];
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Baseline과 현재 결과 비교
|
|
208
|
+
* Baseline 스냅샷과 현재 검증 결과를 비교하여 품질 저하를 감지합니다.
|
|
209
|
+
*
|
|
210
|
+
* @param baseline Baseline 스냅샷
|
|
211
|
+
* @param currentOrderPreservation 현재 순서 보존 검증 결과
|
|
212
|
+
* @param currentQuality 현재 품질 지표 (QualityMetrics)
|
|
213
|
+
* @param currentExtremeScenarios 현재 극단적 시나리오 검증 결과
|
|
214
|
+
* @param kValues 비교할 K 값 배열 (기본값: [1, 5, 10])
|
|
215
|
+
* @returns Baseline 비교 결과
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```typescript
|
|
219
|
+
* const baseline = loadBaselineSnapshot();
|
|
220
|
+
* if (baseline) {
|
|
221
|
+
* const comparison = compareWithBaseline(
|
|
222
|
+
* baseline,
|
|
223
|
+
* orderPreservationReport,
|
|
224
|
+
* qualityMetrics,
|
|
225
|
+
* extremeScenarioReport
|
|
226
|
+
* );
|
|
227
|
+
* if (comparison.hasDegradation) {
|
|
228
|
+
* console.warn('품질 저하 감지:', comparison.degradationDetails);
|
|
229
|
+
* }
|
|
230
|
+
* }
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
export declare function compareWithBaseline(baseline: BaselineSnapshot, currentOrderPreservation: OrderPreservationReport, currentQuality: QualityMetrics, currentExtremeScenarios: ExtremeScenarioReport, kValues?: number[]): BaselineComparisonResult;
|
|
234
|
+
//# sourceMappingURL=report-baseline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-baseline.d.ts","sourceRoot":"","sources":["../../../../../../src/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 벡터 검색 품질 검증 — baseline 스냅샷 저장·로드·비교
|
|
3
|
+
* (#910: report-comparison.ts 에서 분리)
|
|
4
|
+
*/
|
|
5
|
+
import { writeFileSync, readFileSync, existsSync, mkdirSync } from 'fs';
|
|
6
|
+
import { dirname, join } from 'path';
|
|
7
|
+
import { reportOutputRoot } from './report-paths.js';
|
|
8
|
+
const __dirname = reportOutputRoot;
|
|
9
|
+
/**
|
|
10
|
+
* Baseline 스냅샷 저장
|
|
11
|
+
* Baseline 스냅샷을 JSON 형식으로 파일에 저장합니다.
|
|
12
|
+
*
|
|
13
|
+
* @param snapshot 저장할 Baseline 스냅샷
|
|
14
|
+
* @param filePath 저장할 파일 경로 (기본값: `data/vector-search-quality-baseline.json`)
|
|
15
|
+
* @throws 파일 저장 실패 시 에러 발생
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const snapshot: BaselineSnapshot = {
|
|
20
|
+
* version: '1.0.0',
|
|
21
|
+
* timestamp: new Date().toISOString(),
|
|
22
|
+
* testConfiguration: { dataSize: 100, weights: { vectorSimilarity: 0.6, consolidationScore: 0.4 } },
|
|
23
|
+
* metrics: {
|
|
24
|
+
* orderPreservation: { kendallTau: 0.85, top10Retention: 0.9, top5Retention: 0.95 },
|
|
25
|
+
* quality: { precision: {}, recall: {}, ndcg: {} },
|
|
26
|
+
* extremeScenarios: { lowVectorHighConsolidation: 1, highVectorLowConsolidation: 1 }
|
|
27
|
+
* }
|
|
28
|
+
* };
|
|
29
|
+
* saveBaselineSnapshot(snapshot);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function saveBaselineSnapshot(snapshot, filePath) {
|
|
33
|
+
// 기본 파일 경로 설정
|
|
34
|
+
const defaultPath = join(__dirname, '../../../data/vector-search-quality-baseline.json');
|
|
35
|
+
const targetPath = filePath || defaultPath;
|
|
36
|
+
// 디렉토리 생성 (없는 경우)
|
|
37
|
+
const dir = dirname(targetPath);
|
|
38
|
+
if (!existsSync(dir)) {
|
|
39
|
+
mkdirSync(dir, { recursive: true });
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
// JSON 형식으로 직렬화하여 저장
|
|
43
|
+
const jsonContent = JSON.stringify(snapshot, null, 2);
|
|
44
|
+
writeFileSync(targetPath, jsonContent, 'utf-8');
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
throw new Error(`Baseline 스냅샷 저장 실패: ${error instanceof Error ? error.message : String(error)}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Baseline 스냅샷 로드
|
|
52
|
+
* 저장된 Baseline 스냅샷을 파일에서 로드합니다.
|
|
53
|
+
*
|
|
54
|
+
* @param filePath 로드할 파일 경로 (기본값: `data/vector-search-quality-baseline.json`)
|
|
55
|
+
* @returns 로드된 Baseline 스냅샷 또는 null (파일이 없거나 로드 실패 시)
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const snapshot = loadBaselineSnapshot();
|
|
60
|
+
* if (snapshot) {
|
|
61
|
+
* console.log(`Baseline 버전: ${snapshot.version}`);
|
|
62
|
+
* console.log(`Baseline 생성 시간: ${snapshot.timestamp}`);
|
|
63
|
+
* } else {
|
|
64
|
+
* console.log('Baseline 스냅샷이 없습니다.');
|
|
65
|
+
* }
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export function loadBaselineSnapshot(filePath) {
|
|
69
|
+
// 기본 파일 경로 설정
|
|
70
|
+
const defaultPath = join(__dirname, '../../../data/vector-search-quality-baseline.json');
|
|
71
|
+
const targetPath = filePath || defaultPath;
|
|
72
|
+
// 파일 존재 여부 확인
|
|
73
|
+
if (!existsSync(targetPath)) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
// 파일 읽기
|
|
78
|
+
const content = readFileSync(targetPath, 'utf-8');
|
|
79
|
+
// JSON 파싱
|
|
80
|
+
const snapshot = JSON.parse(content);
|
|
81
|
+
// 기본 검증 (필수 필드 존재 여부)
|
|
82
|
+
if (!snapshot.version || !snapshot.timestamp || !snapshot.metrics) {
|
|
83
|
+
throw new Error('Baseline 스냅샷 형식이 올바르지 않습니다.');
|
|
84
|
+
}
|
|
85
|
+
return snapshot;
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
// 로드 실패 시 null 반환 (에러 로깅은 호출자가 처리)
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Baseline과 현재 결과 비교
|
|
94
|
+
* Baseline 스냅샷과 현재 검증 결과를 비교하여 품질 저하를 감지합니다.
|
|
95
|
+
*
|
|
96
|
+
* @param baseline Baseline 스냅샷
|
|
97
|
+
* @param currentOrderPreservation 현재 순서 보존 검증 결과
|
|
98
|
+
* @param currentQuality 현재 품질 지표 (QualityMetrics)
|
|
99
|
+
* @param currentExtremeScenarios 현재 극단적 시나리오 검증 결과
|
|
100
|
+
* @param kValues 비교할 K 값 배열 (기본값: [1, 5, 10])
|
|
101
|
+
* @returns Baseline 비교 결과
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* const baseline = loadBaselineSnapshot();
|
|
106
|
+
* if (baseline) {
|
|
107
|
+
* const comparison = compareWithBaseline(
|
|
108
|
+
* baseline,
|
|
109
|
+
* orderPreservationReport,
|
|
110
|
+
* qualityMetrics,
|
|
111
|
+
* extremeScenarioReport
|
|
112
|
+
* );
|
|
113
|
+
* if (comparison.hasDegradation) {
|
|
114
|
+
* console.warn('품질 저하 감지:', comparison.degradationDetails);
|
|
115
|
+
* }
|
|
116
|
+
* }
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export function compareWithBaseline(baseline, currentOrderPreservation, currentQuality, currentExtremeScenarios, kValues = [1, 5, 10]) {
|
|
120
|
+
const degradationDetails = [];
|
|
121
|
+
// 순서 보존 지표 비교
|
|
122
|
+
const baselineOrderPreservation = baseline.metrics.orderPreservation;
|
|
123
|
+
if (!baselineOrderPreservation) {
|
|
124
|
+
throw new Error('Baseline orderPreservation metrics are missing');
|
|
125
|
+
}
|
|
126
|
+
const kendallTauChange = currentOrderPreservation.metrics.kendallTau - baselineOrderPreservation.kendallTau;
|
|
127
|
+
const top10RetentionChange = (currentOrderPreservation.metrics.topKRetention[10] || 0) - baselineOrderPreservation.top10Retention;
|
|
128
|
+
const top5RetentionChange = (currentOrderPreservation.metrics.topKRetention[5] || 0) - baselineOrderPreservation.top5Retention;
|
|
129
|
+
// 순서 보존 지표 저하 감지
|
|
130
|
+
if (kendallTauChange < -0.1) {
|
|
131
|
+
degradationDetails.push(`Kendall's Tau 저하: ${kendallTauChange.toFixed(3)}`);
|
|
132
|
+
}
|
|
133
|
+
if (top10RetentionChange < -0.1) {
|
|
134
|
+
degradationDetails.push(`Top10 유지율 저하: ${top10RetentionChange.toFixed(3)}`);
|
|
135
|
+
}
|
|
136
|
+
if (top5RetentionChange < -0.1) {
|
|
137
|
+
degradationDetails.push(`Top5 유지율 저하: ${top5RetentionChange.toFixed(3)}`);
|
|
138
|
+
}
|
|
139
|
+
// 품질 지표 비교
|
|
140
|
+
const precisionChange = {};
|
|
141
|
+
const recallChange = {};
|
|
142
|
+
const ndcgChange = {};
|
|
143
|
+
kValues.forEach(k => {
|
|
144
|
+
const baselinePrecision = baseline.metrics.quality.precision[k] || 0;
|
|
145
|
+
const currentPrecision = currentQuality.precision[k] || 0;
|
|
146
|
+
const precisionDiff = baselinePrecision > 0
|
|
147
|
+
? (currentPrecision - baselinePrecision) / baselinePrecision
|
|
148
|
+
: 0;
|
|
149
|
+
precisionChange[k] = precisionDiff;
|
|
150
|
+
const baselineRecall = baseline.metrics.quality.recall[k] || 0;
|
|
151
|
+
const currentRecall = currentQuality.recall[k] || 0;
|
|
152
|
+
const recallDiff = baselineRecall > 0
|
|
153
|
+
? (currentRecall - baselineRecall) / baselineRecall
|
|
154
|
+
: 0;
|
|
155
|
+
recallChange[k] = recallDiff;
|
|
156
|
+
const baselineNDCG = baseline.metrics.quality.ndcg[k] || 0;
|
|
157
|
+
const currentNDCG = currentQuality.ndcg[k] || 0;
|
|
158
|
+
const ndcgDiff = baselineNDCG > 0
|
|
159
|
+
? (currentNDCG - baselineNDCG) / baselineNDCG
|
|
160
|
+
: 0;
|
|
161
|
+
ndcgChange[k] = ndcgDiff;
|
|
162
|
+
// 품질 지표 저하 감지 (5% 이상 저하)
|
|
163
|
+
if (ndcgDiff < -0.05) {
|
|
164
|
+
degradationDetails.push(`NDCG@${k} 저하: ${(ndcgDiff * 100).toFixed(2)}%`);
|
|
165
|
+
}
|
|
166
|
+
if (precisionDiff < -0.10) {
|
|
167
|
+
degradationDetails.push(`Precision@${k} 저하: ${(precisionDiff * 100).toFixed(2)}%`);
|
|
168
|
+
}
|
|
169
|
+
if (recallDiff < -0.10) {
|
|
170
|
+
degradationDetails.push(`Recall@${k} 저하: ${(recallDiff * 100).toFixed(2)}%`);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
// 극단적 시나리오 검증 비교
|
|
174
|
+
const lowVectorHighConsolidationChange = (currentExtremeScenarios.lowVectorHighConsolidation.passed ? 1 : 0) -
|
|
175
|
+
baseline.metrics.extremeScenarios.lowVectorHighConsolidation;
|
|
176
|
+
const highVectorLowConsolidationChange = (currentExtremeScenarios.highVectorLowConsolidation.passed ? 1 : 0) -
|
|
177
|
+
baseline.metrics.extremeScenarios.highVectorLowConsolidation;
|
|
178
|
+
// 극단적 시나리오 검증 저하 감지
|
|
179
|
+
if (lowVectorHighConsolidationChange < 0) {
|
|
180
|
+
degradationDetails.push('저벡터 유사도 + 고 consolidation 점수 검증 실패');
|
|
181
|
+
}
|
|
182
|
+
if (highVectorLowConsolidationChange < 0) {
|
|
183
|
+
degradationDetails.push('고벡터 유사도 + 저 consolidation 점수 검증 실패');
|
|
184
|
+
}
|
|
185
|
+
// 전체 품질 저하 여부 판단
|
|
186
|
+
const hasDegradation = degradationDetails.length > 0;
|
|
187
|
+
return {
|
|
188
|
+
baseline: {
|
|
189
|
+
version: baseline.version,
|
|
190
|
+
timestamp: baseline.timestamp
|
|
191
|
+
},
|
|
192
|
+
orderPreservation: {
|
|
193
|
+
kendallTauChange,
|
|
194
|
+
top10RetentionChange,
|
|
195
|
+
top5RetentionChange
|
|
196
|
+
},
|
|
197
|
+
quality: {
|
|
198
|
+
precisionChange,
|
|
199
|
+
recallChange,
|
|
200
|
+
ndcgChange
|
|
201
|
+
},
|
|
202
|
+
extremeScenarios: {
|
|
203
|
+
lowVectorHighConsolidationChange,
|
|
204
|
+
highVectorLowConsolidationChange
|
|
205
|
+
},
|
|
206
|
+
hasDegradation,
|
|
207
|
+
degradationDetails: hasDegradation ? degradationDetails : []
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=report-baseline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-baseline.js","sourceRoot":"","sources":["../../../../../../src/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIrD,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAuGnC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAA0B,EAC1B,QAAiB;IAEjB,cAAc;IACd,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,mDAAmD,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,QAAQ,IAAI,WAAW,CAAC;IAE3C,kBAAkB;IAClB,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC;QACH,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtD,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAiB;IAEjB,cAAc;IACd,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,mDAAmD,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,QAAQ,IAAI,WAAW,CAAC;IAE3C,cAAc;IACd,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,QAAQ;QACR,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAElD,UAAU;QACV,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB,CAAC;QAEzD,sBAAsB;QACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAgFD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA0B,EAC1B,wBAAiD,EACjD,cAA8B,EAC9B,uBAA8C,EAC9C,UAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAE9B,MAAM,kBAAkB,GAAa,EAAE,CAAC;IAExC,cAAc;IACd,MAAM,yBAAyB,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;IACrE,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,OAAO,CAAC,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC;IAC5G,MAAM,oBAAoB,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,yBAAyB,CAAC,cAAc,CAAC;IAClI,MAAM,mBAAmB,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,yBAAyB,CAAC,aAAa,CAAC;IAE/H,iBAAiB;IACjB,IAAI,gBAAgB,GAAG,CAAC,GAAG,EAAE,CAAC;QAC5B,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC;QAChC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,mBAAmB,GAAG,CAAC,GAAG,EAAE,CAAC;QAC/B,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,WAAW;IACX,MAAM,eAAe,GAA2B,EAAE,CAAC;IACnD,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,UAAU,GAA2B,EAAE,CAAC;IAE9C,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAClB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,iBAAiB,GAAG,CAAC;YACzC,CAAC,CAAC,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,iBAAiB;YAC5D,CAAC,CAAC,CAAC,CAAC;QACN,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;QAEnC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,cAAc,GAAG,CAAC;YACnC,CAAC,CAAC,CAAC,aAAa,GAAG,cAAc,CAAC,GAAG,cAAc;YACnD,CAAC,CAAC,CAAC,CAAC;QACN,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;QAE7B,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,YAAY,GAAG,CAAC;YAC/B,CAAC,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,YAAY;YAC7C,CAAC,CAAC,CAAC,CAAC;QACN,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAEzB,yBAAyB;QACzB,IAAI,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACrB,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1B,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC;YACvB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,iBAAiB;IACjB,MAAM,gCAAgC,GACpC,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,0BAA0B,CAAC;IAC/D,MAAM,gCAAgC,GACpC,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,0BAA0B,CAAC;IAE/D,oBAAoB;IACpB,IAAI,gCAAgC,GAAG,CAAC,EAAE,CAAC;QACzC,kBAAkB,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,gCAAgC,GAAG,CAAC,EAAE,CAAC;QACzC,kBAAkB,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAChE,CAAC;IAED,iBAAiB;IACjB,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;IAErD,OAAO;QACL,QAAQ,EAAE;YACR,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B;QACD,iBAAiB,EAAE;YACjB,gBAAgB;YAChB,oBAAoB;YACpB,mBAAmB;SACpB;QACD,OAAO,EAAE;YACP,eAAe;YACf,YAAY;YACZ,UAAU;SACX;QACD,gBAAgB,EAAE;YAChB,gCAAgC;YAChC,gCAAgC;SACjC;QACD,cAAc;QACd,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;KAC7D,CAAC;AACJ,CAAC"}
|