memento-mcp-server 1.16.3-a → 1.16.3-c
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/dist/domains/search/algorithms/vector-search-engine-migration.d.ts +13 -8
- package/dist/domains/search/algorithms/vector-search-engine-migration.d.ts.map +1 -1
- package/dist/domains/search/algorithms/vector-search-engine-migration.js +19 -41
- package/dist/domains/search/algorithms/vector-search-engine-migration.js.map +1 -1
- package/dist/domains/search/algorithms/vector-search-engine.d.ts +17 -36
- package/dist/domains/search/algorithms/vector-search-engine.d.ts.map +1 -1
- package/dist/domains/search/algorithms/vector-search-engine.js +94 -481
- package/dist/domains/search/algorithms/vector-search-engine.js.map +1 -1
- package/dist/domains/search/repositories/vector-search.repository.d.ts.map +1 -1
- package/dist/domains/search/repositories/vector-search.repository.js +28 -12
- package/dist/domains/search/repositories/vector-search.repository.js.map +1 -1
- package/dist/domains/search/services/vector-search/vector-performance-tester.js +1 -1
- package/dist/domains/search/services/vector-search/vector-performance-tester.js.map +1 -1
- package/dist/domains/search/services/vector-search/vector-search-container.d.ts +1 -1
- package/dist/domains/search/services/vector-search/vector-search-container.d.ts.map +1 -1
- package/dist/domains/search/services/vector-search/vector-search-container.js +1 -1
- package/dist/domains/search/services/vector-search/vector-search-container.js.map +1 -1
- package/dist/domains/search/services/vector-search/vector-search-facade.js +3 -3
- package/dist/domains/search/services/vector-search/vector-search-facade.js.map +1 -1
- package/dist/domains/search/services/vector-search/vector-search.service.js +1 -1
- package/dist/domains/search/services/vector-search/vector-search.service.js.map +1 -1
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +2 -7
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +33 -7
- package/dist/server/index.js.map +1 -1
- package/dist/server/server-factory.d.ts +65 -0
- package/dist/server/server-factory.d.ts.map +1 -0
- package/dist/server/server-factory.js +40 -0
- package/dist/server/server-factory.js.map +1 -0
- package/dist/server/servers/sse-server.d.ts +33 -0
- package/dist/server/servers/sse-server.d.ts.map +1 -0
- package/dist/server/servers/sse-server.js +48 -0
- package/dist/server/servers/sse-server.js.map +1 -0
- package/dist/server/servers/stdio-server.d.ts +34 -0
- package/dist/server/servers/stdio-server.d.ts.map +1 -0
- package/dist/server/servers/stdio-server.js +58 -0
- package/dist/server/servers/stdio-server.js.map +1 -0
- package/dist/server/simple-mcp-server.d.ts +5 -0
- package/dist/server/simple-mcp-server.d.ts.map +1 -1
- package/dist/server/simple-mcp-server.js +17 -7
- package/dist/server/simple-mcp-server.js.map +1 -1
- package/dist/server/sse-server-impl.d.ts +22 -0
- package/dist/server/sse-server-impl.d.ts.map +1 -0
- package/dist/server/sse-server-impl.js +39 -0
- package/dist/server/sse-server-impl.js.map +1 -0
- package/dist/server/stdio-server-impl.d.ts +12 -0
- package/dist/server/stdio-server-impl.d.ts.map +1 -0
- package/dist/server/stdio-server-impl.js +19 -0
- package/dist/server/stdio-server-impl.js.map +1 -0
- package/dist/shared/types/vector-search.types.d.ts +1 -0
- package/dist/shared/types/vector-search.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/scripts/__tests__/check-db-integrity.integration.spec.ts +163 -0
- package/scripts/__tests__/fix-migration.integration.spec.ts +203 -0
- package/scripts/__tests__/migrate-embedding-data.integration.spec.ts +219 -0
- package/scripts/__tests__/regenerate-embeddings.integration.spec.ts +192 -0
- package/scripts/backup-embeddings.js +52 -61
- package/scripts/check-db-integrity.js +49 -25
- package/scripts/check-file-sizes.ts +4 -4
- package/scripts/check-pii-masking.ts +0 -3
- package/scripts/check-sql-injection.ts +0 -12
- package/scripts/debug-embeddings.js +74 -93
- package/scripts/fix-migration.js +115 -80
- package/scripts/fix-vector-dimensions.js +70 -89
- package/scripts/migrate-embedding-data.js +111 -25
- package/scripts/regenerate-embeddings.js +31 -15
- package/scripts/run-migration.js +144 -107
- package/scripts/safe-migration.js +192 -142
- package/scripts/save-work-memory.ts +6 -7
- package/scripts/simple-migrate.js +66 -34
- package/scripts/simple-update.js +147 -109
- package/dist/domains/search/algorithms/vector-search-engine-refactored.d.ts +0 -56
- package/dist/domains/search/algorithms/vector-search-engine-refactored.d.ts.map +0 -1
- package/dist/domains/search/algorithms/vector-search-engine-refactored.js +0 -101
- package/dist/domains/search/algorithms/vector-search-engine-refactored.js.map +0 -1
|
@@ -2,23 +2,28 @@
|
|
|
2
2
|
* 기존 코드에서 리팩토링된 코드로의 점진적 전환을 지원합니다.
|
|
3
3
|
* 마이그레이션 가이드와 헬퍼를 제공하여 안전한 전환을 보장합니다.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
6
|
-
import type { VectorSearchEngine } from './vector-search-engine';
|
|
5
|
+
import { VectorSearchEngine } from './vector-search-engine.js';
|
|
7
6
|
/**
|
|
8
|
-
* 기존 VectorSearchEngine에서 새로운
|
|
9
|
-
* 마이그레이션 헬퍼를 제공하여
|
|
7
|
+
* 기존 VectorSearchEngine에서 새로운 구조로의 전환을 지원합니다.
|
|
8
|
+
* 마이그레이션 헬퍼를 제공하여 안전한 전환을 보장합니다.
|
|
9
|
+
*
|
|
10
|
+
* @deprecated 리팩토링이 완료되어 더 이상 필요하지 않습니다.
|
|
10
11
|
*/
|
|
11
12
|
export declare class VectorSearchEngineMigration {
|
|
12
13
|
/**
|
|
13
14
|
* 기존 엔진을 새로운 엔진으로 교체하여 개선된 구현을 사용합니다.
|
|
14
15
|
* 데이터베이스 연결 상태를 유지하여 중단 없는 전환을 보장합니다.
|
|
16
|
+
*
|
|
17
|
+
* @deprecated 리팩토링이 완료되어 더 이상 필요하지 않습니다.
|
|
15
18
|
*/
|
|
16
|
-
static migrate(oldEngine: VectorSearchEngine):
|
|
19
|
+
static migrate(oldEngine: VectorSearchEngine): VectorSearchEngine;
|
|
17
20
|
/**
|
|
18
21
|
* 점진적 마이그레이션을 위해 어댑터 패턴을 사용하여 기존 코드 수정 없이 전환합니다.
|
|
19
22
|
* 기존 인터페이스를 유지하면서 내부적으로는 새로운 구현을 사용합니다.
|
|
23
|
+
*
|
|
24
|
+
* @deprecated 리팩토링이 완료되어 더 이상 필요하지 않습니다.
|
|
20
25
|
*/
|
|
21
|
-
static createAdapter(oldEngine: VectorSearchEngine):
|
|
26
|
+
static createAdapter(oldEngine: VectorSearchEngine): VectorSearchEngine;
|
|
22
27
|
}
|
|
23
28
|
/**
|
|
24
29
|
* 마이그레이션 체크리스트
|
|
@@ -56,11 +61,11 @@ export declare class MigrationValidator {
|
|
|
56
61
|
/**
|
|
57
62
|
* 기존 기능과 새 기능의 호환성 검증
|
|
58
63
|
*/
|
|
59
|
-
static validateCompatibility(oldEngine: VectorSearchEngine, newEngine:
|
|
64
|
+
static validateCompatibility(oldEngine: VectorSearchEngine, newEngine: VectorSearchEngine): Promise<boolean>;
|
|
60
65
|
/**
|
|
61
66
|
* 성능 비교 테스트
|
|
62
67
|
*/
|
|
63
|
-
static comparePerformance(oldEngine: VectorSearchEngine, newEngine:
|
|
68
|
+
static comparePerformance(oldEngine: VectorSearchEngine, newEngine: VectorSearchEngine, testVector: number[]): Promise<{
|
|
64
69
|
oldPerformance: any;
|
|
65
70
|
newPerformance: any;
|
|
66
71
|
improvement: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-search-engine-migration.d.ts","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/vector-search-engine-migration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"vector-search-engine-migration.d.ts","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/vector-search-engine-migration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;;;;GAKG;AACH,qBAAa,2BAA2B;IACtC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,GAAG,kBAAkB;IAcjE;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,kBAAkB,GAAG,kBAAkB;CAIxE;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,UAc/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;CA6D3B,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;WACU,qBAAqB,CAChC,SAAS,EAAE,kBAAkB,EAC7B,SAAS,EAAE,kBAAkB,GAC5B,OAAO,CAAC,OAAO,CAAC;IAiCnB;;OAEG;WACU,kBAAkB,CAC7B,SAAS,EAAE,kBAAkB,EAC7B,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC;QACT,cAAc,EAAE,GAAG,CAAC;QACpB,cAAc,EAAE,GAAG,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CAqBH"}
|
|
@@ -2,19 +2,24 @@
|
|
|
2
2
|
* 기존 코드에서 리팩토링된 코드로의 점진적 전환을 지원합니다.
|
|
3
3
|
* 마이그레이션 가이드와 헬퍼를 제공하여 안전한 전환을 보장합니다.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { VectorSearchEngine } from './vector-search-engine.js';
|
|
6
6
|
import { PIIMasker } from '../../../shared/utils/pii-masker.js';
|
|
7
7
|
/**
|
|
8
|
-
* 기존 VectorSearchEngine에서 새로운
|
|
9
|
-
* 마이그레이션 헬퍼를 제공하여
|
|
8
|
+
* 기존 VectorSearchEngine에서 새로운 구조로의 전환을 지원합니다.
|
|
9
|
+
* 마이그레이션 헬퍼를 제공하여 안전한 전환을 보장합니다.
|
|
10
|
+
*
|
|
11
|
+
* @deprecated 리팩토링이 완료되어 더 이상 필요하지 않습니다.
|
|
10
12
|
*/
|
|
11
13
|
export class VectorSearchEngineMigration {
|
|
12
14
|
/**
|
|
13
15
|
* 기존 엔진을 새로운 엔진으로 교체하여 개선된 구현을 사용합니다.
|
|
14
16
|
* 데이터베이스 연결 상태를 유지하여 중단 없는 전환을 보장합니다.
|
|
17
|
+
*
|
|
18
|
+
* @deprecated 리팩토링이 완료되어 더 이상 필요하지 않습니다.
|
|
15
19
|
*/
|
|
16
20
|
static migrate(oldEngine) {
|
|
17
|
-
|
|
21
|
+
// 리팩토링이 완료되어 기존 엔진을 그대로 반환
|
|
22
|
+
const newEngine = new VectorSearchEngine();
|
|
18
23
|
// 기존 데이터베이스 연결을 새 엔진에 전달하여 중단 없는 전환을 보장합니다.
|
|
19
24
|
if (oldEngine.isConnected()) {
|
|
20
25
|
// 기존 엔진의 데이터베이스 인스턴스를 가져와서 새 엔진에 설정하여 연결 상태를 유지합니다.
|
|
@@ -26,39 +31,12 @@ export class VectorSearchEngineMigration {
|
|
|
26
31
|
/**
|
|
27
32
|
* 점진적 마이그레이션을 위해 어댑터 패턴을 사용하여 기존 코드 수정 없이 전환합니다.
|
|
28
33
|
* 기존 인터페이스를 유지하면서 내부적으로는 새로운 구현을 사용합니다.
|
|
34
|
+
*
|
|
35
|
+
* @deprecated 리팩토링이 완료되어 더 이상 필요하지 않습니다.
|
|
29
36
|
*/
|
|
30
37
|
static createAdapter(oldEngine) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const adapter = {
|
|
34
|
-
...newEngine,
|
|
35
|
-
// 기존 메서드들을 새 엔진으로 위임하여 점진적 전환을 지원합니다.
|
|
36
|
-
async search(queryVector, options = {}, provider = 'tfidf') {
|
|
37
|
-
return await newEngine.search(queryVector, options, provider);
|
|
38
|
-
},
|
|
39
|
-
async hybridSearch(queryVector, textQuery, options = {}, provider = 'tfidf') {
|
|
40
|
-
return await newEngine.hybridSearch(queryVector, textQuery, options, provider);
|
|
41
|
-
},
|
|
42
|
-
getIndexStatus() {
|
|
43
|
-
return newEngine.getIndexStatus();
|
|
44
|
-
},
|
|
45
|
-
async rebuildIndex() {
|
|
46
|
-
return await newEngine.rebuildIndex();
|
|
47
|
-
},
|
|
48
|
-
async performanceTest(queryVector, iterations = 10) {
|
|
49
|
-
return await newEngine.performanceTest(queryVector, iterations);
|
|
50
|
-
},
|
|
51
|
-
getDimensions() {
|
|
52
|
-
return newEngine.getDimensions();
|
|
53
|
-
},
|
|
54
|
-
isAvailable() {
|
|
55
|
-
return newEngine.isAvailable();
|
|
56
|
-
},
|
|
57
|
-
isConnected() {
|
|
58
|
-
return newEngine.isConnected();
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
return adapter;
|
|
38
|
+
// 리팩토링이 완료되어 기존 엔진을 그대로 반환
|
|
39
|
+
return new VectorSearchEngine();
|
|
62
40
|
}
|
|
63
41
|
}
|
|
64
42
|
/**
|
|
@@ -72,8 +50,8 @@ export const MIGRATION_CHECKLIST = [
|
|
|
72
50
|
'✅ 5. 리포지토리 구현 확인 (src/repositories/)',
|
|
73
51
|
'✅ 6. 팩토리 클래스 확인 (src/factories/vector-search.factory.ts)',
|
|
74
52
|
'✅ 7. 컨테이너 클래스 확인 (src/services/vector-search/vector-search-container.ts)',
|
|
75
|
-
'✅ 8.
|
|
76
|
-
'✅ 9. 테스트 코드 확인
|
|
53
|
+
'✅ 8. 리팩토링 완료 (vector-search-engine.ts에 통합됨)',
|
|
54
|
+
'✅ 9. 테스트 코드 확인 완료',
|
|
77
55
|
'⏳ 10. 기존 코드에서 새 코드로 교체',
|
|
78
56
|
'⏳ 11. 통합 테스트 실행',
|
|
79
57
|
'⏳ 12. 성능 테스트 실행',
|
|
@@ -90,8 +68,8 @@ export const MIGRATION_STEPS = {
|
|
|
90
68
|
// 기존
|
|
91
69
|
import { VectorSearchEngine } from './vector-search-engine';
|
|
92
70
|
|
|
93
|
-
// 새로운
|
|
94
|
-
import {
|
|
71
|
+
// 새로운 (리팩토링 완료)
|
|
72
|
+
import { VectorSearchEngine } from './vector-search-engine';
|
|
95
73
|
import type { VectorSearchQuery, VectorSearchResult } from '../../../shared/types/vector-search.types';
|
|
96
74
|
`
|
|
97
75
|
},
|
|
@@ -103,8 +81,8 @@ import type { VectorSearchQuery, VectorSearchResult } from '../../../shared/type
|
|
|
103
81
|
const engine = new VectorSearchEngine();
|
|
104
82
|
engine.initialize(db);
|
|
105
83
|
|
|
106
|
-
// 새로운
|
|
107
|
-
const engine = new
|
|
84
|
+
// 새로운 (리팩토링 완료)
|
|
85
|
+
const engine = new VectorSearchEngine();
|
|
108
86
|
engine.initialize(db);
|
|
109
87
|
`
|
|
110
88
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-search-engine-migration.js","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/vector-search-engine-migration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"vector-search-engine-migration.js","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/vector-search-engine-migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
* 의미적 유사성을 기반으로 한 고성능 벡터 검색을 제공합니다.
|
|
3
3
|
* sqlite-vec를 사용하여 대용량 벡터 데이터에서도 빠른 유사도 검색을 수행합니다.
|
|
4
4
|
* Memento MCP Server의 핵심 벡터 검색 컴포넌트로서 의미 기반 검색 기능을 제공합니다.
|
|
5
|
+
*
|
|
6
|
+
* 리팩토링: VectorSearchContainer와 Facade 패턴을 사용하여 개선된 구조를 활용합니다.
|
|
7
|
+
* 기존 인터페이스는 유지하여 하위 호환성을 보장합니다.
|
|
5
8
|
*/
|
|
6
9
|
import Database from 'better-sqlite3';
|
|
7
10
|
export interface VectorSearchResult {
|
|
@@ -29,63 +32,35 @@ export interface VectorIndexStatus {
|
|
|
29
32
|
dimensions: number;
|
|
30
33
|
vecExtensionLoaded: boolean;
|
|
31
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* 벡터 검색 엔진
|
|
37
|
+
* 리팩토링된 구조를 사용하여 개선된 유지보수성과 테스트 가능성을 제공합니다.
|
|
38
|
+
*/
|
|
32
39
|
export declare class VectorSearchEngine {
|
|
33
|
-
private
|
|
34
|
-
private isVecAvailable;
|
|
35
|
-
private vecExtensionLoaded;
|
|
36
|
-
private readonly defaultDimensions;
|
|
37
|
-
private providerDimensions;
|
|
38
|
-
private readonly defaultThreshold;
|
|
39
|
-
private readonly defaultLimit;
|
|
40
|
+
private container;
|
|
40
41
|
constructor();
|
|
41
|
-
/**
|
|
42
|
-
* 각 임베딩 provider별로 다른 벡터 테이블을 사용하여 차원 불일치를 방지합니다.
|
|
43
|
-
* provider에 따라 적절한 테이블명을 반환하여 정확한 검색을 보장합니다.
|
|
44
|
-
* SQL Injection 방지를 위해 화이트리스트 기반 검증을 수행합니다.
|
|
45
|
-
*/
|
|
46
|
-
private getVectorTableName;
|
|
47
42
|
/**
|
|
48
43
|
* 데이터베이스 연결을 설정하고 벡터 검색 기능의 사용 가능 여부를 확인합니다.
|
|
49
|
-
* provider별 차원 정보를 갱신하여 정확한 검색을 보장합니다.
|
|
50
|
-
*/
|
|
51
|
-
initialize(db: Database.Database): void;
|
|
52
|
-
/**
|
|
53
|
-
* 벡터 검색 기능이 실제로 사용 가능한지 확인하여 안전한 검색을 보장합니다.
|
|
54
|
-
* sqlite-vec 확장 로드 여부와 테이블 존재를 모두 확인하여 런타임 오류를 방지합니다.
|
|
55
44
|
*/
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* 데이터베이스에 저장된 실제 임베딩 차원을 조회하여 정확한 벡터 검색을 보장합니다.
|
|
59
|
-
* provider별로 다른 차원을 사용할 수 있으므로 메타데이터에서 차원 정보를 갱신합니다.
|
|
60
|
-
*/
|
|
61
|
-
private refreshProviderDimensions;
|
|
62
|
-
/**
|
|
63
|
-
* 특정 provider의 실제 저장된 임베딩 차원을 조회하여 벡터 검색 시 차원 불일치를 방지합니다.
|
|
64
|
-
*/
|
|
65
|
-
private getActualStoredDimensions;
|
|
45
|
+
initialize(db: Database.Database | null): void;
|
|
66
46
|
/**
|
|
67
47
|
* 쿼리 벡터와 유사한 메모리를 검색하여 의미적으로 관련된 결과를 제공합니다.
|
|
68
|
-
* sqlite-vec의 고성능 벡터 검색 기능을 활용하여 빠르고 정확한 검색을 수행합니다.
|
|
69
48
|
*/
|
|
70
49
|
search(queryVector: number[], options?: VectorSearchOptions, provider?: string): Promise<VectorSearchResult[]>;
|
|
71
50
|
/**
|
|
72
51
|
* 벡터 검색과 메타데이터 검색을 결합하여 검색 정확도와 포괄성을 동시에 확보합니다.
|
|
73
|
-
* SQLite 호환성을 위해 LEFT JOIN을 사용하여 안정적인 검색을 보장합니다.
|
|
74
52
|
*/
|
|
75
53
|
hybridSearch(queryVector: number[], textQuery: string, options?: VectorSearchOptions, provider?: string): Promise<VectorSearchResult[]>;
|
|
76
54
|
/**
|
|
77
55
|
* 벡터 검색 기능의 현재 상태를 확인하여 사용 가능 여부와 인덱스 정보를 제공합니다.
|
|
78
|
-
* 시스템 모니터링과 디버깅을 위해 인덱스 상태를 조회합니다.
|
|
79
56
|
*/
|
|
80
57
|
getIndexStatus(): VectorIndexStatus;
|
|
81
58
|
/**
|
|
82
59
|
* 벡터 인덱스를 재구성하여 검색 성능을 최적화합니다.
|
|
83
|
-
* sqlite-vec는 자동으로 인덱스를 관리하므로 수동 재구성이 필요 없는 경우를 처리합니다.
|
|
84
60
|
*/
|
|
85
61
|
rebuildIndex(): Promise<boolean>;
|
|
86
62
|
/**
|
|
87
63
|
* 벡터 검색의 성능을 측정하여 최적화 지점을 파악합니다.
|
|
88
|
-
* 반복 실행을 통해 평균, 최소, 최대 응답 시간과 성공률을 계산합니다.
|
|
89
64
|
*/
|
|
90
65
|
performanceTest(queryVector: number[], iterations?: number): Promise<{
|
|
91
66
|
averageTime: number;
|
|
@@ -98,6 +73,14 @@ export declare class VectorSearchEngine {
|
|
|
98
73
|
* 특정 provider의 벡터 차원을 조회하여 벡터 검색 시 차원 정보를 제공합니다.
|
|
99
74
|
*/
|
|
100
75
|
getDimensions(provider?: string): number;
|
|
76
|
+
/**
|
|
77
|
+
* 각 임베딩 provider별로 다른 벡터 테이블을 사용하여 차원 불일치를 방지합니다.
|
|
78
|
+
* provider에 따라 적절한 테이블명을 반환하여 정확한 검색을 보장합니다.
|
|
79
|
+
* SQL Injection 방지를 위해 화이트리스트 기반 검증을 수행합니다.
|
|
80
|
+
*
|
|
81
|
+
* @internal 테스트를 위해 public으로 유지
|
|
82
|
+
*/
|
|
83
|
+
getVectorTableName(provider: string): string;
|
|
101
84
|
/**
|
|
102
85
|
* 벡터 검색 기능이 사용 가능한지 확인하여 호출자가 적절한 처리를 할 수 있도록 합니다.
|
|
103
86
|
*/
|
|
@@ -106,8 +89,6 @@ export declare class VectorSearchEngine {
|
|
|
106
89
|
* 데이터베이스 연결 상태를 확인하여 검색 실행 전 안전성을 보장합니다.
|
|
107
90
|
*/
|
|
108
91
|
isConnected(): boolean;
|
|
109
|
-
private safeParseTags;
|
|
110
|
-
private getExpectedDimensions;
|
|
111
92
|
}
|
|
112
93
|
export declare function getVectorSearchEngine(): VectorSearchEngine;
|
|
113
94
|
export declare function createVectorSearchEngine(): VectorSearchEngine;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-search-engine.d.ts","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/vector-search-engine.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"vector-search-engine.d.ts","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/vector-search-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAStC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAAwB;;IAMzC;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI;IAS9C;;OAEG;IACG,MAAM,CACV,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,mBAAwB,EACjC,QAAQ,GAAE,MAAgB,GACzB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAehC;;OAEG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,mBAAwB,EACjC,QAAQ,GAAE,MAAgB,GACzB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgBhC;;OAEG;IACH,cAAc,IAAI,iBAAiB;IA8BnC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAatC;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,UAAU,GAAE,MAAW,GAAG,OAAO,CAAC;QAC7E,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAyBF;;OAEG;IACH,aAAa,CAAC,QAAQ,GAAE,MAAgB,GAAG,MAAM;IAWjD;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C;;OAEG;IACH,WAAW,IAAI,OAAO;IAYtB;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB;AAKD,wBAAgB,qBAAqB,IAAI,kBAAkB,CAK1D;AAED,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|