@reftrixmcp/ml 0.1.7

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 (97) hide show
  1. package/LICENSE +661 -0
  2. package/dist/dinov2/index.d.ts +7 -0
  3. package/dist/dinov2/index.d.ts.map +1 -0
  4. package/dist/dinov2/index.js +7 -0
  5. package/dist/dinov2/index.js.map +1 -0
  6. package/dist/dinov2/service.d.ts +106 -0
  7. package/dist/dinov2/service.d.ts.map +1 -0
  8. package/dist/dinov2/service.js +446 -0
  9. package/dist/dinov2/service.js.map +1 -0
  10. package/dist/dinov2/worker-thread-types.d.ts +77 -0
  11. package/dist/dinov2/worker-thread-types.d.ts.map +1 -0
  12. package/dist/dinov2/worker-thread-types.js +4 -0
  13. package/dist/dinov2/worker-thread-types.js.map +1 -0
  14. package/dist/dinov2/worker-thread.d.ts +2 -0
  15. package/dist/dinov2/worker-thread.d.ts.map +1 -0
  16. package/dist/dinov2/worker-thread.js +231 -0
  17. package/dist/dinov2/worker-thread.js.map +1 -0
  18. package/dist/embeddings/index.d.ts +12 -0
  19. package/dist/embeddings/index.d.ts.map +1 -0
  20. package/dist/embeddings/index.js +13 -0
  21. package/dist/embeddings/index.js.map +1 -0
  22. package/dist/embeddings/multimodal-embedding.service.d.ts +400 -0
  23. package/dist/embeddings/multimodal-embedding.service.d.ts.map +1 -0
  24. package/dist/embeddings/multimodal-embedding.service.js +650 -0
  25. package/dist/embeddings/multimodal-embedding.service.js.map +1 -0
  26. package/dist/embeddings/service.d.ts +261 -0
  27. package/dist/embeddings/service.d.ts.map +1 -0
  28. package/dist/embeddings/service.js +1093 -0
  29. package/dist/embeddings/service.js.map +1 -0
  30. package/dist/embeddings/style-embedding.service.d.ts +117 -0
  31. package/dist/embeddings/style-embedding.service.d.ts.map +1 -0
  32. package/dist/embeddings/style-embedding.service.js +157 -0
  33. package/dist/embeddings/style-embedding.service.js.map +1 -0
  34. package/dist/embeddings/types.d.ts +83 -0
  35. package/dist/embeddings/types.d.ts.map +1 -0
  36. package/dist/embeddings/types.js +4 -0
  37. package/dist/embeddings/types.js.map +1 -0
  38. package/dist/embeddings/vision-embedding.service.d.ts +70 -0
  39. package/dist/embeddings/vision-embedding.service.d.ts.map +1 -0
  40. package/dist/embeddings/vision-embedding.service.js +221 -0
  41. package/dist/embeddings/vision-embedding.service.js.map +1 -0
  42. package/dist/embeddings/vision-embedding.types.d.ts +102 -0
  43. package/dist/embeddings/vision-embedding.types.d.ts.map +1 -0
  44. package/dist/embeddings/vision-embedding.types.js +4 -0
  45. package/dist/embeddings/vision-embedding.types.js.map +1 -0
  46. package/dist/embeddings/worker-thread-types.d.ts +152 -0
  47. package/dist/embeddings/worker-thread-types.d.ts.map +1 -0
  48. package/dist/embeddings/worker-thread-types.js +4 -0
  49. package/dist/embeddings/worker-thread-types.js.map +1 -0
  50. package/dist/embeddings/worker-thread.d.ts +4 -0
  51. package/dist/embeddings/worker-thread.d.ts.map +1 -0
  52. package/dist/embeddings/worker-thread.js +441 -0
  53. package/dist/embeddings/worker-thread.js.map +1 -0
  54. package/dist/index.d.ts +18 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +19 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/search/fulltext-helpers.d.ts +30 -0
  59. package/dist/search/fulltext-helpers.d.ts.map +1 -0
  60. package/dist/search/fulltext-helpers.js +40 -0
  61. package/dist/search/fulltext-helpers.js.map +1 -0
  62. package/dist/search/hybrid.d.ts +40 -0
  63. package/dist/search/hybrid.d.ts.map +1 -0
  64. package/dist/search/hybrid.js +61 -0
  65. package/dist/search/hybrid.js.map +1 -0
  66. package/dist/search/index.d.ts +12 -0
  67. package/dist/search/index.d.ts.map +1 -0
  68. package/dist/search/index.js +11 -0
  69. package/dist/search/index.js.map +1 -0
  70. package/dist/search/rrf.d.ts +69 -0
  71. package/dist/search/rrf.d.ts.map +1 -0
  72. package/dist/search/rrf.js +108 -0
  73. package/dist/search/rrf.js.map +1 -0
  74. package/dist/search/types.d.ts +130 -0
  75. package/dist/search/types.d.ts.map +1 -0
  76. package/dist/search/types.js +4 -0
  77. package/dist/search/types.js.map +1 -0
  78. package/package.json +65 -0
  79. package/src/dinov2/index.ts +21 -0
  80. package/src/dinov2/service.ts +539 -0
  81. package/src/dinov2/worker-thread-types.ts +103 -0
  82. package/src/dinov2/worker-thread.ts +306 -0
  83. package/src/embeddings/index.ts +74 -0
  84. package/src/embeddings/multimodal-embedding.service.ts +992 -0
  85. package/src/embeddings/service.ts +1287 -0
  86. package/src/embeddings/style-embedding.service.ts +201 -0
  87. package/src/embeddings/types.ts +95 -0
  88. package/src/embeddings/vision-embedding.service.ts +273 -0
  89. package/src/embeddings/vision-embedding.types.ts +117 -0
  90. package/src/embeddings/worker-thread-types.ts +194 -0
  91. package/src/embeddings/worker-thread.ts +529 -0
  92. package/src/index.ts +70 -0
  93. package/src/search/fulltext-helpers.ts +45 -0
  94. package/src/search/hybrid.ts +107 -0
  95. package/src/search/index.ts +25 -0
  96. package/src/search/rrf.ts +154 -0
  97. package/src/search/types.ts +141 -0
