memento-mcp-server 1.11.1 → 1.12.0-a
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/README.en.md +21 -6
- package/README.md +38 -7
- package/dist/algorithms/hybrid-search-engine.d.ts +34 -1
- package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -1
- package/dist/algorithms/hybrid-search-engine.js +186 -17
- package/dist/algorithms/hybrid-search-engine.js.map +1 -1
- package/dist/algorithms/search-ranking.d.ts +15 -1
- package/dist/algorithms/search-ranking.d.ts.map +1 -1
- package/dist/algorithms/search-ranking.js +41 -4
- package/dist/algorithms/search-ranking.js.map +1 -1
- package/dist/config/environment.d.ts.map +1 -1
- package/dist/config/environment.js +4 -0
- package/dist/config/environment.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/ranking-weights-loader.d.ts +37 -0
- package/dist/config/ranking-weights-loader.d.ts.map +1 -0
- package/dist/config/ranking-weights-loader.js +109 -0
- package/dist/config/ranking-weights-loader.js.map +1 -0
- package/dist/constants/relation-constants.d.ts +95 -0
- package/dist/constants/relation-constants.d.ts.map +1 -0
- package/dist/constants/relation-constants.js +95 -0
- package/dist/constants/relation-constants.js.map +1 -0
- package/dist/database/migration/migrations/005-relation-engine-schema.d.ts +65 -0
- package/dist/database/migration/migrations/005-relation-engine-schema.d.ts.map +1 -0
- package/dist/database/migration/migrations/005-relation-engine-schema.js +295 -0
- package/dist/database/migration/migrations/005-relation-engine-schema.js.map +1 -0
- package/dist/database/migration/migrations/005-relation-engine-schema.sql +64 -0
- package/dist/services/anchor/anchor-interfaces.d.ts +1 -0
- package/dist/services/anchor/anchor-interfaces.d.ts.map +1 -1
- package/dist/services/anchor/anchor-interfaces.js.map +1 -1
- package/dist/services/anchor/anchor-search-service.d.ts +16 -0
- package/dist/services/anchor/anchor-search-service.d.ts.map +1 -1
- package/dist/services/anchor/anchor-search-service.js +136 -17
- package/dist/services/anchor/anchor-search-service.js.map +1 -1
- package/dist/services/batch-scheduler.d.ts +11 -0
- package/dist/services/batch-scheduler.d.ts.map +1 -1
- package/dist/services/batch-scheduler.js +99 -0
- package/dist/services/batch-scheduler.js.map +1 -1
- package/dist/services/llm-based-relation-extractor.d.ts +156 -0
- package/dist/services/llm-based-relation-extractor.d.ts.map +1 -0
- package/dist/services/llm-based-relation-extractor.js +1350 -0
- package/dist/services/llm-based-relation-extractor.js.map +1 -0
- package/dist/services/relation-extractor.d.ts +73 -0
- package/dist/services/relation-extractor.d.ts.map +1 -0
- package/dist/services/relation-extractor.js +231 -0
- package/dist/services/relation-extractor.js.map +1 -0
- package/dist/services/relation-graph.d.ts +275 -0
- package/dist/services/relation-graph.d.ts.map +1 -0
- package/dist/services/relation-graph.js +869 -0
- package/dist/services/relation-graph.js.map +1 -0
- package/dist/services/relation-quality-validator.d.ts +211 -0
- package/dist/services/relation-quality-validator.d.ts.map +1 -0
- package/dist/services/relation-quality-validator.js +415 -0
- package/dist/services/relation-quality-validator.js.map +1 -0
- package/dist/services/rule-based-relation-extractor.d.ts +66 -0
- package/dist/services/rule-based-relation-extractor.d.ts.map +1 -0
- package/dist/services/rule-based-relation-extractor.js +258 -0
- package/dist/services/rule-based-relation-extractor.js.map +1 -0
- package/dist/tools/add-relation-tool.d.ts +34 -0
- package/dist/tools/add-relation-tool.d.ts.map +1 -0
- package/dist/tools/add-relation-tool.js +163 -0
- package/dist/tools/add-relation-tool.js.map +1 -0
- package/dist/tools/extract-relations-tool.d.ts +28 -0
- package/dist/tools/extract-relations-tool.d.ts.map +1 -0
- package/dist/tools/extract-relations-tool.js +159 -0
- package/dist/tools/extract-relations-tool.js.map +1 -0
- package/dist/tools/get-relations-tool.d.ts +34 -0
- package/dist/tools/get-relations-tool.d.ts.map +1 -0
- package/dist/tools/get-relations-tool.js +155 -0
- package/dist/tools/get-relations-tool.js.map +1 -0
- package/dist/tools/index.d.ts +6 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +16 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/remember-tool.d.ts +17 -0
- package/dist/tools/remember-tool.d.ts.map +1 -1
- package/dist/tools/remember-tool.js +195 -26
- package/dist/tools/remember-tool.js.map +1 -1
- package/dist/tools/remove-relation-tool.d.ts +45 -0
- package/dist/tools/remove-relation-tool.d.ts.map +1 -0
- package/dist/tools/remove-relation-tool.js +142 -0
- package/dist/tools/remove-relation-tool.js.map +1 -0
- package/dist/tools/search-local-tool.d.ts.map +1 -1
- package/dist/tools/search-local-tool.js +10 -3
- package/dist/tools/search-local-tool.js.map +1 -1
- package/dist/tools/types.d.ts +2 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/visualize-relations-tool.d.ts +46 -0
- package/dist/tools/visualize-relations-tool.d.ts.map +1 -0
- package/dist/tools/visualize-relations-tool.js +157 -0
- package/dist/tools/visualize-relations-tool.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/relation-graph.d.ts +215 -0
- package/dist/types/relation-graph.d.ts.map +1 -0
- package/dist/types/relation-graph.js +6 -0
- package/dist/types/relation-graph.js.map +1 -0
- package/dist/types/relation.d.ts +112 -0
- package/dist/types/relation.d.ts.map +1 -0
- package/dist/types/relation.js +67 -0
- package/dist/types/relation.js.map +1 -0
- package/dist/utils/cache-key-generator.d.ts +63 -0
- package/dist/utils/cache-key-generator.d.ts.map +1 -0
- package/dist/utils/cache-key-generator.js +76 -0
- package/dist/utils/cache-key-generator.js.map +1 -0
- package/dist/utils/database.d.ts.map +1 -1
- package/dist/utils/database.js +37 -17
- package/dist/utils/database.js.map +1 -1
- package/dist/utils/relation-visualizer.d.ts +81 -0
- package/dist/utils/relation-visualizer.d.ts.map +1 -0
- package/dist/utils/relation-visualizer.js +239 -0
- package/dist/utils/relation-visualizer.js.map +1 -0
- package/dist/utils/type-guards.d.ts +100 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +144 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/package.json +7 -2
- package/scripts/generate-relation-report.ts +481 -0
- package/scripts/weekly-relation-validation.ts +423 -0
package/README.en.md
CHANGED
|
@@ -259,11 +259,26 @@ npm run test -- --coverage
|
|
|
259
259
|
- **Error Logging**: Structured error tracking and statistics
|
|
260
260
|
- **Performance Alerts**: Threshold-based automatic alert system
|
|
261
261
|
|
|
262
|
-
###
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
- **
|
|
266
|
-
- **
|
|
262
|
+
### Embedding Provider Performance
|
|
263
|
+
|
|
264
|
+
#### Free Providers (Local Processing)
|
|
265
|
+
- **TF-IDF**: 512 dimensions, extremely fast (0.82ms), low memory usage (4.48MB)
|
|
266
|
+
- **MiniLM**: 384 dimensions, balanced performance, multilingual support
|
|
267
|
+
|
|
268
|
+
#### Paid Providers (Cloud API)
|
|
269
|
+
- **OpenAI**: 1536 dimensions, highest performance, high accuracy
|
|
270
|
+
- **Gemini**: 768 dimensions, high performance, multilingual support
|
|
271
|
+
|
|
272
|
+
**Auto Selection and Priority Order**:
|
|
273
|
+
1. **Explicit Request**: If a specific provider is requested in API call, it takes priority
|
|
274
|
+
2. **Configuration Default**: Uses `EMBEDDING_PROVIDER` value from `.env` file
|
|
275
|
+
3. **Automatic Priority Selection**: Automatically selects available providers in the following order:
|
|
276
|
+
- 1st Priority: **OpenAI** (paid, highest performance)
|
|
277
|
+
- 2nd Priority: **Gemini** (paid, high performance)
|
|
278
|
+
- 3rd Priority: **MiniLM** (free, balanced performance)
|
|
279
|
+
- 4th Priority: **TF-IDF** (free, fast speed)
|
|
280
|
+
|
|
281
|
+
**Fallback Mechanism**: Automatically falls back to the next priority provider if a higher priority provider fails.
|
|
267
282
|
|
|
268
283
|
## 🏗️ Architecture
|
|
269
284
|
|
|
@@ -274,7 +289,7 @@ npm run test -- --coverage
|
|
|
274
289
|
- **Operation**: Local execution
|
|
275
290
|
- **MCP Client**: Only exposes 5 core tools
|
|
276
291
|
- **Management Functions**: Separated into HTTP API
|
|
277
|
-
- **Additional Features**:
|
|
292
|
+
- **Additional Features**: Multiple embedding providers (TF-IDF, MiniLM, OpenAI, Gemini), performance monitoring, cache system
|
|
278
293
|
|
|
279
294
|
### M2: Team Collaboration (Planned)
|
|
280
295
|
- **Storage**: SQLite server mode
|
package/README.md
CHANGED
|
@@ -99,11 +99,17 @@ docker-compose -f docker-compose.prod.yml up -d
|
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
### 🛠️ **소스코드 방식 (개발자용)**
|
|
102
|
+
|
|
103
|
+
> **📦 패키지 매니저**: 이 프로젝트는 **npm**을 사용합니다. `pnpm`이나 `yarn`은 사용하지 않습니다.
|
|
104
|
+
|
|
102
105
|
```bash
|
|
103
106
|
# 저장소 클론
|
|
104
107
|
git clone https://github.com/jee1/memento.git
|
|
105
108
|
cd memento
|
|
106
109
|
|
|
110
|
+
# 의존성 설치 (npm 사용)
|
|
111
|
+
npm install
|
|
112
|
+
|
|
107
113
|
# 원클릭 설치 및 실행
|
|
108
114
|
npm run quick-start
|
|
109
115
|
```
|
|
@@ -397,11 +403,26 @@ npm run test -- --coverage
|
|
|
397
403
|
- **에러 로깅**: 구조화된 에러 추적 및 통계
|
|
398
404
|
- **성능 알림**: 임계값 기반 자동 알림 시스템
|
|
399
405
|
|
|
400
|
-
###
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
-
|
|
404
|
-
-
|
|
406
|
+
### 임베딩 제공자 성능
|
|
407
|
+
|
|
408
|
+
#### 무료 제공자 (로컬 처리)
|
|
409
|
+
- **TF-IDF**: 512차원, 극도로 빠른 속도 (0.82ms), 낮은 메모리 사용량 (4.48MB)
|
|
410
|
+
- **MiniLM**: 384차원, 균형잡힌 성능, 다국어 지원
|
|
411
|
+
|
|
412
|
+
#### 유료 제공자 (클라우드 API)
|
|
413
|
+
- **OpenAI**: 1536차원, 최고 성능, 높은 정확도
|
|
414
|
+
- **Gemini**: 768차원, 고성능, 다국어 지원
|
|
415
|
+
|
|
416
|
+
**자동 선택 및 적용 순서**:
|
|
417
|
+
1. **명시적 요청**: API 호출 시 특정 제공자를 지정하면 해당 제공자를 우선 사용
|
|
418
|
+
2. **설정 기본값**: `.env`의 `EMBEDDING_PROVIDER` 설정값 사용
|
|
419
|
+
3. **우선순위 자동 선택**: 사용 가능한 제공자를 다음 순서로 자동 선택
|
|
420
|
+
- 1순위: **OpenAI** (유료, 최고 성능)
|
|
421
|
+
- 2순위: **Gemini** (유료, 고성능)
|
|
422
|
+
- 3순위: **MiniLM** (무료, 균형잡힌 성능)
|
|
423
|
+
- 4순위: **TF-IDF** (무료, 빠른 속도)
|
|
424
|
+
|
|
425
|
+
**폴백 메커니즘**: 상위 제공자 실패 시 자동으로 다음 우선순위 제공자로 전환됩니다.
|
|
405
426
|
|
|
406
427
|
## 🏗️ 아키텍처
|
|
407
428
|
|
|
@@ -412,7 +433,7 @@ npm run test -- --coverage
|
|
|
412
433
|
- **운영**: 로컬 실행
|
|
413
434
|
- **MCP 클라이언트**: 핵심 5개 도구만 노출
|
|
414
435
|
- **관리 기능**: HTTP API로 분리
|
|
415
|
-
- **추가 기능**:
|
|
436
|
+
- **추가 기능**: 다중 임베딩 제공자(TF-IDF, MiniLM, OpenAI, Gemini), 성능 모니터링, 캐시 시스템
|
|
416
437
|
|
|
417
438
|
### M2: 팀 협업 (계획)
|
|
418
439
|
- **스토리지**: SQLite 서버 모드
|
|
@@ -433,7 +454,17 @@ A: MCP(Model Context Protocol)를 지원하는 모든 AI Agent와 호환됩니
|
|
|
433
454
|
A: 기본적으로 로컬 SQLite 데이터베이스(`./data/memory.db`)에 저장됩니다. Docker를 사용하는 경우 컨테이너 내부에 저장됩니다.
|
|
434
455
|
|
|
435
456
|
### Q: OpenAI API 키가 필요한가요?
|
|
436
|
-
A: 선택사항입니다. OpenAI API 키가 없어도 TF-IDF 기반
|
|
457
|
+
A: 선택사항입니다. OpenAI API 키가 없어도 **TF-IDF** 또는 **MiniLM** 기반 임베딩으로 동작합니다.
|
|
458
|
+
|
|
459
|
+
**제공자별 특징**:
|
|
460
|
+
- **OpenAI** (1순위): 최고 성능, 1536차원, 유료, 클라우드 API
|
|
461
|
+
- **Gemini** (2순위): 고성능, 768차원, 유료, 클라우드 API
|
|
462
|
+
- **MiniLM** (3순위): 균형잡힌 성능, 384차원, 완전 무료, 로컬 처리
|
|
463
|
+
- **TF-IDF** (4순위): 빠른 속도, 512차원, 완전 무료, 로컬 처리
|
|
464
|
+
|
|
465
|
+
**적용 순서**: API 키가 설정되어 있으면 우선순위에 따라 자동 선택되며, 상위 제공자 실패 시 자동으로 다음 제공자로 전환됩니다.
|
|
466
|
+
|
|
467
|
+
더 정확한 검색을 원한다면 OpenAI 또는 Gemini API 키를 설정하세요.
|
|
437
468
|
|
|
438
469
|
### Q: 기억 용량에 제한이 있나요?
|
|
439
470
|
A: SQLite 데이터베이스의 제한에 따라 달라집니다. 일반적으로 수백만 개의 기억을 저장할 수 있습니다.
|
|
@@ -6,6 +6,7 @@ import { type VectorSearchResult } from '../services/memory-embedding-service.js
|
|
|
6
6
|
import { UnifiedEmbeddingService } from '../services/unified-embedding-service.js';
|
|
7
7
|
import type { MemorySearchFilters, MemoryType } from '../types/index.js';
|
|
8
8
|
import Database from 'better-sqlite3';
|
|
9
|
+
import { RelationGraph } from '../services/relation-graph.js';
|
|
9
10
|
export interface ITextSearchEngine {
|
|
10
11
|
search(db: Database.Database, query: {
|
|
11
12
|
query: string;
|
|
@@ -62,6 +63,7 @@ export interface ISearchLogger {
|
|
|
62
63
|
total_count: number;
|
|
63
64
|
}, queryTime: number): void;
|
|
64
65
|
logSearchError(searchId: string, error: unknown, query: HybridSearchQuery): void;
|
|
66
|
+
logExperiment?(searchId: string, experimentId: string, variant: Record<string, any>): void;
|
|
65
67
|
}
|
|
66
68
|
export declare enum SearchErrorType {
|
|
67
69
|
EMBEDDING_GENERATION_FAILED = "EMBEDDING_GENERATION_FAILED",
|
|
@@ -99,6 +101,11 @@ export declare class SearchLogger implements ISearchLogger {
|
|
|
99
101
|
total_count: number;
|
|
100
102
|
}, queryTime: number): void;
|
|
101
103
|
logSearchError(searchId: string, error: unknown, query: HybridSearchQuery): void;
|
|
104
|
+
/**
|
|
105
|
+
* 실험 로그 기록
|
|
106
|
+
* A/B 테스트를 위한 실험 ID와 변이 파라미터를 로깅합니다.
|
|
107
|
+
*/
|
|
108
|
+
logExperiment(searchId: string, experimentId: string, variant: Record<string, any>): void;
|
|
102
109
|
}
|
|
103
110
|
export interface HybridSearchQuery {
|
|
104
111
|
query: string;
|
|
@@ -106,6 +113,8 @@ export interface HybridSearchQuery {
|
|
|
106
113
|
limit?: number | undefined;
|
|
107
114
|
vectorWeight?: number | undefined;
|
|
108
115
|
textWeight?: number | undefined;
|
|
116
|
+
includeRelations?: boolean;
|
|
117
|
+
experiment_id?: string;
|
|
109
118
|
}
|
|
110
119
|
export interface HybridSearchResult {
|
|
111
120
|
id: string;
|
|
@@ -121,6 +130,12 @@ export interface HybridSearchResult {
|
|
|
121
130
|
finalScore: number;
|
|
122
131
|
recall_reason: string;
|
|
123
132
|
consolidation_score?: number;
|
|
133
|
+
relation_weight?: number;
|
|
134
|
+
relations?: Array<{
|
|
135
|
+
target_id: string;
|
|
136
|
+
relation_type: string;
|
|
137
|
+
confidence: number;
|
|
138
|
+
}>;
|
|
124
139
|
}
|
|
125
140
|
export declare class HybridSearchEngine {
|
|
126
141
|
private textSearchEngine;
|
|
@@ -134,7 +149,12 @@ export declare class HybridSearchEngine {
|
|
|
134
149
|
private readonly defaultTextWeight;
|
|
135
150
|
private searchStats;
|
|
136
151
|
private ranking;
|
|
137
|
-
|
|
152
|
+
private relationGraph;
|
|
153
|
+
constructor(textSearchEngine: ITextSearchEngine, embeddingService: IEmbeddingService, vectorSearchEngine: IVectorSearchEngine, resultCombiner: ISearchResultCombiner, weightCalculator: IAdaptiveWeightCalculator, logger: ISearchLogger, queryEmbeddingService?: UnifiedEmbeddingService, relationGraph?: RelationGraph);
|
|
154
|
+
/**
|
|
155
|
+
* RelationGraph 설정 (선택적)
|
|
156
|
+
*/
|
|
157
|
+
setRelationGraph(relationGraph: RelationGraph): void;
|
|
138
158
|
/**
|
|
139
159
|
* 하이브리드 검색 실행 - 적응형 가중치 적용
|
|
140
160
|
*/
|
|
@@ -160,6 +180,19 @@ export declare class HybridSearchEngine {
|
|
|
160
180
|
* 데이터베이스에서 consolidation_score 조회
|
|
161
181
|
*/
|
|
162
182
|
private fetchConsolidationScores;
|
|
183
|
+
/**
|
|
184
|
+
* 관계 가중치 계산 및 조회
|
|
185
|
+
* 관계 정보도 함께 반환 (선택적)
|
|
186
|
+
*/
|
|
187
|
+
private fetchRelationWeights;
|
|
188
|
+
/**
|
|
189
|
+
* 최근성 점수 계산 (간단한 구현)
|
|
190
|
+
*/
|
|
191
|
+
private calculateRecency;
|
|
192
|
+
/**
|
|
193
|
+
* 사용성 점수 계산 (간단한 구현)
|
|
194
|
+
*/
|
|
195
|
+
private calculateUsage;
|
|
163
196
|
private calculateQueryTime;
|
|
164
197
|
/**
|
|
165
198
|
* 검색 통계 업데이트
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid-search-engine.d.ts","sourceRoot":"","sources":["../../src/algorithms/hybrid-search-engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAEnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"hybrid-search-engine.d.ts","sourceRoot":"","sources":["../../src/algorithms/hybrid-search-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ import { getVectorSearchEngine } from './vector-search-engine.js';
|
|
|
9
9
|
import Database from 'better-sqlite3';
|
|
10
10
|
import { SearchRanking } from './search-ranking.js';
|
|
11
11
|
import { mementoConfig } from '../config/index.js';
|
|
12
|
+
import { RelationGraph } from '../services/relation-graph.js';
|
|
13
|
+
import { getRankingWeights } from '../config/ranking-weights-loader.js';
|
|
12
14
|
// 에러 타입 정의
|
|
13
15
|
export var SearchErrorType;
|
|
14
16
|
(function (SearchErrorType) {
|
|
@@ -152,7 +154,8 @@ export class SearchLogger {
|
|
|
152
154
|
// limit: query.limit,
|
|
153
155
|
// vectorWeight: query.vectorWeight,
|
|
154
156
|
// textWeight: query.textWeight,
|
|
155
|
-
// filters: query.filters
|
|
157
|
+
// filters: query.filters,
|
|
158
|
+
// experiment_id: query.experiment_id
|
|
156
159
|
// });
|
|
157
160
|
}
|
|
158
161
|
logSearchStep(searchId, step, data) {
|
|
@@ -163,7 +166,8 @@ export class SearchLogger {
|
|
|
163
166
|
// resultCount: result.items.length,
|
|
164
167
|
// totalCount: result.total_count,
|
|
165
168
|
// queryTime: `${queryTime.toFixed(2)}ms`,
|
|
166
|
-
// searchType: 'hybrid'
|
|
169
|
+
// searchType: 'hybrid',
|
|
170
|
+
// experiment_id: (result as any).experiment_id
|
|
167
171
|
// });
|
|
168
172
|
}
|
|
169
173
|
logSearchError(searchId, error, query) {
|
|
@@ -171,7 +175,19 @@ export class SearchLogger {
|
|
|
171
175
|
// error: error instanceof Error ? error.message : String(error),
|
|
172
176
|
// stack: error instanceof Error ? error.stack : undefined,
|
|
173
177
|
// query: query.query,
|
|
174
|
-
// limit: query.limit
|
|
178
|
+
// limit: query.limit,
|
|
179
|
+
// experiment_id: query.experiment_id
|
|
180
|
+
// });
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 실험 로그 기록
|
|
184
|
+
* A/B 테스트를 위한 실험 ID와 변이 파라미터를 로깅합니다.
|
|
185
|
+
*/
|
|
186
|
+
logExperiment(searchId, experimentId, variant) {
|
|
187
|
+
// console.log(`🧪 [${searchId}] 실험 로그`, {
|
|
188
|
+
// experiment_id: experimentId,
|
|
189
|
+
// variant,
|
|
190
|
+
// timestamp: new Date().toISOString()
|
|
175
191
|
// });
|
|
176
192
|
}
|
|
177
193
|
}
|
|
@@ -187,7 +203,8 @@ export class HybridSearchEngine {
|
|
|
187
203
|
defaultTextWeight = 0.4; // 텍스트 검색 40%
|
|
188
204
|
searchStats = new Map();
|
|
189
205
|
ranking;
|
|
190
|
-
|
|
206
|
+
relationGraph = null;
|
|
207
|
+
constructor(textSearchEngine, embeddingService, vectorSearchEngine, resultCombiner, weightCalculator, logger, queryEmbeddingService = new UnifiedEmbeddingService(), relationGraph) {
|
|
191
208
|
this.textSearchEngine = textSearchEngine;
|
|
192
209
|
this.embeddingService = embeddingService;
|
|
193
210
|
this.vectorSearchEngine = vectorSearchEngine;
|
|
@@ -195,7 +212,23 @@ export class HybridSearchEngine {
|
|
|
195
212
|
this.weightCalculator = weightCalculator;
|
|
196
213
|
this.logger = logger;
|
|
197
214
|
this.queryEmbeddingService = queryEmbeddingService;
|
|
198
|
-
|
|
215
|
+
// TOML 설정에서 가중치 로드
|
|
216
|
+
const config = getRankingWeights();
|
|
217
|
+
this.ranking = new SearchRanking({
|
|
218
|
+
relevance: config.ranking_weights.alpha,
|
|
219
|
+
recency: config.ranking_weights.beta,
|
|
220
|
+
importance: config.ranking_weights.gamma,
|
|
221
|
+
usage: config.ranking_weights.delta,
|
|
222
|
+
relation_weight: config.ranking_weights.zeta,
|
|
223
|
+
duplication_penalty: config.ranking_weights.epsilon
|
|
224
|
+
});
|
|
225
|
+
this.relationGraph = relationGraph || null;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* RelationGraph 설정 (선택적)
|
|
229
|
+
*/
|
|
230
|
+
setRelationGraph(relationGraph) {
|
|
231
|
+
this.relationGraph = relationGraph;
|
|
199
232
|
}
|
|
200
233
|
/**
|
|
201
234
|
* 하이브리드 검색 실행 - 적응형 가중치 적용
|
|
@@ -208,19 +241,55 @@ export class HybridSearchEngine {
|
|
|
208
241
|
// 1. 적응형 가중치 계산
|
|
209
242
|
const weights = this.calculateAdaptiveWeights(query);
|
|
210
243
|
this.logger.logSearchStep(searchId, '적응형 가중치 계산 완료', weights);
|
|
244
|
+
// 실험 로그 (experiment_id가 있는 경우)
|
|
245
|
+
if (query.experiment_id) {
|
|
246
|
+
const config = getRankingWeights();
|
|
247
|
+
const variant = {
|
|
248
|
+
ranking_weights: {
|
|
249
|
+
alpha: config.ranking_weights.alpha,
|
|
250
|
+
beta: config.ranking_weights.beta,
|
|
251
|
+
gamma: config.ranking_weights.gamma,
|
|
252
|
+
delta: config.ranking_weights.delta,
|
|
253
|
+
zeta: config.ranking_weights.zeta,
|
|
254
|
+
epsilon: config.ranking_weights.epsilon
|
|
255
|
+
},
|
|
256
|
+
adaptive_weights: {
|
|
257
|
+
vectorWeight: weights.vectorWeight,
|
|
258
|
+
textWeight: weights.textWeight
|
|
259
|
+
},
|
|
260
|
+
relation_weights: {
|
|
261
|
+
max_relations: config.relation_weights.max_relations
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
if (this.logger.logExperiment) {
|
|
265
|
+
this.logger.logExperiment(searchId, query.experiment_id, variant);
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
// logExperiment가 없으면 logSearchStep으로 대체
|
|
269
|
+
this.logger.logSearchStep(searchId, '실험 파라미터', {
|
|
270
|
+
experiment_id: query.experiment_id,
|
|
271
|
+
variant
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
211
275
|
// 2. 텍스트 검색 실행
|
|
212
276
|
const textResults = await this.executeTextSearch(db, query, searchId);
|
|
213
277
|
// 3. 벡터 검색 실행
|
|
214
278
|
const vectorResults = await this.executeVectorSearch(db, query, searchId);
|
|
215
|
-
// 4. 결과 결합 및 정렬 (데이터베이스 전달하여 consolidation_score 조회)
|
|
216
|
-
const finalResults = this.combineAndSortResults(textResults, vectorResults, weights, query.limit || 10, db);
|
|
279
|
+
// 4. 결과 결합 및 정렬 (데이터베이스 전달하여 consolidation_score 및 관계 가중치 조회)
|
|
280
|
+
const finalResults = await this.combineAndSortResults(textResults, vectorResults, weights, query.limit || 10, db, query.includeRelations || false);
|
|
217
281
|
// 5. 통계 업데이트 및 결과 반환
|
|
218
282
|
this.updateSearchStats(query.query, textResults.length, vectorResults.length);
|
|
219
283
|
const queryTime = this.calculateQueryTime(startTime);
|
|
220
|
-
|
|
284
|
+
// 검색 완료 로그에 실험 ID 포함
|
|
285
|
+
const logData = {
|
|
221
286
|
items: finalResults,
|
|
222
287
|
total_count: finalResults.length
|
|
223
|
-
}
|
|
288
|
+
};
|
|
289
|
+
if (query.experiment_id) {
|
|
290
|
+
logData.experiment_id = query.experiment_id;
|
|
291
|
+
}
|
|
292
|
+
this.logger.logSearchComplete(searchId, logData, queryTime);
|
|
224
293
|
return {
|
|
225
294
|
items: finalResults,
|
|
226
295
|
total_count: finalResults.length,
|
|
@@ -403,23 +472,59 @@ export class HybridSearchEngine {
|
|
|
403
472
|
throw new SearchError(SearchErrorType.EMBEDDING_GENERATION_FAILED, '임베딩 생성 중 오류가 발생했습니다', error instanceof Error ? error : new Error(String(error)), { query, searchId });
|
|
404
473
|
}
|
|
405
474
|
}
|
|
406
|
-
combineAndSortResults(textResults, vectorResults, weights, limit, db) {
|
|
475
|
+
async combineAndSortResults(textResults, vectorResults, weights, limit, db, includeRelations = false) {
|
|
407
476
|
try {
|
|
408
477
|
const combinedResults = this.resultCombiner.combine(textResults, vectorResults, weights.textWeight, weights.vectorWeight);
|
|
409
|
-
//
|
|
410
|
-
if (
|
|
411
|
-
// 데이터베이스에서 consolidation_score 조회 및 finalScore 재계산
|
|
478
|
+
// 관계 가중치 및 Consolidation Score 계산
|
|
479
|
+
if (db) {
|
|
412
480
|
const memoryIds = combinedResults.map(r => r.id);
|
|
413
481
|
if (memoryIds.length > 0) {
|
|
414
|
-
|
|
482
|
+
// 관계 가중치 및 관계 정보 계산
|
|
483
|
+
const relationData = await this.fetchRelationWeights(db, memoryIds);
|
|
484
|
+
const relationWeights = relationData.weights;
|
|
485
|
+
const relationInfo = relationData.relations;
|
|
486
|
+
// Consolidation Score 조회 (활성화된 경우)
|
|
487
|
+
let consolidationScores = new Map();
|
|
488
|
+
if (mementoConfig.consolidationScoreEnabled) {
|
|
489
|
+
consolidationScores = this.fetchConsolidationScores(db, memoryIds);
|
|
490
|
+
}
|
|
491
|
+
// 각 결과에 대해 finalScore 재계산
|
|
415
492
|
combinedResults.forEach(result => {
|
|
493
|
+
const relationWeight = relationWeights.get(result.id);
|
|
494
|
+
// relationGraph가 있고 관계가 있는 경우에만 relation_weight 설정
|
|
495
|
+
if (relationWeight !== undefined && relationWeight > 0) {
|
|
496
|
+
result.relation_weight = relationWeight;
|
|
497
|
+
}
|
|
498
|
+
// 관계 정보 포함 (선택적, includeRelations 옵션이 true인 경우만)
|
|
499
|
+
if (includeRelations) {
|
|
500
|
+
const relations = relationInfo.get(result.id);
|
|
501
|
+
if (relations && relations.length > 0) {
|
|
502
|
+
result.relations = relations.map(r => ({
|
|
503
|
+
target_id: r.target_id,
|
|
504
|
+
relation_type: r.relation_type,
|
|
505
|
+
confidence: r.confidence
|
|
506
|
+
}));
|
|
507
|
+
}
|
|
508
|
+
}
|
|
416
509
|
const consolidationScore = consolidationScores.get(result.id);
|
|
417
510
|
if (consolidationScore !== undefined) {
|
|
511
|
+
// Consolidation Score가 있으면 기존 로직 사용
|
|
418
512
|
result.consolidation_score = consolidationScore;
|
|
419
|
-
// 벡터 유사도는 vectorScore로 간주
|
|
420
513
|
const vectorSimilarity = result.vectorScore;
|
|
421
|
-
result.finalScore = this.ranking.calculateFinalScoreWithConsolidation(vectorSimilarity, consolidationScore, 'balanced'
|
|
422
|
-
|
|
514
|
+
result.finalScore = this.ranking.calculateFinalScoreWithConsolidation(vectorSimilarity, consolidationScore, 'balanced');
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
// 관계 가중치를 포함한 finalScore 재계산
|
|
518
|
+
// SearchFeatures 구성
|
|
519
|
+
const features = {
|
|
520
|
+
relevance: result.vectorScore || result.textScore || 0,
|
|
521
|
+
recency: this.calculateRecency(result.created_at),
|
|
522
|
+
importance: result.importance || 0.5,
|
|
523
|
+
usage: this.calculateUsage(result.last_accessed),
|
|
524
|
+
relation_weight: relationWeight || 0, // relationWeight가 undefined면 0 사용
|
|
525
|
+
duplication_penalty: 0 // 중복 패널티는 이미 결과 결합 시 처리됨
|
|
526
|
+
};
|
|
527
|
+
result.finalScore = this.ranking.calculateFinalScore(features);
|
|
423
528
|
}
|
|
424
529
|
});
|
|
425
530
|
}
|
|
@@ -456,6 +561,70 @@ export class HybridSearchEngine {
|
|
|
456
561
|
}
|
|
457
562
|
return scores;
|
|
458
563
|
}
|
|
564
|
+
/**
|
|
565
|
+
* 관계 가중치 계산 및 조회
|
|
566
|
+
* 관계 정보도 함께 반환 (선택적)
|
|
567
|
+
*/
|
|
568
|
+
async fetchRelationWeights(db, memoryIds) {
|
|
569
|
+
const weights = new Map();
|
|
570
|
+
const relations = new Map();
|
|
571
|
+
if (memoryIds.length === 0 || !this.relationGraph) {
|
|
572
|
+
return { weights, relations };
|
|
573
|
+
}
|
|
574
|
+
try {
|
|
575
|
+
const config = getRankingWeights();
|
|
576
|
+
const maxRelations = config.relation_weights.max_relations;
|
|
577
|
+
// 각 메모리에 대해 관계 조회 및 가중치 계산
|
|
578
|
+
for (const memoryId of memoryIds) {
|
|
579
|
+
const memoryRelations = await this.relationGraph.getRelations(memoryId, {
|
|
580
|
+
direction: 'both',
|
|
581
|
+
minConfidence: 0.5 // 최소 신뢰도 필터
|
|
582
|
+
});
|
|
583
|
+
if (memoryRelations.length > 0) {
|
|
584
|
+
// 관계 가중치 계산
|
|
585
|
+
const relationData = memoryRelations.map(r => ({
|
|
586
|
+
confidence: r.confidence,
|
|
587
|
+
relation_type: r.relation_type
|
|
588
|
+
}));
|
|
589
|
+
const relationWeight = this.ranking.calculateRelationWeight(relationData, maxRelations);
|
|
590
|
+
weights.set(memoryId, relationWeight);
|
|
591
|
+
// 관계 정보 저장 (간단한 형태로 변환)
|
|
592
|
+
const simplifiedRelations = memoryRelations.map(r => ({
|
|
593
|
+
target_id: r.source_id === memoryId ? r.target_id : r.source_id,
|
|
594
|
+
relation_type: r.relation_type,
|
|
595
|
+
confidence: r.confidence
|
|
596
|
+
}));
|
|
597
|
+
relations.set(memoryId, simplifiedRelations);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
catch (error) {
|
|
602
|
+
// 에러 발생 시 빈 Map 반환 (관계 가중치 없이 진행)
|
|
603
|
+
console.warn('⚠️ 관계 가중치 계산 실패:', error);
|
|
604
|
+
}
|
|
605
|
+
return { weights, relations };
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* 최근성 점수 계산 (간단한 구현)
|
|
609
|
+
*/
|
|
610
|
+
calculateRecency(createdAt) {
|
|
611
|
+
if (!createdAt)
|
|
612
|
+
return 0.5;
|
|
613
|
+
const created = typeof createdAt === 'string' ? new Date(createdAt) : createdAt;
|
|
614
|
+
const ageDays = (Date.now() - created.getTime()) / (1000 * 60 * 60 * 24);
|
|
615
|
+
// 30일 반감기
|
|
616
|
+
return Math.exp(-Math.log(2) * ageDays / 30);
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* 사용성 점수 계산 (간단한 구현)
|
|
620
|
+
*/
|
|
621
|
+
calculateUsage(lastAccessed) {
|
|
622
|
+
if (!lastAccessed)
|
|
623
|
+
return 0.1;
|
|
624
|
+
const accessed = typeof lastAccessed === 'string' ? new Date(lastAccessed) : lastAccessed;
|
|
625
|
+
const daysSinceAccess = (Date.now() - accessed.getTime()) / (1000 * 60 * 60 * 24);
|
|
626
|
+
return Math.exp(-daysSinceAccess / 30);
|
|
627
|
+
}
|
|
459
628
|
calculateQueryTime(startTime) {
|
|
460
629
|
const endTime = process.hrtime.bigint();
|
|
461
630
|
return Number(endTime - startTime) / 1_000_000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid-search-engine.js","sourceRoot":"","sources":["../../src/algorithms/hybrid-search-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hybrid-search-engine.js","sourceRoot":"","sources":["../../src/algorithms/hybrid-search-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export interface SearchFeatures {
|
|
|
9
9
|
usage: number;
|
|
10
10
|
duplication_penalty: number;
|
|
11
11
|
consolidation_score?: number;
|
|
12
|
+
relation_weight?: number;
|
|
12
13
|
}
|
|
13
14
|
export interface EmbeddingSimilarity {
|
|
14
15
|
queryEmbedding: number[];
|
|
@@ -37,6 +38,7 @@ export interface SearchRankingWeights {
|
|
|
37
38
|
recency: number;
|
|
38
39
|
importance: number;
|
|
39
40
|
usage: number;
|
|
41
|
+
relation_weight: number;
|
|
40
42
|
duplication_penalty: number;
|
|
41
43
|
consolidation_score?: number;
|
|
42
44
|
}
|
|
@@ -56,7 +58,7 @@ export declare class SearchRanking {
|
|
|
56
58
|
constructor(weights?: Partial<SearchRankingWeights>);
|
|
57
59
|
/**
|
|
58
60
|
* 최종 검색 점수 계산
|
|
59
|
-
* S = α * relevance + β * recency + γ * importance + δ * usage - ε * duplication_penalty
|
|
61
|
+
* S = α * relevance + β * recency + γ * importance + δ * usage + ζ * relation_weight - ε * duplication_penalty
|
|
60
62
|
*
|
|
61
63
|
* Consolidation Score가 제공되면:
|
|
62
64
|
* Final_Score = w1 * vector_similarity + w2 * consolidation_score
|
|
@@ -154,6 +156,18 @@ export declare class SearchRanking {
|
|
|
154
156
|
* 텍스트 유사도 계산 (자카드 유사도)
|
|
155
157
|
*/
|
|
156
158
|
private calculateTextSimilarity;
|
|
159
|
+
/**
|
|
160
|
+
* 관계 가중치 계산
|
|
161
|
+
* 여러 관계의 confidence와 type_boost를 정규화하여 계산합니다.
|
|
162
|
+
*
|
|
163
|
+
* @param relations 관계 목록 (confidence와 relation_type 포함)
|
|
164
|
+
* @param maxRelations 정규화를 위한 최대 관계 수 (기본값: 5)
|
|
165
|
+
* @returns 정규화된 관계 가중치 (0-1)
|
|
166
|
+
*/
|
|
167
|
+
calculateRelationWeight(relations: Array<{
|
|
168
|
+
confidence: number;
|
|
169
|
+
relation_type: string;
|
|
170
|
+
}>, maxRelations?: number): number;
|
|
157
171
|
/**
|
|
158
172
|
* 하위 호환성을 위한 간단한 관련성 계산 (기존 API)
|
|
159
173
|
*/
|