memento-mcp-server 1.16.3-a → 1.16.3-b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/domains/search/algorithms/vector-search-engine-migration.d.ts +13 -8
  2. package/dist/domains/search/algorithms/vector-search-engine-migration.d.ts.map +1 -1
  3. package/dist/domains/search/algorithms/vector-search-engine-migration.js +19 -41
  4. package/dist/domains/search/algorithms/vector-search-engine-migration.js.map +1 -1
  5. package/dist/domains/search/algorithms/vector-search-engine.d.ts +17 -36
  6. package/dist/domains/search/algorithms/vector-search-engine.d.ts.map +1 -1
  7. package/dist/domains/search/algorithms/vector-search-engine.js +94 -481
  8. package/dist/domains/search/algorithms/vector-search-engine.js.map +1 -1
  9. package/dist/domains/search/repositories/vector-search.repository.d.ts.map +1 -1
  10. package/dist/domains/search/repositories/vector-search.repository.js +28 -12
  11. package/dist/domains/search/repositories/vector-search.repository.js.map +1 -1
  12. package/dist/server/http-server.d.ts.map +1 -1
  13. package/dist/server/http-server.js +2 -7
  14. package/dist/server/http-server.js.map +1 -1
  15. package/dist/server/index.d.ts +3 -0
  16. package/dist/server/index.d.ts.map +1 -1
  17. package/dist/server/index.js +33 -7
  18. package/dist/server/index.js.map +1 -1
  19. package/dist/server/server-factory.d.ts +65 -0
  20. package/dist/server/server-factory.d.ts.map +1 -0
  21. package/dist/server/server-factory.js +40 -0
  22. package/dist/server/server-factory.js.map +1 -0
  23. package/dist/server/servers/sse-server.d.ts +33 -0
  24. package/dist/server/servers/sse-server.d.ts.map +1 -0
  25. package/dist/server/servers/sse-server.js +48 -0
  26. package/dist/server/servers/sse-server.js.map +1 -0
  27. package/dist/server/servers/stdio-server.d.ts +34 -0
  28. package/dist/server/servers/stdio-server.d.ts.map +1 -0
  29. package/dist/server/servers/stdio-server.js +58 -0
  30. package/dist/server/servers/stdio-server.js.map +1 -0
  31. package/dist/server/simple-mcp-server.d.ts +5 -0
  32. package/dist/server/simple-mcp-server.d.ts.map +1 -1
  33. package/dist/server/simple-mcp-server.js +17 -7
  34. package/dist/server/simple-mcp-server.js.map +1 -1
  35. package/dist/server/sse-server-impl.d.ts +22 -0
  36. package/dist/server/sse-server-impl.d.ts.map +1 -0
  37. package/dist/server/sse-server-impl.js +39 -0
  38. package/dist/server/sse-server-impl.js.map +1 -0
  39. package/dist/server/stdio-server-impl.d.ts +12 -0
  40. package/dist/server/stdio-server-impl.d.ts.map +1 -0
  41. package/dist/server/stdio-server-impl.js +19 -0
  42. package/dist/server/stdio-server-impl.js.map +1 -0
  43. package/dist/shared/types/vector-search.types.d.ts +1 -0
  44. package/dist/shared/types/vector-search.types.d.ts.map +1 -1
  45. package/package.json +1 -1
  46. package/scripts/__tests__/check-db-integrity.integration.spec.ts +163 -0
  47. package/scripts/__tests__/fix-migration.integration.spec.ts +203 -0
  48. package/scripts/__tests__/migrate-embedding-data.integration.spec.ts +219 -0
  49. package/scripts/__tests__/regenerate-embeddings.integration.spec.ts +192 -0
  50. package/scripts/backup-embeddings.js +52 -61
  51. package/scripts/check-db-integrity.js +49 -25
  52. package/scripts/check-file-sizes.ts +4 -4
  53. package/scripts/check-pii-masking.ts +0 -3
  54. package/scripts/check-sql-injection.ts +0 -12
  55. package/scripts/debug-embeddings.js +74 -93
  56. package/scripts/fix-migration.js +115 -80
  57. package/scripts/fix-vector-dimensions.js +70 -89
  58. package/scripts/migrate-embedding-data.js +111 -25
  59. package/scripts/regenerate-embeddings.js +31 -15
  60. package/scripts/run-migration.js +144 -107
  61. package/scripts/safe-migration.js +192 -142
  62. package/scripts/save-work-memory.ts +6 -7
  63. package/scripts/simple-migrate.js +66 -34
  64. package/scripts/simple-update.js +147 -109
  65. package/dist/domains/search/algorithms/vector-search-engine-refactored.d.ts +0 -56
  66. package/dist/domains/search/algorithms/vector-search-engine-refactored.d.ts.map +0 -1
  67. package/dist/domains/search/algorithms/vector-search-engine-refactored.js +0 -101
  68. package/dist/domains/search/algorithms/vector-search-engine-refactored.js.map +0 -1
