memento-mcp-server 1.11.1 → 1.12.0-a1

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 (126) hide show
  1. package/README.en.md +21 -6
  2. package/README.md +38 -7
  3. package/dist/algorithms/hybrid-search-engine.d.ts +34 -1
  4. package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -1
  5. package/dist/algorithms/hybrid-search-engine.js +186 -17
  6. package/dist/algorithms/hybrid-search-engine.js.map +1 -1
  7. package/dist/algorithms/search-ranking.d.ts +15 -1
  8. package/dist/algorithms/search-ranking.d.ts.map +1 -1
  9. package/dist/algorithms/search-ranking.js +41 -4
  10. package/dist/algorithms/search-ranking.js.map +1 -1
  11. package/dist/config/environment.d.ts.map +1 -1
  12. package/dist/config/environment.js +4 -0
  13. package/dist/config/environment.js.map +1 -1
  14. package/dist/config/index.d.ts.map +1 -1
  15. package/dist/config/index.js +6 -0
  16. package/dist/config/index.js.map +1 -1
  17. package/dist/config/ranking-weights-loader.d.ts +37 -0
  18. package/dist/config/ranking-weights-loader.d.ts.map +1 -0
  19. package/dist/config/ranking-weights-loader.js +109 -0
  20. package/dist/config/ranking-weights-loader.js.map +1 -0
  21. package/dist/constants/relation-constants.d.ts +95 -0
  22. package/dist/constants/relation-constants.d.ts.map +1 -0
  23. package/dist/constants/relation-constants.js +95 -0
  24. package/dist/constants/relation-constants.js.map +1 -0
  25. package/dist/database/migration/migrations/005-relation-engine-schema.d.ts +65 -0
  26. package/dist/database/migration/migrations/005-relation-engine-schema.d.ts.map +1 -0
  27. package/dist/database/migration/migrations/005-relation-engine-schema.js +295 -0
  28. package/dist/database/migration/migrations/005-relation-engine-schema.js.map +1 -0
  29. package/dist/database/migration/migrations/005-relation-engine-schema.sql +64 -0
  30. package/dist/server/routes/admin.routes.d.ts.map +1 -1
  31. package/dist/server/routes/admin.routes.js +228 -0
  32. package/dist/server/routes/admin.routes.js.map +1 -1
  33. package/dist/services/anchor/anchor-interfaces.d.ts +1 -0
  34. package/dist/services/anchor/anchor-interfaces.d.ts.map +1 -1
  35. package/dist/services/anchor/anchor-interfaces.js.map +1 -1
  36. package/dist/services/anchor/anchor-search-service.d.ts +16 -0
  37. package/dist/services/anchor/anchor-search-service.d.ts.map +1 -1
  38. package/dist/services/anchor/anchor-search-service.js +136 -17
  39. package/dist/services/anchor/anchor-search-service.js.map +1 -1
  40. package/dist/services/batch-scheduler.d.ts +11 -0
  41. package/dist/services/batch-scheduler.d.ts.map +1 -1
  42. package/dist/services/batch-scheduler.js +99 -0
  43. package/dist/services/batch-scheduler.js.map +1 -1
  44. package/dist/services/llm-based-relation-extractor.d.ts +156 -0
  45. package/dist/services/llm-based-relation-extractor.d.ts.map +1 -0
  46. package/dist/services/llm-based-relation-extractor.js +1350 -0
  47. package/dist/services/llm-based-relation-extractor.js.map +1 -0
  48. package/dist/services/relation-extractor.d.ts +73 -0
  49. package/dist/services/relation-extractor.d.ts.map +1 -0
  50. package/dist/services/relation-extractor.js +231 -0
  51. package/dist/services/relation-extractor.js.map +1 -0
  52. package/dist/services/relation-graph.d.ts +275 -0
  53. package/dist/services/relation-graph.d.ts.map +1 -0
  54. package/dist/services/relation-graph.js +869 -0
  55. package/dist/services/relation-graph.js.map +1 -0
  56. package/dist/services/relation-quality-validator.d.ts +211 -0
  57. package/dist/services/relation-quality-validator.d.ts.map +1 -0
  58. package/dist/services/relation-quality-validator.js +415 -0
  59. package/dist/services/relation-quality-validator.js.map +1 -0
  60. package/dist/services/rule-based-relation-extractor.d.ts +66 -0
  61. package/dist/services/rule-based-relation-extractor.d.ts.map +1 -0
  62. package/dist/services/rule-based-relation-extractor.js +258 -0
  63. package/dist/services/rule-based-relation-extractor.js.map +1 -0
  64. package/dist/tools/add-relation-tool.d.ts +34 -0
  65. package/dist/tools/add-relation-tool.d.ts.map +1 -0
  66. package/dist/tools/add-relation-tool.js +163 -0
  67. package/dist/tools/add-relation-tool.js.map +1 -0
  68. package/dist/tools/extract-relations-tool.d.ts +28 -0
  69. package/dist/tools/extract-relations-tool.d.ts.map +1 -0
  70. package/dist/tools/extract-relations-tool.js +159 -0
  71. package/dist/tools/extract-relations-tool.js.map +1 -0
  72. package/dist/tools/get-relations-tool.d.ts +34 -0
  73. package/dist/tools/get-relations-tool.d.ts.map +1 -0
  74. package/dist/tools/get-relations-tool.js +155 -0
  75. package/dist/tools/get-relations-tool.js.map +1 -0
  76. package/dist/tools/index.d.ts.map +1 -1
  77. package/dist/tools/index.js +11 -3
  78. package/dist/tools/index.js.map +1 -1
  79. package/dist/tools/remember-tool.d.ts +17 -0
  80. package/dist/tools/remember-tool.d.ts.map +1 -1
  81. package/dist/tools/remember-tool.js +195 -26
  82. package/dist/tools/remember-tool.js.map +1 -1
  83. package/dist/tools/remove-relation-tool.d.ts +45 -0
  84. package/dist/tools/remove-relation-tool.d.ts.map +1 -0
  85. package/dist/tools/remove-relation-tool.js +142 -0
  86. package/dist/tools/remove-relation-tool.js.map +1 -0
  87. package/dist/tools/search-local-tool.d.ts.map +1 -1
  88. package/dist/tools/search-local-tool.js +10 -3
  89. package/dist/tools/search-local-tool.js.map +1 -1
  90. package/dist/tools/types.d.ts +2 -0
  91. package/dist/tools/types.d.ts.map +1 -1
  92. package/dist/tools/types.js.map +1 -1
  93. package/dist/tools/visualize-relations-tool.d.ts +46 -0
  94. package/dist/tools/visualize-relations-tool.d.ts.map +1 -0
  95. package/dist/tools/visualize-relations-tool.js +157 -0
  96. package/dist/tools/visualize-relations-tool.js.map +1 -0
  97. package/dist/types/index.d.ts +8 -0
  98. package/dist/types/index.d.ts.map +1 -1
  99. package/dist/types/index.js +1 -0
  100. package/dist/types/index.js.map +1 -1
  101. package/dist/types/relation-graph.d.ts +215 -0
  102. package/dist/types/relation-graph.d.ts.map +1 -0
  103. package/dist/types/relation-graph.js +6 -0
  104. package/dist/types/relation-graph.js.map +1 -0
  105. package/dist/types/relation.d.ts +112 -0
  106. package/dist/types/relation.d.ts.map +1 -0
  107. package/dist/types/relation.js +67 -0
  108. package/dist/types/relation.js.map +1 -0
  109. package/dist/utils/cache-key-generator.d.ts +63 -0
  110. package/dist/utils/cache-key-generator.d.ts.map +1 -0
  111. package/dist/utils/cache-key-generator.js +76 -0
  112. package/dist/utils/cache-key-generator.js.map +1 -0
  113. package/dist/utils/database.d.ts.map +1 -1
  114. package/dist/utils/database.js +37 -17
  115. package/dist/utils/database.js.map +1 -1
  116. package/dist/utils/relation-visualizer.d.ts +81 -0
  117. package/dist/utils/relation-visualizer.d.ts.map +1 -0
  118. package/dist/utils/relation-visualizer.js +239 -0
  119. package/dist/utils/relation-visualizer.js.map +1 -0
  120. package/dist/utils/type-guards.d.ts +100 -0
  121. package/dist/utils/type-guards.d.ts.map +1 -0
  122. package/dist/utils/type-guards.js +144 -0
  123. package/dist/utils/type-guards.js.map +1 -0
  124. package/package.json +7 -2
  125. package/scripts/generate-relation-report.ts +481 -0
  126. package/scripts/weekly-relation-validation.ts +423 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-based-relation-extractor.js","sourceRoot":"","sources":["../../src/services/llm-based-relation-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * 관계 추출 메인 서비스