@@ -0,0 +1,400 @@
1
+ /**
2
+ * Multimodal Embedding Service
3
+ *
4
+ * VisionAnalyzerの特徴抽出結果とテキストEmbeddingを組み合わせて
5
+ * マルチモーダルEmbeddingを生成します。
6
+ *
7
+ * text_embedding + vision_embedding の統合サービス
8
+ * - searchMode: 'text_only' | 'vision_only' | 'combined'
9
+ * - Graceful Degradation: visionFeaturesがない場合はtext_onlyにフォールバック
10
+ * - L2正規化: すべてのEmbeddingは正規化される
11
+ *
12
+ * @module embeddings/multimodal-embedding.service
13
+ */
14
+ import { z } from "zod";
15
+ import type { VisionFeatures } from "./vision-embedding.types.js";
16
+ /**
17
+ * 検索モード
18
+ */
19
+ export type SearchMode = "text_only" | "vision_only" | "combined";
20
+ /**
21
+ * マルチモーダルEmbedding設定
22
+ */
23
+ export interface MultimodalEmbeddingConfig {
24
+ /** テキストEmbeddingの重み (0-1) */
25
+ textWeight?: number;
26
+ /** Vision Embeddingの重み (0-1) */
27
+ visionWeight?: number;
28
+ /** Embeddingの次元数 */
29
+ embeddingDimension?: number;
30
+ /** 検索モード */
31
+ searchMode?: SearchMode;
32
+ /** 出力のL2正規化 */
33
+ normalizeOutput?: boolean;
34
+ }
35
+ /**
36
+ * デフォルト設定
37
+ */
38
+ export declare const DEFAULT_MULTIMODAL_CONFIG: Required<MultimodalEmbeddingConfig>;
39
+ /**
40
+ * 設定スキーマ
41
+ */
42
+ export declare const multimodalEmbeddingConfigSchema: z.ZodObject<{
43
+ textWeight: z.ZodOptional<z.ZodNumber>;
44
+ visionWeight: z.ZodOptional<z.ZodNumber>;
45
+ embeddingDimension: z.ZodOptional<z.ZodNumber>;
46
+ searchMode: z.ZodOptional<z.ZodEnum<["text_only", "vision_only", "combined"]>>;
47
+ normalizeOutput: z.ZodOptional<z.ZodBoolean>;
48
+ }, "strip", z.ZodTypeAny, {
49
+ textWeight?: number | undefined;
50
+ visionWeight?: number | undefined;
51
+ embeddingDimension?: number | undefined;
52
+ searchMode?: "text_only" | "vision_only" | "combined" | undefined;
53
+ normalizeOutput?: boolean | undefined;
54
+ }, {
55
+ textWeight?: number | undefined;
56
+ visionWeight?: number | undefined;
57
+ embeddingDimension?: number | undefined;
58
+ searchMode?: "text_only" | "vision_only" | "combined" | undefined;
59
+ normalizeOutput?: boolean | undefined;
60
+ }>;
61
+ /**
62
+ * マルチモーダルEmbedding入力
63
+ */
64
+ export interface MultimodalEmbeddingInput {
65
+ /** テキスト表現(VisionAnalyzer.generateTextRepresentationの出力) */
66
+ textRepresentation: string;
67
+ /** Vision特徴からのテキスト(カラーパレット、レイアウト等) */
68
+ visionFeatureText?: string;
69
+ /** 元のテキスト(名前、説明等) */
70
+ originalText?: string;
71
+ }
72
+ /**
73
+ * 入力スキーマ
74
+ */
75
+ export declare const multimodalEmbeddingInputSchema: z.ZodObject<{
76
+ textRepresentation: z.ZodString;
77
+ visionFeatureText: z.ZodOptional<z.ZodString>;
78
+ originalText: z.ZodOptional<z.ZodString>;
79
+ }, "strip", z.ZodTypeAny, {
80
+ textRepresentation: string;
81
+ visionFeatureText?: string | undefined;
82
+ originalText?: string | undefined;
83
+ }, {
84
+ textRepresentation: string;
85
+ visionFeatureText?: string | undefined;
86
+ originalText?: string | undefined;
87
+ }>;
88
+ /**
89
+ * マルチモーダルEmbedding結果
90
+ */
91
+ export interface MultimodalEmbeddingResult {
92
+ /** 統合Embedding (768次元) */
93
+ combinedEmbedding: number[];
94
+ /** テキストEmbedding (768次元) */
95
+ textEmbedding: number[];
96
+ /** Vision特徴Embedding (768次元) */
97
+ visionEmbedding: number[];
98
+ /** 使用した重み */
99
+ weights: {
100
+ text: number;
101
+ vision: number;
102
+ };
103
+ /** 処理時間(ミリ秒) */
104
+ processingTimeMs: number;
105
+ }
106
+ /**
107
+ * 結果スキーマ
108
+ */
109
+ export declare const multimodalEmbeddingResultSchema: z.ZodObject<{
110
+ combinedEmbedding: z.ZodArray<z.ZodNumber, "many">;
111
+ textEmbedding: z.ZodArray<z.ZodNumber, "many">;
112
+ visionEmbedding: z.ZodArray<z.ZodNumber, "many">;
113
+ weights: z.ZodObject<{
114
+ text: z.ZodNumber;
115
+ vision: z.ZodNumber;
116
+ }, "strip", z.ZodTypeAny, {
117
+ text: number;
118
+ vision: number;
119
+ }, {
120
+ text: number;
121
+ vision: number;
122
+ }>;
123
+ processingTimeMs: z.ZodNumber;
124
+ }, "strip", z.ZodTypeAny, {
125
+ combinedEmbedding: number[];
126
+ textEmbedding: number[];
127
+ visionEmbedding: number[];
128
+ weights: {
129
+ text: number;
130
+ vision: number;
131
+ };
132
+ processingTimeMs: number;
133
+ }, {
134
+ combinedEmbedding: number[];
135
+ textEmbedding: number[];
136
+ visionEmbedding: number[];
137
+ weights: {
138
+ text: number;
139
+ vision: number;
140
+ };
141
+ processingTimeMs: number;
142
+ }>;
143
+ /**
144
+ * 新しいマルチモーダルEmbedding結果
145
+ */
146
+ export interface MultimodalEmbeddingResultV2 {
147
+ /** テキストEmbedding (768次元、L2正規化済み) */
148
+ textEmbedding: number[] | null;
149
+ /** Vision Embedding (768次元、L2正規化済み) */
150
+ visionEmbedding: number[] | null;
151
+ /** 統合Embedding (768次元、L2正規化済み) */
152
+ combinedEmbedding: number[] | null;
153
+ /** 使用した検索モード */
154
+ searchMode: SearchMode;
155
+ /** 使用した重み */
156
+ weights: {
157
+ text: number;
158
+ vision: number;
159
+ };
160
+ /** メタデータ */
161
+ metadata: {
162
+ /** テキスト表現 */
163
+ textRepresentation: string;
164
+ /** VisionFeatures (combinedモード時のみ) */
165
+ visionFeatures?: VisionFeatures;
166
+ /** 処理時間(ミリ秒) */
167
+ processingTimeMs: number;
168
+ };
169
+ }
170
+ /**
171
+ * バッチ処理入力アイテム
172
+ */
173
+ export interface MultimodalBatchItem {
174
+ /** テキストコンテンツ */
175
+ content: string;
176
+ /** VisionFeatures(オプション) */
177
+ visionFeatures?: VisionFeatures;
178
+ }
179
+ /**
180
+ * バッチ処理結果
181
+ */
182
+ export interface MultimodalBatchResult {
183
+ /** 成功した結果 */
184
+ results: MultimodalEmbeddingResultV2[];
185
+ /** 処理統計 */
186
+ stats: {
187
+ /** 処理件数 */
188
+ total: number;
189
+ /** 成功件数 */
190
+ success: number;
191
+ /** 失敗件数 */
192
+ failed: number;
193
+ /** 合計処理時間(ミリ秒) */
194
+ totalProcessingTimeMs: number;
195
+ };
196
+ }
197
+ /**
198
+ * バッチ処理パフォーマンスメトリクス
199
+ */
200
+ export interface MultimodalBatchMetrics {
201
+ /** 総アイテム数 */
202
+ totalItems: number;
203
+ /** 成功件数 */
204
+ successCount: number;
205
+ /** 失敗件数 */
206
+ failedCount: number;
207
+ /** キャッシュヒット件数 */
208
+ cacheHitCount: number;
209
+ /** キャッシュヒット率 (0-1) */
210
+ cacheHitRate: number;
211
+ /** 平均処理時間(ミリ秒) */
212
+ avgProcessingTimeMs: number;
213
+ /** 合計処理時間(ミリ秒) */
214
+ totalProcessingTimeMs: number;
215
+ /** スループット(件/分) */
216
+ throughputPerMinute: number;
217
+ }
218
+ /**
219
+ * 最適化バッチ処理の進捗情報
220
+ */
221
+ export interface OptimizedBatchProgress {
222
+ /** 完了件数 */
223
+ completed: number;
224
+ /** 総件数 */
225
+ total: number;
226
+ /** 進捗率 (0-1) */
227
+ progress: number;
228
+ /** 現在のアイテムインデックス */
229
+ currentIndex: number;
230
+ }
231
+ /**
232
+ * 最適化バッチ処理オプション
233
+ */
234
+ export interface OptimizedBatchOptions {
235
+ /** 並列処理の同時実行数 (デフォルト: 5) */
236
+ concurrency?: number;
237
+ /** 個別アイテムのタイムアウト(ミリ秒)(デフォルト: 30000) */
238
+ itemTimeoutMs?: number;
239
+ /** バッチ全体のタイムアウト(ミリ秒)(デフォルト: 300000 = 5分) */
240
+ totalTimeoutMs?: number;
241
+ /** 進捗コールバック */
242
+ onProgress?: (progress: OptimizedBatchProgress) => void;
243
+ /** Embedding設定のオーバーライド */
244
+ embeddingConfig?: MultimodalEmbeddingConfig;
245
+ }
246
+ /**
247
+ * 最適化バッチ処理結果
248
+ */
249
+ export interface OptimizedBatchResult {
250
+ /** 成功した結果 */
251
+ results: MultimodalEmbeddingResultV2[];
252
+ /** パフォーマンスメトリクス */
253
+ metrics: MultimodalBatchMetrics;
254
+ /** エラー情報(失敗したアイテム) */
255
+ errors: Array<{
256
+ index: number;
257
+ error: string;
258
+ }>;
259
+ }
260
+ /**
261
+ * Embeddingサービスインターフェース(DI用)
262
+ */
263
+ export interface IEmbeddingService {
264
+ generateEmbedding(text: string, type: "query" | "passage"): Promise<number[]>;
265
+ }
266
+ /**
267
+ * マルチモーダルEmbeddingサービス
268
+ *
269
+ * VisionAnalyzerの特徴抽出結果とテキストEmbeddingを組み合わせて
270
+ * 統合Embeddingを生成します。
271
+ *
272
+ * @example
273
+ * ```typescript
274
+ * const service = new MultimodalEmbeddingService(embeddingService);
275
+ *
276
+ * const result = await service.generateMultimodalEmbedding({
277
+ * textRepresentation: "Layout: two-column grid...",
278
+ * visionFeatureText: "Colors: blue, white. Whitespace: generous.",
279
+ * originalText: "Hero section design",
280
+ * });
281
+ *
282
+ * console.log(result.combinedEmbedding.length); // 768
283
+ * ```
284
+ */
285
+ export declare class MultimodalEmbeddingService {
286
+ private config;
287
+ private embeddingService;
288
+ constructor(embeddingService: IEmbeddingService, config?: MultimodalEmbeddingConfig);
289
+ /**
290
+ * 重みを正規化(合計が1になるように)
291
+ */
292
+ private normalizeWeights;
293
+ /**
294
+ * マルチモーダルEmbeddingを生成
295
+ *
296
+ * @param input - 入力データ
297
+ * @returns マルチモーダルEmbedding結果
298
+ */
299
+ generateMultimodalEmbedding(input: MultimodalEmbeddingInput): Promise<MultimodalEmbeddingResult>;
300
+ /**
301
+ * テキストEmbedding用の文字列を構築
302
+ */
303
+ private buildTextForEmbedding;
304
+ /**
305
+ * Vision特徴テキストを構築
306
+ */
307
+ private buildVisionText;
308
+ /**
309
+ * 2つのEmbeddingを重み付き結合
310
+ */
311
+ private combineEmbeddings;
312
+ /**
313
+ * ベクトルをL2正規化
314
+ */
315
+ private normalizeVector;
316
+ /**
317
+ * 現在の設定を取得
318
+ */
319
+ getConfig(): Readonly<Required<MultimodalEmbeddingConfig>>;
320
+ /**
321
+ * マルチモーダルEmbeddingを生成
322
+ *
323
+ * searchModeに応じて適切なEmbeddingを生成します。
324
+ * - text_only: テキストEmbeddingのみ
325
+ * - vision_only: VisionEmbeddingのみ(visionFeatures必須)
326
+ * - combined: テキスト + Vision の重み付き結合
327
+ *
328
+ * Graceful Degradation:
329
+ * - visionFeaturesがない場合、combinedモードはtext_onlyにフォールバック
330
+ *
331
+ * @param content - テキストコンテンツ
332
+ * @param visionFeatures - VisionFeatures(オプション)
333
+ * @param config - オーバーライド設定(オプション)
334
+ * @returns MultimodalEmbeddingResultV2
335
+ */
336
+ createMultimodalEmbedding(content: string, visionFeatures?: VisionFeatures, config?: MultimodalEmbeddingConfig): Promise<MultimodalEmbeddingResultV2>;
337
+ /**
338
+ * バッチでマルチモーダルEmbeddingを生成
339
+ *
340
+ * @param items - バッチ処理入力アイテムの配列
341
+ * @param config - オーバーライド設定(オプション)
342
+ * @returns MultimodalBatchResult
343
+ */
344
+ createBatchMultimodalEmbeddings(items: MultimodalBatchItem[], config?: MultimodalEmbeddingConfig): Promise<MultimodalBatchResult>;
345
+ /**
346
+ * 設定をマージ
347
+ */
348
+ private mergeConfig;
349
+ /**
350
+ * 設定を使用して2つのEmbeddingを重み付き結合
351
+ */
352
+ private combineEmbeddingsWithConfig;
353
+ /** キャッシュ(コンテンツハッシュ -> 結果) */
354
+ private embeddingCache;
355
+ /** 最大キャッシュサイズ */
356
+ private readonly maxCacheSize;
357
+ /**
358
+ * キャッシュキーを生成
359
+ */
360
+ private generateCacheKey;
361
+ /**
362
+ * キャッシュから取得(LRU更新)
363
+ */
364
+ private getCacheEntry;
365
+ /**
366
+ * キャッシュに保存(LRU eviction)
367
+ */
368
+ private setCacheEntry;
369
+ /**
370
+ * 最適化バッチでマルチモーダルEmbeddingを生成
371
+ *
372
+ * p-limitを使用した並列処理により、高スループットを実現します。
373
+ *
374
+ * 特徴:
375
+ * - 並列処理(デフォルト同時実行数: 5)
376
+ * - キャッシュによる重複処理の回避
377
+ * - 個別アイテムタイムアウト
378
+ * - バッチ全体タイムアウト
379
+ * - 進捗コールバック
380
+ * - Graceful Degradation(部分失敗許容)
381
+ * - 詳細なパフォーマンスメトリクス
382
+ *
383
+ * @param items - バッチ処理入力アイテムの配列
384
+ * @param options - 最適化オプション
385
+ * @returns OptimizedBatchResult
386
+ */
387
+ createOptimizedBatchMultimodalEmbeddings(items: MultimodalBatchItem[], options?: OptimizedBatchOptions): Promise<OptimizedBatchResult>;
388
+ /**
389
+ * Embeddingキャッシュをクリア
390
+ */
391
+ clearEmbeddingCache(): void;
392
+ /**
393
+ * キャッシュ統計を取得
394
+ */
395
+ getEmbeddingCacheStats(): {
396
+ size: number;
397
+ maxSize: number;
398
+ };
399
+ }
400
+ //# sourceMappingURL=multimodal-embedding.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multimodal-embedding.service.d.ts","sourceRoot":"","sources":["../../src/embeddings/multimodal-embedding.service.ts"],"names":[],"mappings":"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"}