a2a-memory 0.9.1 → 0.10.1

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 (142) hide show
  1. package/README.md +134 -52
  2. package/dist/cli/commands/add.d.ts.map +1 -1
  3. package/dist/cli/commands/add.js +1 -0
  4. package/dist/cli/commands/add.js.map +1 -1
  5. package/dist/cli/commands/claude-sync.d.ts.map +1 -1
  6. package/dist/cli/commands/claude-sync.js +1 -0
  7. package/dist/cli/commands/claude-sync.js.map +1 -1
  8. package/dist/cli/commands/cleanup.d.ts.map +1 -1
  9. package/dist/cli/commands/cleanup.js +1 -0
  10. package/dist/cli/commands/cleanup.js.map +1 -1
  11. package/dist/cli/commands/config.d.ts.map +1 -1
  12. package/dist/cli/commands/config.js +2 -0
  13. package/dist/cli/commands/config.js.map +1 -1
  14. package/dist/cli/commands/edit.d.ts.map +1 -1
  15. package/dist/cli/commands/edit.js +3 -0
  16. package/dist/cli/commands/edit.js.map +1 -1
  17. package/dist/cli/commands/embed.d.ts.map +1 -1
  18. package/dist/cli/commands/embed.js +1 -0
  19. package/dist/cli/commands/embed.js.map +1 -1
  20. package/dist/cli/commands/proficiency.d.ts.map +1 -1
  21. package/dist/cli/commands/proficiency.js +4 -0
  22. package/dist/cli/commands/proficiency.js.map +1 -1
  23. package/dist/cli/commands/rm.d.ts.map +1 -1
  24. package/dist/cli/commands/rm.js +4 -0
  25. package/dist/cli/commands/rm.js.map +1 -1
  26. package/dist/cli/commands/search.d.ts.map +1 -1
  27. package/dist/cli/commands/search.js +52 -8
  28. package/dist/cli/commands/search.js.map +1 -1
  29. package/dist/cli/commands/setup.js +24 -0
  30. package/dist/cli/commands/setup.js.map +1 -1
  31. package/dist/cli/commands/skill.d.ts.map +1 -1
  32. package/dist/cli/commands/skill.js +16 -1
  33. package/dist/cli/commands/skill.js.map +1 -1
  34. package/dist/cli/commands/sync.d.ts.map +1 -1
  35. package/dist/cli/commands/sync.js +3 -0
  36. package/dist/cli/commands/sync.js.map +1 -1
  37. package/dist/config/manager.d.ts +67 -13
  38. package/dist/config/manager.d.ts.map +1 -1
  39. package/dist/config/manager.js +20 -5
  40. package/dist/config/manager.js.map +1 -1
  41. package/dist/db/database.d.ts +5 -0
  42. package/dist/db/database.d.ts.map +1 -1
  43. package/dist/db/database.js +47 -24
  44. package/dist/db/database.js.map +1 -1
  45. package/dist/embedding/e5-provider.d.ts +41 -0
  46. package/dist/embedding/e5-provider.d.ts.map +1 -0
  47. package/dist/embedding/e5-provider.js +147 -0
  48. package/dist/embedding/e5-provider.js.map +1 -0
  49. package/dist/embedding/index.d.ts +1 -0
  50. package/dist/embedding/index.d.ts.map +1 -1
  51. package/dist/embedding/index.js +5 -0
  52. package/dist/embedding/index.js.map +1 -1
  53. package/dist/extraction/dedup-manager.d.ts +40 -0
  54. package/dist/extraction/dedup-manager.d.ts.map +1 -0
  55. package/dist/extraction/dedup-manager.js +148 -0
  56. package/dist/extraction/dedup-manager.js.map +1 -0
  57. package/dist/extraction/extractor.d.ts.map +1 -1
  58. package/dist/extraction/extractor.js +23 -6
  59. package/dist/extraction/extractor.js.map +1 -1
  60. package/dist/extraction/filter.d.ts.map +1 -1
  61. package/dist/extraction/filter.js +3 -0
  62. package/dist/extraction/filter.js.map +1 -1
  63. package/dist/extraction/scorer.js +23 -12
  64. package/dist/extraction/scorer.js.map +1 -1
  65. package/dist/hooks/client-factory.d.ts +14 -0
  66. package/dist/hooks/client-factory.d.ts.map +1 -0
  67. package/dist/hooks/client-factory.js +22 -0
  68. package/dist/hooks/client-factory.js.map +1 -0
  69. package/dist/hooks/post-tool-use.d.ts.map +1 -1
  70. package/dist/hooks/post-tool-use.js +101 -22
  71. package/dist/hooks/post-tool-use.js.map +1 -1
  72. package/dist/hooks/pre-compact.d.ts +15 -0
  73. package/dist/hooks/pre-compact.d.ts.map +1 -0
  74. package/dist/hooks/pre-compact.js +209 -0
  75. package/dist/hooks/pre-compact.js.map +1 -0
  76. package/dist/hooks/session-end.d.ts.map +1 -1
  77. package/dist/hooks/session-end.js +56 -46
  78. package/dist/hooks/session-end.js.map +1 -1
  79. package/dist/hooks/session-start.d.ts.map +1 -1
  80. package/dist/hooks/session-start.js +205 -138
  81. package/dist/hooks/session-start.js.map +1 -1
  82. package/dist/hooks/shared.d.ts +1 -0
  83. package/dist/hooks/shared.d.ts.map +1 -1
  84. package/dist/hooks/shared.js +35 -0
  85. package/dist/hooks/shared.js.map +1 -1
  86. package/dist/hooks/user-prompt-submit.d.ts +15 -0
  87. package/dist/hooks/user-prompt-submit.d.ts.map +1 -0
  88. package/dist/hooks/user-prompt-submit.js +240 -0
  89. package/dist/hooks/user-prompt-submit.js.map +1 -0
  90. package/dist/index.d.ts +11 -3
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +8 -2
  93. package/dist/index.js.map +1 -1
  94. package/dist/lifecycle/quality-scorer.d.ts +2 -2
  95. package/dist/lifecycle/quality-scorer.d.ts.map +1 -1
  96. package/dist/lifecycle/quality-scorer.js +13 -7
  97. package/dist/lifecycle/quality-scorer.js.map +1 -1
  98. package/dist/lifecycle/tiering.d.ts.map +1 -1
  99. package/dist/lifecycle/tiering.js +11 -1
  100. package/dist/lifecycle/tiering.js.map +1 -1
  101. package/dist/proficiency/detection.d.ts +2 -4
  102. package/dist/proficiency/detection.d.ts.map +1 -1
  103. package/dist/proficiency/detection.js +11 -15
  104. package/dist/proficiency/detection.js.map +1 -1
  105. package/dist/proficiency/tracker.d.ts +2 -2
  106. package/dist/proficiency/tracker.d.ts.map +1 -1
  107. package/dist/proficiency/tracker.js +10 -7
  108. package/dist/proficiency/tracker.js.map +1 -1
  109. package/dist/search/adaptive-router.d.ts +28 -0
  110. package/dist/search/adaptive-router.d.ts.map +1 -0
  111. package/dist/search/adaptive-router.js +93 -0
  112. package/dist/search/adaptive-router.js.map +1 -0
  113. package/dist/search/ranker.d.ts +4 -0
  114. package/dist/search/ranker.d.ts.map +1 -1
  115. package/dist/search/ranker.js +4 -0
  116. package/dist/search/ranker.js.map +1 -1
  117. package/dist/search/reranker.d.ts +48 -0
  118. package/dist/search/reranker.d.ts.map +1 -0
  119. package/dist/search/reranker.js +155 -0
  120. package/dist/search/reranker.js.map +1 -0
  121. package/dist/skill/evaluator.d.ts +7 -9
  122. package/dist/skill/evaluator.d.ts.map +1 -1
  123. package/dist/skill/evaluator.js +122 -33
  124. package/dist/skill/evaluator.js.map +1 -1
  125. package/dist/skill/types.d.ts +5 -0
  126. package/dist/skill/types.d.ts.map +1 -1
  127. package/dist/sync/client.d.ts +26 -1
  128. package/dist/sync/client.d.ts.map +1 -1
  129. package/dist/sync/client.js +81 -28
  130. package/dist/sync/client.js.map +1 -1
  131. package/dist/sync/queue.d.ts +1 -1
  132. package/dist/sync/queue.d.ts.map +1 -1
  133. package/dist/sync/queue.js +20 -28
  134. package/dist/sync/queue.js.map +1 -1
  135. package/dist/sync/synchronizer.js +1 -1
  136. package/dist/sync/synchronizer.js.map +1 -1
  137. package/dist/sync/team-synchronizer.js.map +1 -1
  138. package/dist/types/index.d.ts +19 -2
  139. package/dist/types/index.d.ts.map +1 -1
  140. package/dist/types/index.js +11 -3
  141. package/dist/types/index.js.map +1 -1
  142. package/package.json +1 -1