3
+ * 하이브리드 방식으로 관계를 추출합니다 (규칙 기반 → LLM fallback)
4
+ *
5
+ * 추출 전략:
6
+ * 1. 규칙 기반 추출 시도 (빠르고 비용 효율적)
7
+ * 2. 규칙 기반 결과가 없거나 신뢰도가 낮으면 LLM fallback
8
+ * 3. 타입별 관계 유형 필터링 적용
9
+ */
10
+ import type { RelationCandidate, IRelationExtractor, ExtractOptions } from '../types/relation.js';
11
+ import type { MemoryItem } from '../types/index.js';
12
+ import { RuleBasedRelationExtractor } from './rule-based-relation-extractor.js';
13
+ import { LLMBasedRelationExtractor } from './llm-based-relation-extractor.js';
14
+ /**
15
+ * 관계 추출 메인 서비스
16
+ */
17
+ export declare class RelationExtractor implements IRelationExtractor {
18
+ private readonly ruleExtractor;
19
+ private readonly llmExtractor;
20
+ private readonly cache;
21
+ constructor(ruleExtractor?: RuleBasedRelationExtractor, llmExtractor?: LLMBasedRelationExtractor);
22
+ /**
23
+ * 새로운 기억과 기존 기억들 간의 관계를 추출합니다.
24
+ * 하이브리드 방식: 규칙 기반 먼저 시도, 실패 시 LLM fallback
25
+ *
26
+ * @param newMemory 새로운 기억
27
+ * @param existingMemories 기존 기억 목록
28
+ * @param options 추출 옵션
29
+ * @returns 관계 후보 목록
30
+ */
31
+ extractRelations(newMemory: MemoryItem, existingMemories: MemoryItem[], options?: ExtractOptions): Promise<RelationCandidate[]>;
32
+ /**
33
+ * 기억 타입에 적용 가능한 관계 유형을 반환합니다.
34
+ *
35
+ * @param memoryType 기억 타입
36
+ * @param requestedTypes 요청된 관계 유형 (없으면 모든 적용 가능한 타입 반환)
37
+ * @returns 적용 가능한 관계 유형 목록
38
+ */
39
+ private getApplicableRelationTypes;
40
+ /**
41
+ * 규칙 기반 결과와 LLM 결과를 병합합니다.
42
+ * 동일한 관계 (source_id, target_id, relation_type이 동일)는 중복 제거하고,
43
+ * 신뢰도가 높은 것을 우선합니다.
44
+ *
45
+ * @param ruleCandidates 규칙 기반 결과
46
+ * @param llmCandidates LLM 결과
47
+ * @returns 병합된 결과
48
+ */
49
+ private mergeCandidates;
50
+ /**
51
+ * 캐시 키 생성
52
+ * 공통 유틸리티를 사용하여 일관된 캐시 키를 생성합니다.
53
+ *
54
+ * @param newMemoryId 새로운 기억 ID
55
+ * @param existingMemoryIds 기존 기억 ID 목록
56
+ * @param options 추출 옵션
57
+ * @returns 캐시 키
58
+ */
59
+ private generateCacheKey;
60
+ /**
61
+ * 배치 관계 추출 (여러 기억을 묶어서 처리)
62
+ * 비동기 배치 처리로 성능 최적화
63
+ *
64
+ * @param newMemories 새로운 기억 목록
65
+ * @param existingMemories 기존 기억 목록
66
+ * @param options 추출 옵션 (batchSize 포함 가능)
67
+ * @returns 각 새로운 기억별 관계 후보 맵
68
+ */
69
+ extractRelationsBatch(newMemories: MemoryItem[], existingMemories: MemoryItem[], options?: ExtractOptions & {
70
+ batchSize?: number;
71
+ }): Promise<Map<string, RelationCandidate[]>>;
72
+ }
73
+ //# sourceMappingURL=relation-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-extractor.d.ts","sourceRoot":"","sources":["../../src/services/relation-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAEjB,kBAAkB,EAClB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAM9E;;GAEG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;gBAGxD,aAAa,CAAC,EAAE,0BAA0B,EAC1C,YAAY,CAAC,EAAE,yBAAyB;IAQ1C;;;;;;;;OAQG;IACG,gBAAgB,CACpB,SAAS,EAAE,UAAU,EACrB,gBAAgB,EAAE,UAAU,EAAE,EAC9B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA2H/B;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;IAclC;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IA0BvB;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;;;;;;;OAQG;IACG,qBAAqB,CACzB,WAAW,EAAE,UAAU,EAAE,EACzB,gBAAgB,EAAE,UAAU,EAAE,EAC9B,OAAO,CAAC,EAAE,cAAc,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAChD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;CAkC7C"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * 관계 추출 메인 서비스
3
+ * 하이브리드 방식으로 관계를 추출합니다 (규칙 기반 → LLM fallback)
4
+ *
5
+ * 추출 전략:
6
+ * 1. 규칙 기반 추출 시도 (빠르고 비용 효율적)
7
+ * 2. 규칙 기반 결과가 없거나 신뢰도가 낮으면 LLM fallback
8
+ * 3. 타입별 관계 유형 필터링 적용
9
+ */
10
+ import { isApplicableRelationType, MEMORY_TYPE_RELATION_MAP } from '../types/relation.js';
11
+ import { RuleBasedRelationExtractor } from './rule-based-relation-extractor.js';
12
+ import { LLMBasedRelationExtractor } from './llm-based-relation-extractor.js';
13
+ import { CacheService } from './cache-service.js';
14
+ import { logger } from '../utils/logger.js';
15
+ import { CacheKeyGenerator } from '../utils/cache-key-generator.js';
16
+ import { CONFIDENCE, LIMITS, CACHE } from '../constants/relation-constants.js';
17
+ /**
18
+ * 관계 추출 메인 서비스
19
+ */
20
+ export class RelationExtractor {
21
+ ruleExtractor;
22
+ llmExtractor;
23
+ cache;
24
+ constructor(ruleExtractor, llmExtractor) {
25
+ this.ruleExtractor = ruleExtractor ?? new RuleBasedRelationExtractor();
26
+ this.llmExtractor = llmExtractor ?? new LLMBasedRelationExtractor();
27
+ // 캐시: 1000개 항목, 7일 TTL
28
+ this.cache = new CacheService(CACHE.EXTRACTION_SIZE, CACHE.EXTRACTION_TTL_MS);
29
+ }
30
+ /**
31
+ * 새로운 기억과 기존 기억들 간의 관계를 추출합니다.
32
+ * 하이브리드 방식: 규칙 기반 먼저 시도, 실패 시 LLM fallback
33
+ *
34
+ * @param newMemory 새로운 기억
35
+ * @param existingMemories 기존 기억 목록
36
+ * @param options 추출 옵션
37
+ * @returns 관계 후보 목록
38
+ */
39
+ async extractRelations(newMemory, existingMemories, options) {
40
+ if (existingMemories.length === 0) {
41
+ return [];
42
+ }
43
+ const method = options?.method ?? 'hybrid';
44
+ const minConfidence = options?.minConfidence ?? CONFIDENCE.MIN_RULE_BASED;
45
+ const immediate = options?.immediate ?? false;
46
+ // 타입별 관계 유형 필터링
47
+ const applicableTypes = this.getApplicableRelationTypes(newMemory.type, options?.relationTypes);
48
+ if (applicableTypes.length === 0) {
49
+ return [];
50
+ }
51
+ // 캐시 키 생성 (즉시 처리인 경우에만 캐싱)
52
+ if (immediate) {
53
+ const cacheKey = this.generateCacheKey(newMemory.id, existingMemories.map(m => m.id), options);
54
+ const cached = this.cache.get(cacheKey);
55
+ if (cached) {
56
+ logger.debug('관계 추출 캐시 히트', { cacheKey });
57
+ return cached;
58
+ }
59
+ }
60
+ // 관계 유형 필터링이 포함된 옵션 생성
61
+ // MiniLM 기반 후보 필터링을 위해 candidateLimit 기본값 설정
62
+ const extractOptions = {
63
+ ...options,
64
+ relationTypes: applicableTypes,
65
+ candidateLimit: options?.candidateLimit ?? LIMITS.LLM_CANDIDATE_DEFAULT // MiniLM 필터링을 위한 기본값
66
+ };
67
+ // 추출 방법에 따라 분기
68
+ if (method === 'rule') {
69
+ return await this.ruleExtractor.extractRelations(newMemory, existingMemories, extractOptions);
70
+ }
71
+ if (method === 'llm') {
72
+ // LLM만 사용하는 경우, LLM이 사용 가능한지 확인
73
+ if (!this.llmExtractor.isAvailable()) {
74
+ throw new Error('LLM 서비스가 사용 불가능합니다. 규칙 기반 추출을 사용하거나 API 키를 설정해주세요.');
75
+ }
76
+ return await this.llmExtractor.extractRelations(newMemory, existingMemories, extractOptions);
77
+ }
78
+ // hybrid 방식: 규칙 기반 먼저 시도
79
+ const ruleCandidates = await this.ruleExtractor.extractRelations(newMemory, existingMemories, extractOptions);
80
+ // 규칙 기반 결과 평가
81
+ const hasHighConfidenceResults = ruleCandidates.some(c => c.confidence >= minConfidence);
82
+ const hasAnyResults = ruleCandidates.length > 0;
83
+ // 규칙 기반 결과가 충분하면 반환
84
+ if (hasHighConfidenceResults) {
85
+ logger.info('규칙 기반 추출 성공', {
86
+ relationCount: ruleCandidates.length,
87
+ memoryId: newMemory.id
88
+ });
89
+ const filtered = ruleCandidates.filter(c => c.confidence >= minConfidence);
90
+ // 캐시 저장 (즉시 처리인 경우에만)
91
+ if (immediate) {
92
+ const cacheKey = this.generateCacheKey(newMemory.id, existingMemories.map(m => m.id), options);
93
+ this.cache.set(cacheKey, filtered);
94
+ }
95
+ return filtered;
96
+ }
97
+ // 규칙 기반 결과가 없거나 신뢰도가 낮으면 LLM fallback
98
+ if (!hasAnyResults || !hasHighConfidenceResults) {
99
+ // LLM이 사용 가능한지 확인
100
+ if (!this.llmExtractor.isAvailable()) {
101
+ logger.info('LLM 서비스가 사용 불가능하여 규칙 기반 결과 반환', { memoryId: newMemory.id });
102
+ return ruleCandidates;
103
+ }
104
+ logger.info('규칙 기반 결과 부족, LLM fallback 시도', {
105
+ ruleCandidateCount: ruleCandidates.length,
106
+ memoryId: newMemory.id
107
+ });
108
+ try {
109
+ const llmCandidates = await this.llmExtractor.extractRelations(newMemory, existingMemories, extractOptions);
110
+ // LLM 결과와 규칙 기반 결과 병합 (중복 제거)
111
+ const mergedCandidates = this.mergeCandidates(ruleCandidates, llmCandidates);
112
+ const filtered = mergedCandidates.filter(c => c.confidence >= minConfidence);
113
+ logger.info('LLM fallback 완료', {
114
+ totalRelations: filtered.length,
115
+ memoryId: newMemory.id
116
+ });
117
+ // 캐시 저장 (즉시 처리인 경우에만)
118
+ if (immediate) {
119
+ const cacheKey = this.generateCacheKey(newMemory.id, existingMemories.map(m => m.id), options);
120
+ this.cache.set(cacheKey, filtered);
121
+ }
122
+ return filtered;
123
+ }
124
+ catch (error) {
125
+ logger.error('LLM fallback 실패, 규칙 기반 결과 반환', {
126
+ error: error instanceof Error ? error.message : String(error),
127
+ memoryId: newMemory.id
128
+ });
129
+ return ruleCandidates;
130
+ }
131
+ }
132
+ return ruleCandidates;
133
+ }
134
+ /**
135
+ * 기억 타입에 적용 가능한 관계 유형을 반환합니다.
136
+ *
137
+ * @param memoryType 기억 타입
138
+ * @param requestedTypes 요청된 관계 유형 (없으면 모든 적용 가능한 타입 반환)
139
+ * @returns 적용 가능한 관계 유형 목록
140
+ */
141
+ getApplicableRelationTypes(memoryType, requestedTypes) {
142
+ const defaultTypes = MEMORY_TYPE_RELATION_MAP[memoryType];
143
+ if (!requestedTypes) {
144
+ return defaultTypes;
145
+ }
146
+ // 요청된 타입 중에서 적용 가능한 타입만 필터링
147
+ return requestedTypes.filter(type => isApplicableRelationType(memoryType, type));
148
+ }
149
+ /**
150
+ * 규칙 기반 결과와 LLM 결과를 병합합니다.
151
+ * 동일한 관계 (source_id, target_id, relation_type이 동일)는 중복 제거하고,
152
+ * 신뢰도가 높은 것을 우선합니다.
153
+ *
154
+ * @param ruleCandidates 규칙 기반 결과
155
+ * @param llmCandidates LLM 결과
156
+ * @returns 병합된 결과
157
+ */
158
+ mergeCandidates(ruleCandidates, llmCandidates) {
159
+ const merged = new Map();
160
+ // 규칙 기반 결과 추가
161
+ for (const candidate of ruleCandidates) {
162
+ const key = `${candidate.source_id}:${candidate.target_id}:${candidate.relation_type}`;
163
+ merged.set(key, candidate);
164
+ }
165
+ // LLM 결과 추가 (중복이면 신뢰도가 높은 것으로 교체)
166
+ for (const candidate of llmCandidates) {
167
+ const key = `${candidate.source_id}:${candidate.target_id}:${candidate.relation_type}`;
168
+ const existing = merged.get(key);
169
+ if (!existing || candidate.confidence > existing.confidence) {
170
+ merged.set(key, candidate);
171
+ }
172
+ }
173
+ // 신뢰도 내림차순 정렬
174
+ return Array.from(merged.values()).sort((a, b) => b.confidence - a.confidence);
175
+ }
176
+ /**
177
+ * 캐시 키 생성
178
+ * 공통 유틸리티를 사용하여 일관된 캐시 키를 생성합니다.
179
+ *
180
+ * @param newMemoryId 새로운 기억 ID
181
+ * @param existingMemoryIds 기존 기억 ID 목록
182
+ * @param options 추출 옵션
183
+ * @returns 캐시 키
184
+ */
185
+ generateCacheKey(newMemoryId, existingMemoryIds, options) {
186
+ return CacheKeyGenerator.generateRelationExtractionKey(newMemoryId, existingMemoryIds, {
187
+ method: options?.method,
188
+ minConfidence: options?.minConfidence,
189
+ candidateLimit: options?.candidateLimit,
190
+ relationTypes: options?.relationTypes,
191
+ immediate: options?.immediate
192
+ });
193
+ }
194
+ /**
195
+ * 배치 관계 추출 (여러 기억을 묶어서 처리)
196
+ * 비동기 배치 처리로 성능 최적화
197
+ *
198
+ * @param newMemories 새로운 기억 목록
199
+ * @param existingMemories 기존 기억 목록
200
+ * @param options 추출 옵션 (batchSize 포함 가능)
201
+ * @returns 각 새로운 기억별 관계 후보 맵
202
+ */
203
+ async extractRelationsBatch(newMemories, existingMemories, options) {
204
+ const results = new Map();
205
+ // 배치 크기를 옵션에서 가져오거나, 환경 변수에서 가져오거나, 기본값 사용
206
+ const batchSize = options?.batchSize ??
207
+ (process.env.RELATION_EXTRACT_BATCH_SIZE ? parseInt(process.env.RELATION_EXTRACT_BATCH_SIZE, 10) : LIMITS.BATCH_SIZE_DEFAULT);
208
+ const batches = [];
209
+ // 배치로 나누기
210
+ for (let i = 0; i < newMemories.length; i += batchSize) {
211
+ batches.push(newMemories.slice(i, i + batchSize));
212
+ }
213
+ // 각 배치 처리 (병렬 처리)
214
+ for (const batch of batches) {
215
+ const promises = batch.map(memory => this.extractRelations(memory, existingMemories, {
216
+ ...options,
217
+ immediate: true // 배치 처리 시 캐싱 활성화
218
+ }));
219
+ const batchResults = await Promise.all(promises);
220
+ for (let i = 0; i < batch.length && i < batchResults.length; i++) {
221
+ const memory = batch[i];
222
+ const result = batchResults[i];
223
+ if (memory && result) {
224
+ results.set(memory.id, result);
225
+ }
226
+ }
227
+ }
228
+ return results;
229
+ }
230
+ }
231
+ //# sourceMappingURL=relation-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-extractor.js","sourceRoot":"","sources":["../../src/services/relation-extractor.ts"],"names":[],"mappings":"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"}