@@ -1,123 +1,161 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import Database from 'better-sqlite3';
3
+ /**
4
+ * 간단한 데이터 업데이트 스크립트
5
+ * 임베딩 메타데이터 업데이트
6
+ *
7
+ * 리팩토링: 공통 모듈(initializeDatabase)을 사용하여 일관된 DB 초기화 보장
8
+ *
9
+ * 사용법:
10
+ * - 개발 환경: npx tsx scripts/simple-update.js
11
+ * - 프로덕션: npm run build && node dist/scripts/simple-update.js
12
+ */
13
+
14
+ // TypeScript 소스를 직접 import (tsx로 실행 시)
15
+ // 빌드된 파일을 사용하려면 '../dist/infrastructure/database/database/init.js'로 변경
16
+ import { initializeDatabase, closeDatabase } from '../src/infrastructure/database/database/init.js';
4
17
  import { join } from 'path';
5
18
  import { existsSync, copyFileSync } from 'fs';
6
19
 
7
- const dbPath = join(process.cwd(), 'data', 'memory.db');
8
-
9
- console.log('🔧 간단한 데이터 업데이트 시작...');
10
-
11
- try {
12
- // 1. 백업 생성
13
- const backupPath = join(process.cwd(), 'data', `memory-backup-${Date.now()}.db`);
14
- copyFileSync(dbPath, backupPath);
15
- console.log(`✅ 백업 생성: ${backupPath}`);
16
-
17
- // 2. 데이터베이스 연결 (sqlite-vec 없이)
18
- const db = new Database(dbPath);
20
+ async function updateEmbeddings() {
21
+ console.log('🔧 간단한 데이터 업데이트 시작...');
19
22
 
20
- // 3. 현재 상태 확인
21
- console.log('📊 현재 상태 확인...');
22
- const currentSchema = db.prepare("PRAGMA table_info(memory_embedding)").all();
23
- console.log('현재 테이블 구조:');
24
- console.table(currentSchema);
25
-
26
- // 4. 컬럼 추가 (이미 있는 경우 무시)
27
- console.log('📝 컬럼 추가 중...');
23
+ let db = null;
28
24
 
29
25
  try {
30
- db.exec('ALTER TABLE memory_embedding ADD COLUMN embedding_provider TEXT');
31
- console.log('✅ embedding_provider 컬럼 추가');
32
- } catch (error) {
33
- if (error.message.includes('duplicate column name')) {
34
- console.log('ℹ️ embedding_provider 컬럼이 이미 존재합니다');
35
- } else {
36
- console.warn('⚠️ embedding_provider 컬럼 추가 실패:', error.message);
26
+ // 공통 모듈을 사용하여 데이터베이스 초기화
27
+ // initializeDatabase는 DB 파일이 없으면 자동으로 생성하고 초기화함
28
+ db = await initializeDatabase();
29
+
30
+ // 1. 백업 생성
31
+ const dbPath = process.env.DB_PATH || join(process.cwd(), 'data', 'memory.db');
32
+ const backupPath = join(process.cwd(), 'data', `memory-backup-${Date.now()}.db`);
33
+
34
+ if (existsSync(dbPath)) {
35
+ copyFileSync(dbPath, backupPath);
36
+ console.log(`✅ 백업 생성: ${backupPath}`);
37
37
  }
38
- }
39
-
40
- try {
41
- db.exec('ALTER TABLE memory_embedding ADD COLUMN dimensions INTEGER');
42
- console.log(' dimensions 컬럼 추가');
43
- } catch (error) {
44
- if (error.message.includes('duplicate column name')) {
45
- console.log('ℹ️ dimensions 컬럼이 이미 존재합니다');
46
- } else {
47
- console.warn('⚠️ dimensions 컬럼 추가 실패:', error.message);
38
+
39
+ // 2. 현재 상태 확인
40
+ console.log('📊 현재 상태 확인...');
41
+ const currentSchema = db.prepare("PRAGMA table_info(memory_embedding)").all();
42
+ console.log('현재 테이블 구조:');
43
+ console.table(currentSchema);
44
+
45
+ // 3. 컬럼 추가 (이미 있는 경우 무시)
46
+ console.log('📝 컬럼 추가 중...');
47
+
48
+ try {
49
+ db.exec('ALTER TABLE memory_embedding ADD COLUMN embedding_provider TEXT');
50
+ console.log('✅ embedding_provider 컬럼 추가');
51
+ } catch (error) {
52
+ if (error.message.includes('duplicate column name')) {
53
+ console.log('ℹ️ embedding_provider 컬럼이 이미 존재합니다');
54
+ } else {
55
+ console.warn('⚠️ embedding_provider 컬럼 추가 실패:', error.message);
56
+ }
48
57
  }
49
- }
50
-
51
- try {
52
- db.exec('ALTER TABLE memory_embedding ADD COLUMN created_by TEXT DEFAULT "migration"');
53
- console.log('✅ created_by 컬럼 추가');
58
+
59
+ try {
60
+ db.exec('ALTER TABLE memory_embedding ADD COLUMN dimensions INTEGER');
61
+ console.log(' dimensions 컬럼 추가');
62
+ } catch (error) {
63
+ if (error.message.includes('duplicate column name')) {
64
+ console.log('ℹ️ dimensions 컬럼이 이미 존재합니다');
65
+ } else {
66
+ console.warn('⚠️ dimensions 컬럼 추가 실패:', error.message);
67
+ }
68
+ }
69
+
70
+ try {
71
+ db.exec('ALTER TABLE memory_embedding ADD COLUMN created_by TEXT DEFAULT "migration"');
72
+ console.log('✅ created_by 컬럼 추가');
73
+ } catch (error) {
74
+ if (error.message.includes('duplicate column name')) {
75
+ console.log('ℹ️ created_by 컬럼이 이미 존재합니다');
76
+ } else {
77
+ console.warn('⚠️ created_by 컬럼 추가 실패:', error.message);
78
+ }
79
+ }
80
+
81
+ // 4. 데이터 업데이트
82
+ console.log('🔄 데이터 업데이트 중...');
83
+
84
+ const updateResult = db.prepare(`
85
+ UPDATE memory_embedding
86
+ SET
87
+ embedding_provider = CASE
88
+ WHEN model = 'lightweight-hybrid' THEN 'tfidf'
89
+ WHEN model IS NULL OR model = '' THEN 'tfidf'
90
+ ELSE 'unknown'
91
+ END,
92
+ dimensions = dim,
93
+ created_by = 'legacy'
94
+ WHERE embedding_provider IS NULL
95
+ `).run();
96
+
97
+ console.log(`✅ ${updateResult.changes}개 레코드 업데이트 완료`);
98
+
99
+ // 5. 인덱스 추가
100
+ console.log('📝 인덱스 추가 중...');
101
+ db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider ON memory_embedding(embedding_provider)');
102
+ db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions)');
103
+ db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_created_by ON memory_embedding(created_by)');
104
+ console.log('✅ 인덱스 추가 완료');
105
+
106
+ // 6. 검증
107
+ console.log('🔍 검증 중...');
108
+ const validation = db.prepare(`
109
+ SELECT
110
+ COUNT(*) as total,
111
+ COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
112
+ COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
113
+ COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
114
+ FROM memory_embedding
115
+ `).get();
116
+
117
+ console.log('📊 검증 결과:');
118
+ console.table(validation);
119
+
120
+ const finalAnalysis = db.prepare(`
121
+ SELECT
122
+ embedding_provider,
123
+ dimensions,
124
+ COUNT(*) as count
125
+ FROM memory_embedding
126
+ GROUP BY embedding_provider, dimensions
127
+ ORDER BY count DESC
128
+ `).all();
129
+
130
+ console.log('\n📊 최종 데이터 분포:');
131
+ console.table(finalAnalysis);
132
+
133
+ console.log('\n🎉 업데이트 완료!');
134
+ if (existsSync(backupPath)) {
135
+ console.log(`💾 백업 파일: ${backupPath}`);
136
+ console.log('🔄 롤백이 필요한 경우: cp ' + backupPath + ' ' + dbPath);
137
+ }
138
+
54
139
  } catch (error) {
55
- if (error.message.includes('duplicate column name')) {
56
- console.log('ℹ️ created_by 컬럼이 이미 존재합니다');
57
- } else {
58
- console.warn('⚠️ created_by 컬럼 추가 실패:', error.message);
140
+ console.error(' 업데이트 실패:', error.message);
141
+ if (error.stack) {
142
+ console.error(' 스택 트레이스:', error.stack);
143
+ }
144
+ process.exit(1);
145
+ } finally {
146
+ // 데이터베이스 연결 종료
147
+ if (db) {
148
+ closeDatabase(db);
59
149
  }
60
150
  }
61
-
62
- // 5. 데이터 업데이트
63
- console.log('🔄 데이터 업데이트 중...');
64
-
65
- const updateResult = db.prepare(`
66
- UPDATE memory_embedding
67
- SET
68
- embedding_provider = CASE
69
- WHEN model = 'lightweight-hybrid' THEN 'tfidf'
70
- WHEN model IS NULL OR model = '' THEN 'tfidf'
71
- ELSE 'unknown'
72
- END,
73
- dimensions = dim,
74
- created_by = 'legacy'
75
- WHERE embedding_provider IS NULL
76
- `).run();
77
-
78
- console.log(`✅ ${updateResult.changes}개 레코드 업데이트 완료`);
79
-
80
- // 6. 인덱스 추가
81
- console.log('📝 인덱스 추가 중...');
82
- db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider ON memory_embedding(embedding_provider)');
83
- db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions)');
84
- db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_created_by ON memory_embedding(created_by)');
85
- console.log('✅ 인덱스 추가 완료');
86
-
87
- // 7. 검증
88
- console.log('🔍 검증 중...');
89
- const validation = db.prepare(`
90
- SELECT
91
- COUNT(*) as total,
92
- COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
93
- COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
94
- COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
95
- FROM memory_embedding
96
- `).get();
97
-
98
- console.log('📊 검증 결과:');
99
- console.table(validation);
100
-
101
- const finalAnalysis = db.prepare(`
102
- SELECT
103
- embedding_provider,
104
- dimensions,
105
- COUNT(*) as count
106
- FROM memory_embedding
107
- GROUP BY embedding_provider, dimensions
108
- ORDER BY count DESC
109
- `).all();
110
-
111
- console.log('\n📊 최종 데이터 분포:');
112
- console.table(finalAnalysis);
113
-
114
- db.close();
115
-
116
- console.log('\n🎉 업데이트 완료!');
117
- console.log(`💾 백업 파일: ${backupPath}`);
118
- console.log('🔄 롤백이 필요한 경우: cp ' + backupPath + ' ' + dbPath);
119
-
120
- } catch (error) {
121
- console.error('❌ 업데이트 실패:', error.message);
122
- process.exit(1);
123
151
  }
152
+
153
+ // 스크립트 실행
154
+ if (import.meta.url === `file://${process.argv[1]}` || import.meta.url.endsWith(process.argv[1])) {
155
+ updateEmbeddings().catch((error) => {
156
+ console.error('❌ 스크립트 실행 중 오류 발생:', error);
157
+ process.exit(1);
158
+ });
159
+ }
160
+
161
+ export { updateEmbeddings };
@@ -1,56 +0,0 @@
1
- /**
2
- * 유지보수성과 테스트 가능성을 향상시키기 위해 클린코드 원칙을 적용합니다.
3
- * 기존 VectorSearchEngine의 대체품으로 점진적 마이그레이션을 지원합니다.
4
- */
5
- import Database from 'better-sqlite3';
6
- import type { VectorSearchResult, VectorIndexStatus, PerformanceTestResult } from '../../../shared/types/vector-search.types';
7
- /**
8
- * 리팩토링된 벡터 검색 엔진으로 기존 코드와의 호환성을 유지하면서 개선된 구조를 제공합니다.
9
- * 기존 VectorSearchEngine과 동일한 인터페이스를 제공하여 기존 코드 수정 없이 사용 가능하도록 합니다.
10
- */
11
- export declare class VectorSearchEngineRefactored {
12
- private container;
13
- constructor();
14
- /**
15
- * 벡터 검색 기능이 없으면 검색이 실패할 수 있으므로, 데이터베이스 연결을 설정하고 벡터 검색 기능의 사용 가능 여부를 확인합니다.
16
- */
17
- initialize(db: Database.Database): void;
18
- /**
19
- * 쿼리 벡터와 유사한 메모리를 검색하여 의미적으로 관련된 결과를 제공합니다.
20
- * 리팩토링된 서비스를 통해 개선된 검색 기능을 제공합니다.
21
- */
22
- search(queryVector: number[], options?: any, provider?: string): Promise<VectorSearchResult[]>;
23
- /**
24
- * 하이브리드 검색 실행
25
- */
26
- hybridSearch(queryVector: number[], textQuery: string, options?: any, provider?: string): Promise<VectorSearchResult[]>;
27
- /**
28
- * 벡터 인덱스 상태 확인
29
- */
30
- getIndexStatus(): VectorIndexStatus;
31
- /**
32
- * 벡터 인덱스 재구성
33
- */
34
- rebuildIndex(): Promise<boolean>;
35
- /**
36
- * 벡터 검색 성능 테스트
37
- */
38
- performanceTest(queryVector: number[], iterations?: number): Promise<PerformanceTestResult>;
39
- /**
40
- * 벡터 차원 확인
41
- */
42
- getDimensions(): number;
43
- /**
44
- * VEC 사용 가능 여부 확인
45
- */
46
- isAvailable(): boolean;
47
- /**
48
- * 데이터베이스 연결 상태 확인
49
- */
50
- isConnected(): boolean;
51
- }
52
- export declare function getVectorSearchEngine(): VectorSearchEngineRefactored;
53
- export declare function createVectorSearchEngine(): VectorSearchEngineRefactored;
54
- export declare function resetVectorSearchEngine(): void;
55
- export type { VectorSearchResult, VectorSearchOptions, VectorIndexStatus, PerformanceTestResult } from '../../../shared/types/vector-search.types';
56
- //# sourceMappingURL=vector-search-engine-refactored.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vector-search-engine-refactored.d.ts","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/vector-search-engine-refactored.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAEV,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,2CAA2C,CAAC;AAEnD;;;GAGG;AACH,qBAAa,4BAA4B;IACvC,OAAO,CAAC,SAAS,CAAwB;;IAMzC;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI;IAIvC;;;OAGG;IACG,MAAM,CACV,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,GAAQ,EACjB,QAAQ,GAAE,MAAgB,GACzB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAWhC;;OAEG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,GAAQ,EACjB,QAAQ,GAAE,MAAgB,GACzB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAYhC;;OAEG;IACH,cAAc,IAAI,iBAAiB;IAKnC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAKtC;;OAEG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EAAE,EACrB,UAAU,GAAE,MAAW,GACtB,OAAO,CAAC,qBAAqB,CAAC;IAKjC;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,WAAW,IAAI,OAAO;IAKtB;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB;AAGD,wBAAgB,qBAAqB,IAAI,4BAA4B,CAEpE;AAED,wBAAgB,wBAAwB,IAAI,4BAA4B,CAEvE;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C;AAGD,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,2CAA2C,CAAC"}
@@ -1,101 +0,0 @@
1
- /**
2
- * 유지보수성과 테스트 가능성을 향상시키기 위해 클린코드 원칙을 적용합니다.
3
- * 기존 VectorSearchEngine의 대체품으로 점진적 마이그레이션을 지원합니다.
4
- */
5
- import Database from 'better-sqlite3';
6
- import { VectorSearchContainer } from '../services/vector-search/vector-search-container';
7
- import { VectorSearchFactory } from '../factories/vector-search.factory';
8
- /**
9
- * 리팩토링된 벡터 검색 엔진으로 기존 코드와의 호환성을 유지하면서 개선된 구조를 제공합니다.
10
- * 기존 VectorSearchEngine과 동일한 인터페이스를 제공하여 기존 코드 수정 없이 사용 가능하도록 합니다.
11
- */
12
- export class VectorSearchEngineRefactored {
13
- container;
14
- constructor() {
15
- this.container = VectorSearchContainer.getInstance();
16
- }
17
- /**
18
- * 벡터 검색 기능이 없으면 검색이 실패할 수 있으므로, 데이터베이스 연결을 설정하고 벡터 검색 기능의 사용 가능 여부를 확인합니다.
19
- */
20
- initialize(db) {
21
- this.container.setDatabase(db);
22
- }
23
- /**
24
- * 쿼리 벡터와 유사한 메모리를 검색하여 의미적으로 관련된 결과를 제공합니다.
25
- * 리팩토링된 서비스를 통해 개선된 검색 기능을 제공합니다.
26
- */
27
- async search(queryVector, options = {}, provider = 'tfidf') {
28
- const query = {
29
- queryVector,
30
- options,
31
- provider
32
- };
33
- const facade = this.container.getFacade();
34
- return await facade.search(query);
35
- }
36
- /**
37
- * 하이브리드 검색 실행
38
- */
39
- async hybridSearch(queryVector, textQuery, options = {}, provider = 'tfidf') {
40
- const query = {
41
- queryVector,
42
- textQuery,
43
- options,
44
- provider
45
- };
46
- const facade = this.container.getFacade();
47
- return await facade.hybridSearch(query);
48
- }
49
- /**
50
- * 벡터 인덱스 상태 확인
51
- */
52
- getIndexStatus() {
53
- const facade = this.container.getFacade();
54
- return facade.getIndexStatus();
55
- }
56
- /**
57
- * 벡터 인덱스 재구성
58
- */
59
- async rebuildIndex() {
60
- const facade = this.container.getFacade();
61
- return await facade.rebuildIndex();
62
- }
63
- /**
64
- * 벡터 검색 성능 테스트
65
- */
66
- async performanceTest(queryVector, iterations = 10) {
67
- const facade = this.container.getFacade();
68
- return await facade.runPerformanceTest(queryVector, iterations);
69
- }
70
- /**
71
- * 벡터 차원 확인
72
- */
73
- getDimensions() {
74
- return 384; // 기본 차원
75
- }
76
- /**
77
- * VEC 사용 가능 여부 확인
78
- */
79
- isAvailable() {
80
- const facade = this.container.getFacade();
81
- return facade.isAvailable();
82
- }
83
- /**
84
- * 데이터베이스 연결 상태 확인
85
- */
86
- isConnected() {
87
- return this.container.isConnected();
88
- }
89
- }
90
- // 기존 인터페이스와 호환성을 위한 팩토리 함수들
91
- export function getVectorSearchEngine() {
92
- return new VectorSearchEngineRefactored();
93
- }
94
- export function createVectorSearchEngine() {
95
- return new VectorSearchEngineRefactored();
96
- }
97
- export function resetVectorSearchEngine() {
98
- const container = VectorSearchContainer.getInstance();
99
- container.reset();
100
- }
101
- //# sourceMappingURL=vector-search-engine-refactored.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vector-search-engine-refactored.js","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/vector-search-engine-refactored.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAQzE;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IAC/B,SAAS,CAAwB;IAEzC;QACE,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,WAAW,EAAE,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,EAAqB;QAC9B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,WAAqB,EACrB,UAAe,EAAE,EACjB,WAAmB,OAAO;QAE1B,MAAM,KAAK,GAAsB;YAC/B,WAAW;YACX,OAAO;YACP,QAAQ;SACT,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1C,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,WAAqB,EACrB,SAAiB,EACjB,UAAe,EAAE,EACjB,WAAmB,OAAO;QAE1B,MAAM,KAAK,GAAsB;YAC/B,WAAW;YACX,SAAS;YACT,OAAO;YACP,QAAQ;SACT,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1C,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,cAAc,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1C,OAAO,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,WAAqB,EACrB,aAAqB,EAAE;QAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1C,OAAO,MAAM,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,GAAG,CAAC,CAAC,QAAQ;IACtB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,4BAA4B,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,4BAA4B,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,EAAE,CAAC;IACtD,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC"}