@@ -6,7 +6,7 @@
6
6
  * 레벨 공식 (Hybrid):
7
7
  * countScore = log2(1 + N) / log2(151) // Power Law of Practice
8
8
  * successScore = 0.3 + successRate * 0.7 // 성공률 반영
9
- * recencyFactor = exp(-daysSince * 0.02) // ACT-R Forgetting Curve
9
+ * recencyFactor = exp(-daysSince * 0.007) // ACT-R Forgetting Curve (완화: 30일→0.81)
10
10
  * difficultyBonus = avgDifficulty * 0.1 // 난이도 보상
11
11
  * level = ceil(clamp(countScore * successScore * recencyFactor + difficultyBonus, 0, 1) * maxLevel)
12
12
  *
@@ -81,10 +81,10 @@ export class ProficiencyTracker {
81
81
  }));
82
82
  const recentTags = events.slice(0, 5).flatMap((e) => e.contextTags);
83
83
  const actrResult = this.engine.computeActivation(accessTimes, associations, new Set(recentTags), successRate, proficiencyId);
84
- // 레벨 계산 (Hybrid)
85
- const newLevel = computePracticalLevel(events.length, successRate, daysSinceLastPractice, avgDifficulty, this.config.maxLevel);
86
- const previousLevel = proficiency.level;
87
84
  const activation = actrResult.total + avgDifficulty * 0.2;
85
+ // 레벨 계산 (Hybrid: ACT-R 활성화 보정 포함)
86
+ const newLevel = computePracticalLevel(events.length, successRate, daysSinceLastPractice, avgDifficulty, this.config.maxLevel, activation);
87
+ const previousLevel = proficiency.level;
88
88
  this.db.updateProficiency(proficiencyId, {
89
89
  level: newLevel,
90
90
  experienceCount: events.length,
@@ -154,17 +154,20 @@ export class ProficiencyTracker {
154
154
  *
155
155
  * Power Law of Practice (log 성장) + Forgetting Curve (지수 감쇠) + 난이도 보너스
156
156
  */
157
- export function computePracticalLevel(experienceCount, successRate, daysSinceLastPractice, avgDifficulty, maxLevel) {
157
+ export function computePracticalLevel(experienceCount, successRate, daysSinceLastPractice, avgDifficulty, maxLevel, actrActivation) {
158
158
  // 1. 연습 횟수 (Power Law - 대수적 성장)
159
159
  const countScore = Math.min(1.0, Math.log2(1 + experienceCount) / COUNT_SCALE);
160
160
  // 2. 성공률 (0% → 0.3, 100% → 1.0)
161
161
  const successScore = 0.3 + successRate * 0.7;
162
162
  // 3. 망각 곡선 (ACT-R inspired exponential decay)
163
- const recencyFactor = Math.exp(-Math.max(0, daysSinceLastPractice) * 0.02);
163
+ // 0.007: 30일 미사용 시 약 0.81 유지 (기존 0.02는 30일 0.55로 급격 감쇠)
164
+ const recencyFactor = Math.exp(-Math.max(0, daysSinceLastPractice) * 0.007);
164
165
  // 4. 난이도 보너스 (높은 난이도 연습에 보상)
165
166
  const difficultyBonus = avgDifficulty * 0.1;
167
+ // 5. ACT-R 활성화 보정 (있으면 최대 10% 가중)
168
+ const actrBonus = actrActivation !== undefined ? Math.max(0, Math.min(0.1, actrActivation * 0.05)) : 0;
166
169
  // 합산
167
- const combined = Math.max(0, Math.min(1, countScore * successScore * recencyFactor + difficultyBonus));
170
+ const combined = Math.max(0, Math.min(1, countScore * successScore * recencyFactor + difficultyBonus + actrBonus));
168
171
  return Math.min(maxLevel, Math.max(1, Math.ceil(combined * maxLevel)));
169
172
  }
170
173
  //# sourceMappingURL=tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/proficiency/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/proficiency/tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Adaptive RAG Router
3
+ *
4
+ * 쿼리 복잡도에 따라 최적의 검색 전략을 선택합니다.
5
+ * LLM 불필요 — 규칙 기반 분류로 < 1ms 레이턴시.
6
+ *
7
+ * - simple: FTS만 (< 5ms)
8
+ * - semantic: FTS + Vector (< 30ms)
9
+ * - complex: FTS + Vector + Reranker (< 100ms)
10
+ */
11
+ export type QueryComplexity = 'simple' | 'semantic' | 'complex';
12
+ export interface RoutingResult {
13
+ complexity: QueryComplexity;
14
+ useFTS: boolean;
15
+ useVector: boolean;
16
+ useReranker: boolean;
17
+ reason: string;
18
+ }
19
+ export declare class AdaptiveRouter {
20
+ /**
21
+ * 쿼리 복잡도 분류
22
+ *
23
+ * @param query 검색 쿼리
24
+ * @returns 분류 결과 + 활성화할 검색 전략
25
+ */
26
+ classify(query: string): RoutingResult;
27
+ }
28
+ //# sourceMappingURL=adaptive-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-router.d.ts","sourceRoot":"","sources":["../../src/search/adaptive-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAwBD,qBAAa,cAAc;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;CA2DvC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Adaptive RAG Router
3
+ *
4
+ * 쿼리 복잡도에 따라 최적의 검색 전략을 선택합니다.
5
+ * LLM 불필요 — 규칙 기반 분류로 < 1ms 레이턴시.
6
+ *
7
+ * - simple: FTS만 (< 5ms)
8
+ * - semantic: FTS + Vector (< 30ms)
9
+ * - complex: FTS + Vector + Reranker (< 100ms)
10
+ */
11
+ /** 코드/에러 패턴 감지 */
12
+ const CODE_PATTERNS = [
13
+ /\b(error|exception|traceback|stack\s*trace|stderr)\b/i,
14
+ /\b(import|require|from|export|module)\s+['"`]/,
15
+ /\b(function|class|interface|type|const|let|var|def|async)\b/,
16
+ /[{}()\[\]<>].*[{}()\[\]<>]/, // 중첩 괄호
17
+ /\b\w+\.\w+\.\w+/, // 점 표기법 (a.b.c)
18
+ /\b\d+\.\d+\.\d+/, // 버전 번호
19
+ /(?:https?:\/\/|\/[\w/]+\.\w+)/, // URL 또는 파일 경로
20
+ ];
21
+ /** 질문/설명 패턴 */
22
+ const SEMANTIC_PATTERNS = [
23
+ /\b(how|why|what|when|where|which|explain|describe)\b/i,
24
+ /(어떻게|왜|무엇|언제|어디|설명|방법)/, // 한국어는 \b 없이 (유니코드 호환)
25
+ /\?$/, // 질문형
26
+ /\b(similar|like|related|compare|difference|versus|vs)\b/i,
27
+ /(비슷한|관련|비교|차이|대안)/, // 한국어
28
+ /\b(best practice|pattern|approach|architecture|design)\b/i,
29
+ /(패턴|접근법|아키텍처|설계|구조)/, // 한국어
30
+ ];
31
+ export class AdaptiveRouter {
32
+ /**
33
+ * 쿼리 복잡도 분류
34
+ *
35
+ * @param query 검색 쿼리
36
+ * @returns 분류 결과 + 활성화할 검색 전략
37
+ */
38
+ classify(query) {
39
+ const trimmed = query.trim();
40
+ const wordCount = trimmed.split(/\s+/).length;
41
+ // 1~2 단어: simple (키워드 매칭 충분)
42
+ if (wordCount <= 2) {
43
+ return {
44
+ complexity: 'simple',
45
+ useFTS: true,
46
+ useVector: false,
47
+ useReranker: false,
48
+ reason: `Short query (${wordCount} words)`,
49
+ };
50
+ }
51
+ // 코드 패턴/에러 메시지: complex (다중 소스 결합)
52
+ const hasCodePattern = CODE_PATTERNS.some(p => p.test(trimmed));
53
+ if (hasCodePattern) {
54
+ return {
55
+ complexity: 'complex',
56
+ useFTS: true,
57
+ useVector: true,
58
+ useReranker: true,
59
+ reason: 'Code pattern or error message detected',
60
+ };
61
+ }
62
+ // 질문형/설명형: semantic (의미 검색 필요)
63
+ const hasSemanticPattern = SEMANTIC_PATTERNS.some(p => p.test(trimmed));
64
+ if (hasSemanticPattern) {
65
+ return {
66
+ complexity: 'semantic',
67
+ useFTS: true,
68
+ useVector: true,
69
+ useReranker: false,
70
+ reason: 'Semantic query detected',
71
+ };
72
+ }
73
+ // 긴 쿼리 (5+ 단어): semantic
74
+ if (wordCount >= 5) {
75
+ return {
76
+ complexity: 'semantic',
77
+ useFTS: true,
78
+ useVector: true,
79
+ useReranker: false,
80
+ reason: `Long query (${wordCount} words)`,
81
+ };
82
+ }
83
+ // 기본: simple
84
+ return {
85
+ complexity: 'simple',
86
+ useFTS: true,
87
+ useVector: false,
88
+ useReranker: false,
89
+ reason: 'Default classification',
90
+ };
91
+ }
92
+ }
93
+ //# sourceMappingURL=adaptive-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-router.js","sourceRoot":"","sources":["../../src/search/adaptive-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,kBAAkB;AAClB,MAAM,aAAa,GAAG;IACpB,uDAAuD;IACvD,+CAA+C;IAC/C,6DAA6D;IAC7D,4BAA4B,EAAG,QAAQ;IACvC,iBAAiB,EAAG,gBAAgB;IACpC,iBAAiB,EAAG,QAAQ;IAC5B,+BAA+B,EAAG,eAAe;CAClD,CAAC;AAEF,eAAe;AACf,MAAM,iBAAiB,GAAG;IACxB,uDAAuD;IACvD,wBAAwB,EAAG,uBAAuB;IAClD,KAAK,EAAG,MAAM;IACd,0DAA0D;IAC1D,mBAAmB,EAAG,MAAM;IAC5B,2DAA2D;IAC3D,qBAAqB,EAAG,MAAM;CAC/B,CAAC;AAEF,MAAM,OAAO,cAAc;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,KAAa;QACpB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAE9C,6BAA6B;QAC7B,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,gBAAgB,SAAS,SAAS;aAC3C,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAChE,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO;gBACL,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,wCAAwC;aACjD,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACxE,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO;gBACL,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,yBAAyB;aAClC,CAAC;QACJ,CAAC;QAED,yBAAyB;QACzB,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,eAAe,SAAS,SAAS;aAC1C,CAAC;QACJ,CAAC;QAED,aAAa;QACb,OAAO;YACL,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,wBAAwB;SACjC,CAAC;IACJ,CAAC;CACF"}
@@ -49,6 +49,10 @@ export declare class HybridRanker {
49
49
  /**
50
50
  * Compute LSH hash for embedding pre-filtering (C-4)
51
51
  * SimHash-like: pseudo-random hyperplane signs -> hex string
52
+ *
53
+ * WARNING: Hash collision 가능성 있음 — 동일 hash라도 실제 유사도 검증 필수.
54
+ * bits=32 기준 collision 확률 ~1/2^32이나, 대규모 corpus(1M+)에서는 false-positive 발생 가능.
55
+ * 따라서 이 함수는 pre-filter 목적으로만 사용하고, 최종 결과는 cosineSimilarity로 재검증.
52
56
  */
53
57
  export declare function computeEmbeddingHash(embedding: number[], bits?: number): string;
54
58
  //# sourceMappingURL=ranker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ranker.d.ts","sourceRoot":"","sources":["../../src/search/ranker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAqBD;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,CAAC,CAAS;IAClB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,YAAY,CAAU;gBAElB,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa;IAqB/C;;OAEG;IACH,IAAI,CACF,UAAU,EAAE,kBAAkB,EAAE,EAChC,aAAa,EAAE,kBAAkB,EAAE,EACnC,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,YAAY,EAAE;IAsEjB,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,WAAW;CAKpB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,MAAW,GAAG,MAAM,CAmBnF"}
1
+ {"version":3,"file":"ranker.d.ts","sourceRoot":"","sources":["../../src/search/ranker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAqBD;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,CAAC,CAAS;IAClB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,YAAY,CAAU;gBAElB,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa;IAqB/C;;OAEG;IACH,IAAI,CACF,UAAU,EAAE,kBAAkB,EAAE,EAChC,aAAa,EAAE,kBAAkB,EAAE,EACnC,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,YAAY,EAAE;IAsEjB,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,WAAW;CAKpB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,MAAW,GAAG,MAAM,CAmBnF"}
@@ -142,6 +142,10 @@ export class HybridRanker {
142
142
  /**
143
143
  * Compute LSH hash for embedding pre-filtering (C-4)
144
144
  * SimHash-like: pseudo-random hyperplane signs -> hex string
145
+ *
146
+ * WARNING: Hash collision 가능성 있음 — 동일 hash라도 실제 유사도 검증 필수.
147
+ * bits=32 기준 collision 확률 ~1/2^32이나, 대규모 corpus(1M+)에서는 false-positive 발생 가능.
148
+ * 따라서 이 함수는 pre-filter 목적으로만 사용하고, 최종 결과는 cosineSimilarity로 재검증.
145
149
  */
146
150
  export function computeEmbeddingHash(embedding, bits = 32) {
147
151
  const hashBits = [];
@@ -1 +1 @@
1
- {"version":3,"file":"ranker.js","sourceRoot":"","sources":["../../src/search/ranker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH,iCAAiC;AACjC,MAAM,cAAc,GAA2B;IAC7C,cAAc,EAAE,GAAG;IACnB,YAAY,EAAE,GAAG;IACjB,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,iBAAiB,EAAE,GAAG;IACtB,QAAQ,EAAE,GAAG;CACd,CAAC;AAEF,6BAA6B;AAC7B,MAAM,UAAU,GAA2B;IACzC,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,GAAG;CACb,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACf,CAAC,CAAS;IACV,OAAO,CAAgB;IACvB,aAAa,CAAU;IACvB,SAAS,CAAU;IACnB,YAAY,CAAU;IAE9B,YAAY,UAAmC;QAC7C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,UAAU,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG;gBACb,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG;gBAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG;gBACnC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,GAAG;aACtC,CAAC;YACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;YACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;YACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;QACjD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CACF,UAAgC,EAChC,aAAmC,EACnC,cAAyB;QAEzB,kCAAkC;QAClC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAElD,wBAAwB;QACxB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwH,CAAC;QAEjJ,YAAY;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QAED,eAAe;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;QAED,gBAAgB;QAChB,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBACnB,IAAI,KAAa,CAAC;gBAElB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,sDAAsD;oBACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACpD,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjD,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtC,IAAI,KAAK,GAAG,GAAG,CAAC;gBAChB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;gBACxD,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;gBAChD,CAAC;gBACD,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,aAAa;QACb,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC,CAAC;QAEN,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,QAAQ,CACd,QAAmI,EACnI,MAAc,EACd,KAAa,EACb,IAAkC,EAClC,IAAY;QAEZ,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,IAAI,KAAK,CAAC;YAC7B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,OAAe;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAmB,EAAE,OAAe,EAAE;IACzE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"ranker.js","sourceRoot":"","sources":["../../src/search/ranker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Cross-Encoder Reranker
3
+ *
4
+ * RRF 하이브리드 검색의 top-N 결과를 정밀 리랭킹합니다.
5
+ * @huggingface/transformers 기반 ms-marco-MiniLM-L-6-v2 모델 사용.
6
+ *
7
+ * 성능:
8
+ * - ~5ms/pair (CPU)
9
+ * - top-20 → top-5: ~100ms (SessionStart)
10
+ * - top-10 → top-3: ~50ms (UserPromptSubmit)
11
+ *
12
+ * 설치: npm install @huggingface/transformers (optional dependency)
13
+ */
14
+ import type { RankedResult } from './ranker.js';
15
+ export interface RerankerOptions {
16
+ /** 사용 가능하지 않을 때 fallback 사용 여부 (default: true) */
17
+ useFallback?: boolean;
18
+ }
19
+ export declare class CrossEncoderReranker {
20
+ private useFallback;
21
+ constructor(options?: RerankerOptions);
22
+ /**
23
+ * 후보 메모리를 리랭킹
24
+ *
25
+ * @param query 검색 쿼리
26
+ * @param candidates 리랭킹 대상 메모리 목록
27
+ * @param topK 반환할 상위 K개
28
+ * @returns 리랭킹된 결과
29
+ */
30
+ rerank(query: string, candidates: RankedResult[], topK: number): Promise<RankedResult[]>;
31
+ /**
32
+ * 텍스트 매칭 기반 fallback 리랭킹
33
+ */
34
+ private fallbackRerank;
35
+ /**
36
+ * Cross-Encoder 출력에서 relevance score 추출
37
+ */
38
+ private extractScore;
39
+ /**
40
+ * 사용 가능 여부 확인
41
+ */
42
+ static isAvailable(): Promise<boolean>;
43
+ }
44
+ /**
45
+ * 싱글톤 리셋 (테스트용)
46
+ */
47
+ export declare function resetRerankerPipeline(): void;
48
+ //# sourceMappingURL=reranker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reranker.d.ts","sourceRoot":"","sources":["../../src/search/reranker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsDhD,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAU;gBAEjB,OAAO,CAAC,EAAE,eAAe;IAIrC;;;;;;;OAOG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,YAAY,EAAE,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,EAAE,CAAC;IAkC1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQ7C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Cross-Encoder Reranker
3
+ *
4
+ * RRF 하이브리드 검색의 top-N 결과를 정밀 리랭킹합니다.
5
+ * @huggingface/transformers 기반 ms-marco-MiniLM-L-6-v2 모델 사용.
6
+ *
7
+ * 성능:
8
+ * - ~5ms/pair (CPU)
9
+ * - top-20 → top-5: ~100ms (SessionStart)
10
+ * - top-10 → top-3: ~50ms (UserPromptSubmit)
11
+ *
12
+ * 설치: npm install @huggingface/transformers (optional dependency)
13
+ */
14
+ const RERANKER_MODEL = 'cross-encoder/ms-marco-MiniLM-L-6-v2';
15
+ // 싱글톤 파이프라인
16
+ let _rerankerPipeline = null;
17
+ let _rerankerLoading = null;
18
+ /**
19
+ * reranker 파이프라인 지연 로드
20
+ */
21
+ async function getRerankerPipeline() {
22
+ if (_rerankerPipeline)
23
+ return _rerankerPipeline;
24
+ if (_rerankerLoading)
25
+ return _rerankerLoading;
26
+ _rerankerLoading = (async () => {
27
+ try {
28
+ const mod = await Function('return import("@huggingface/transformers")')();
29
+ _rerankerPipeline = await mod.pipeline('text-classification', RERANKER_MODEL, {
30
+ quantized: true,
31
+ });
32
+ return _rerankerPipeline;
33
+ }
34
+ catch (err) {
35
+ _rerankerLoading = null;
36
+ throw new Error(`Cross-Encoder reranker requires @huggingface/transformers. ` +
37
+ `Install: npm install @huggingface/transformers\n` +
38
+ `Original error: ${err instanceof Error ? err.message : String(err)}`);
39
+ }
40
+ })();
41
+ return _rerankerLoading;
42
+ }
43
+ /**
44
+ * 텍스트 기반 fallback reranker
45
+ * @huggingface/transformers가 없을 때 사용
46
+ * BM25 스타일 간단한 키워드 매칭
47
+ */
48
+ function fallbackScore(query, content) {
49
+ const queryTokens = query.toLowerCase().split(/\s+/).filter(t => t.length > 1);
50
+ const contentLower = content.toLowerCase();
51
+ if (queryTokens.length === 0)
52
+ return 0;
53
+ let matches = 0;
54
+ for (const token of queryTokens) {
55
+ if (contentLower.includes(token))
56
+ matches++;
57
+ }
58
+ return matches / queryTokens.length;
59
+ }
60
+ export class CrossEncoderReranker {
61
+ useFallback;
62
+ constructor(options) {
63
+ this.useFallback = options?.useFallback ?? true;
64
+ }
65
+ /**
66
+ * 후보 메모리를 리랭킹
67
+ *
68
+ * @param query 검색 쿼리
69
+ * @param candidates 리랭킹 대상 메모리 목록
70
+ * @param topK 반환할 상위 K개
71
+ * @returns 리랭킹된 결과
72
+ */
73
+ async rerank(query, candidates, topK) {
74
+ if (candidates.length === 0)
75
+ return [];
76
+ if (candidates.length <= topK)
77
+ return candidates;
78
+ try {
79
+ const pipe = await getRerankerPipeline();
80
+ // (query, candidate.content) 쌍으로 점수 계산
81
+ const pairs = candidates.map(c => ({
82
+ text: query,
83
+ text_pair: c.memory.content.slice(0, 512), // 모델 최대 길이 제한
84
+ }));
85
+ const scores = await pipe(pairs);
86
+ // 점수와 원본 결합
87
+ const scored = candidates.map((candidate, i) => ({
88
+ ...candidate,
89
+ rerankScore: this.extractScore(scores[i]),
90
+ }));
91
+ // 리랭킹 점수로 재정렬
92
+ scored.sort((a, b) => b.rerankScore - a.rerankScore);
93
+ return scored.slice(0, topK).map(({ rerankScore: _rs, ...rest }) => rest);
94
+ }
95
+ catch {
96
+ // transformers 미설치 시 fallback
97
+ if (this.useFallback) {
98
+ return this.fallbackRerank(query, candidates, topK);
99
+ }
100
+ return candidates.slice(0, topK);
101
+ }
102
+ }
103
+ /**
104
+ * 텍스트 매칭 기반 fallback 리랭킹
105
+ */
106
+ fallbackRerank(query, candidates, topK) {
107
+ const scored = candidates.map(c => ({
108
+ ...c,
109
+ fallbackScore: fallbackScore(query, c.memory.content),
110
+ }));
111
+ // 기존 점수 + fallback 점수 가중 평균
112
+ scored.sort((a, b) => {
113
+ const scoreA = a.score * 0.5 + a.fallbackScore * 0.5;
114
+ const scoreB = b.score * 0.5 + b.fallbackScore * 0.5;
115
+ return scoreB - scoreA;
116
+ });
117
+ return scored.slice(0, topK).map(({ fallbackScore: _fs, ...rest }) => rest);
118
+ }
119
+ /**
120
+ * Cross-Encoder 출력에서 relevance score 추출
121
+ */
122
+ extractScore(output) {
123
+ if (typeof output === 'number')
124
+ return output;
125
+ // { label: 'POSITIVE', score: 0.95 } 형태
126
+ if (output && typeof output.score === 'number') {
127
+ return output.score;
128
+ }
129
+ // [{ label, score }, ...] 배열 형태
130
+ if (Array.isArray(output) && output.length > 0) {
131
+ return output[0].score ?? 0;
132
+ }
133
+ return 0;
134
+ }
135
+ /**
136
+ * 사용 가능 여부 확인
137
+ */
138
+ static async isAvailable() {
139
+ try {
140
+ await Function('return import("@huggingface/transformers")')();
141
+ return true;
142
+ }
143
+ catch {
144
+ return false;
145
+ }
146
+ }
147
+ }
148
+ /**
149
+ * 싱글톤 리셋 (테스트용)
150
+ */
151
+ export function resetRerankerPipeline() {
152
+ _rerankerPipeline = null;
153
+ _rerankerLoading = null;
154
+ }
155
+ //# sourceMappingURL=reranker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reranker.js","sourceRoot":"","sources":["../../src/search/reranker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAE9D,YAAY;AACZ,IAAI,iBAAiB,GAAQ,IAAI,CAAC;AAClC,IAAI,gBAAgB,GAAwB,IAAI,CAAC;AAEjD;;GAEG;AACH,KAAK,UAAU,mBAAmB;IAChC,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAChD,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAE9C,gBAAgB,GAAG,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAO,QAAQ,CAAC,4CAA4C,CAAC,EAA8D,CAAC;YACxI,iBAAiB,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,qBAAqB,EAAE,cAAc,EAAE;gBAC5E,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,gBAAgB,GAAG,IAAI,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,6DAA6D;gBAC7D,kDAAkD;gBAClD,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACtE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAa,EAAE,OAAe;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAE3C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEvC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;AACtC,CAAC;AAOD,MAAM,OAAO,oBAAoB;IACvB,WAAW,CAAU;IAE7B,YAAY,OAAyB;QACnC,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;IAClD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CACV,KAAa,EACb,UAA0B,EAC1B,IAAY;QAEZ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI;YAAE,OAAO,UAAU,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAEzC,uCAAuC;YACvC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACjC,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,cAAc;aAC1D,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjC,YAAY;YACZ,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/C,GAAG,SAAS;gBACZ,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC1C,CAAC,CAAC,CAAC;YAEJ,cAAc;YACd,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;YAErD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;YAC9B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,KAAa,EACb,UAA0B,EAC1B,IAAY;QAEZ,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClC,GAAG,CAAC;YACJ,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;SACtD,CAAC,CAAC,CAAC;QAEJ,4BAA4B;QAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;YACrD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;YACrD,OAAO,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,MAAW;QAC9B,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;QAE9C,wCAAwC;QACxC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QAED,gCAAgC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW;QACtB,IAAI,CAAC;YACH,MAAO,QAAQ,CAAC,4CAA4C,CAAC,EAAuB,CAAC;YACrF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,iBAAiB,GAAG,IAAI,CAAC;IACzB,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC"}
@@ -14,6 +14,7 @@
14
14
  import type { MemoryDatabase } from '../db/database.js';
15
15
  import type { A2AConfig, Memory } from '../types/index.js';
16
16
  import type { SkillCandidate, SkillMetadata, EvaluationResult, ReviewResult } from './types.js';
17
+ import type { A2AClient } from '../sync/client.js';
17
18
  export declare class SkillEvaluator {
18
19
  private db;
19
20
  private config;
@@ -21,21 +22,18 @@ export declare class SkillEvaluator {
21
22
  /**
22
23
  * 메인 평가 파이프라인
23
24
  */
24
- evaluate(projectPath?: string): Promise<EvaluationResult>;
25
+ evaluate(projectPath?: string, client?: A2AClient): Promise<EvaluationResult>;
25
26
  /**
26
27
  * Greedy Agglomerative 클러스터링
27
28
  * 코사인 유사도 ≥ threshold인 메모리들을 같은 클러스터로 그룹화
28
29
  */
29
30
  clusterMemories(memories: Memory[], threshold: number): Memory[][];
30
31
  /**
31
- * 5조건 AND 평가
32
- * 1. 반복 횟수 minRepetitions
33
- * 2. 평균 유사도 threshold (클러스터 내)
34
- * 3. 신뢰도 ≥ minConfidence
35
- * 4. 다중 세션 출현
36
- * 5. 일관된 카테고리 (majority)
32
+ * 3-AND + 2-Optional 평가 (기존 5-AND에서 완화)
33
+ * 필수(AND): 1. 반복 횟수, 2. 평균 유사도(0.75), 3. 기본 신뢰도(0.5)
34
+ * 보너스(Optional): 4. 다중 세션(×1.2), 5. 일관된 카테고리(×1.1)
37
35
  */
38
- evaluateCluster(cluster: Memory[], minRepetitions: number, minConfidence: number): SkillCandidate | null;
36
+ evaluateCluster(cluster: Memory[], minRepetitions: number, _minConfidence: number): SkillCandidate | null;
39
37
  /**
40
38
  * LLM으로 스킬 유효성 검증
41
39
  */
@@ -43,7 +41,7 @@ export declare class SkillEvaluator {
43
41
  /**
44
42
  * N:1 압축하여 skill 메모리 생성
45
43
  */
46
- compressToSkill(candidate: SkillCandidate): Memory;
44
+ compressToSkill(candidate: SkillCandidate, client?: A2AClient): Promise<Memory>;
47
45
  /**
48
46
  * 90일 주기 재평가: 비활성 스킬 강등
49
47
  */
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/skill/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhG,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAY;gBAEd,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS;IAKjD;;OAEG;IACG,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmF/D;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE;IA4BlE;;;;;;;OAOG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,cAAc,GAAG,IAAI;IA0DxB;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BlE;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM;IAyClD;;OAEG;IACH,YAAY,IAAI,YAAY;IAqD5B,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,iBAAiB;IAqBzB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAYpD,OAAO,CAAC,iBAAiB;CAiB1B"}
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/skill/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAY;gBAEd,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS;IAKjD;;OAEG;IACG,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyGnF;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE;IA4BlE;;;;OAIG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GACrB,cAAc,GAAG,IAAI;IA6FxB;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAgClE;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAkFrF;;OAEG;IACH,YAAY,IAAI,YAAY;IAqD5B,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,iBAAiB;IAqBzB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAYpD,OAAO,CAAC,iBAAiB;CAiB1B"}