claude-code-workflow 6.2.4 → 6.2.6

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 (62) hide show
  1. package/ccw/dist/core/lite-scanner-complete.d.ts.map +1 -1
  2. package/ccw/dist/core/lite-scanner-complete.js +4 -1
  3. package/ccw/dist/core/lite-scanner-complete.js.map +1 -1
  4. package/ccw/dist/core/lite-scanner.d.ts.map +1 -1
  5. package/ccw/dist/core/lite-scanner.js +4 -1
  6. package/ccw/dist/core/lite-scanner.js.map +1 -1
  7. package/ccw/dist/core/routes/claude-routes.d.ts.map +1 -1
  8. package/ccw/dist/core/routes/claude-routes.js +3 -5
  9. package/ccw/dist/core/routes/claude-routes.js.map +1 -1
  10. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  11. package/ccw/dist/core/routes/cli-routes.js +2 -1
  12. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  13. package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -1
  14. package/ccw/dist/core/routes/codexlens-routes.js +31 -6
  15. package/ccw/dist/core/routes/codexlens-routes.js.map +1 -1
  16. package/ccw/dist/core/routes/rules-routes.d.ts.map +1 -1
  17. package/ccw/dist/core/routes/rules-routes.js +4 -3
  18. package/ccw/dist/core/routes/rules-routes.js.map +1 -1
  19. package/ccw/dist/core/routes/skills-routes.d.ts.map +1 -1
  20. package/ccw/dist/core/routes/skills-routes.js +124 -6
  21. package/ccw/dist/core/routes/skills-routes.js.map +1 -1
  22. package/ccw/dist/tools/cli-executor.d.ts +4 -1
  23. package/ccw/dist/tools/cli-executor.d.ts.map +1 -1
  24. package/ccw/dist/tools/cli-executor.js +54 -2
  25. package/ccw/dist/tools/cli-executor.js.map +1 -1
  26. package/ccw/dist/tools/codex-lens.d.ts +20 -3
  27. package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
  28. package/ccw/dist/tools/codex-lens.js +166 -37
  29. package/ccw/dist/tools/codex-lens.js.map +1 -1
  30. package/ccw/package.json +1 -1
  31. package/ccw/src/core/lite-scanner-complete.ts +5 -1
  32. package/ccw/src/core/lite-scanner.ts +5 -1
  33. package/ccw/src/core/routes/claude-routes.ts +3 -5
  34. package/ccw/src/core/routes/cli-routes.ts +2 -1
  35. package/ccw/src/core/routes/codexlens-routes.ts +34 -6
  36. package/ccw/src/core/routes/rules-routes.ts +4 -3
  37. package/ccw/src/core/routes/skills-routes.ts +144 -6
  38. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +7 -12
  39. package/ccw/src/templates/dashboard-js/i18n.js +167 -5
  40. package/ccw/src/templates/dashboard-js/views/claude-manager.js +18 -4
  41. package/ccw/src/templates/dashboard-js/views/cli-manager.js +5 -3
  42. package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +790 -25
  43. package/ccw/src/templates/dashboard-js/views/rules-manager.js +35 -6
  44. package/ccw/src/templates/dashboard-js/views/skills-manager.js +385 -21
  45. package/ccw/src/tools/cli-executor.ts +70 -2
  46. package/ccw/src/tools/codex-lens.ts +183 -35
  47. package/codex-lens/pyproject.toml +66 -48
  48. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  49. package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
  50. package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
  51. package/codex-lens/src/codexlens/cli/embedding_manager.py +3 -3
  52. package/codex-lens/src/codexlens/cli/model_manager.py +24 -2
  53. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  54. package/codex-lens/src/codexlens/search/hybrid_search.py +313 -313
  55. package/codex-lens/src/codexlens/semantic/__init__.py +76 -39
  56. package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
  57. package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
  58. package/codex-lens/src/codexlens/semantic/__pycache__/gpu_support.cpython-313.pyc +0 -0
  59. package/codex-lens/src/codexlens/semantic/__pycache__/ollama_backend.cpython-313.pyc +0 -0
  60. package/codex-lens/src/codexlens/semantic/embedder.py +244 -185
  61. package/codex-lens/src/codexlens/semantic/gpu_support.py +192 -0
  62. package/package.json +1 -1
@@ -75,6 +75,8 @@ interface ReadyStatus {
75
75
  interface SemanticStatus {
76
76
  available: boolean;
77
77
  backend?: string;
78
+ accelerator?: string;
79
+ providers?: string[];
78
80
  error?: string;
79
81
  }
80
82
 
@@ -190,18 +192,39 @@ async function checkSemanticStatus(): Promise<SemanticStatus> {
190
192
  return { available: false, error: 'CodexLens not installed' };
191
193
  }
192
194
 
193
- // Check semantic module availability
195
+ // Check semantic module availability and accelerator info
194
196
  return new Promise((resolve) => {
195
197
  const checkCode = `
196
198
  import sys
199
+ import json
197
200
  try:
198
201
  from codexlens.semantic import SEMANTIC_AVAILABLE, SEMANTIC_BACKEND
199
- if SEMANTIC_AVAILABLE:
200
- print(f"available:{SEMANTIC_BACKEND}")
201
- else:
202
- print("unavailable")
202
+ result = {"available": SEMANTIC_AVAILABLE, "backend": SEMANTIC_BACKEND if SEMANTIC_AVAILABLE else None}
203
+
204
+ # Get ONNX providers for accelerator info
205
+ try:
206
+ import onnxruntime
207
+ providers = onnxruntime.get_available_providers()
208
+ result["providers"] = providers
209
+
210
+ # Determine accelerator type
211
+ if "CUDAExecutionProvider" in providers or "TensorrtExecutionProvider" in providers:
212
+ result["accelerator"] = "CUDA"
213
+ elif "DmlExecutionProvider" in providers:
214
+ result["accelerator"] = "DirectML"
215
+ elif "CoreMLExecutionProvider" in providers:
216
+ result["accelerator"] = "CoreML"
217
+ elif "ROCMExecutionProvider" in providers:
218
+ result["accelerator"] = "ROCm"
219
+ else:
220
+ result["accelerator"] = "CPU"
221
+ except:
222
+ result["providers"] = []
223
+ result["accelerator"] = "CPU"
224
+
225
+ print(json.dumps(result))
203
226
  except Exception as e:
204
- print(f"error:{e}")
227
+ print(json.dumps({"available": False, "error": str(e)}))
205
228
  `;
206
229
  const child = spawn(VENV_PYTHON, ['-c', checkCode], {
207
230
  stdio: ['ignore', 'pipe', 'pipe'],
@@ -220,12 +243,16 @@ except Exception as e:
220
243
 
221
244
  child.on('close', (code) => {
222
245
  const output = stdout.trim();
223
- if (output.startsWith('available:')) {
224
- const backend = output.split(':')[1];
225
- resolve({ available: true, backend });
226
- } else if (output === 'unavailable') {
227
- resolve({ available: false, error: 'Semantic dependencies not installed' });
228
- } else {
246
+ try {
247
+ const result = JSON.parse(output);
248
+ resolve({
249
+ available: result.available || false,
250
+ backend: result.backend,
251
+ accelerator: result.accelerator || 'CPU',
252
+ providers: result.providers || [],
253
+ error: result.error
254
+ });
255
+ } catch {
229
256
  resolve({ available: false, error: output || stderr || 'Unknown error' });
230
257
  }
231
258
  });
@@ -237,10 +264,66 @@ except Exception as e:
237
264
  }
238
265
 
239
266
  /**
240
- * Install semantic search dependencies (fastembed, ONNX-based, ~200MB)
267
+ * GPU acceleration mode for semantic search
268
+ */
269
+ type GpuMode = 'cpu' | 'cuda' | 'directml';
270
+
271
+ /**
272
+ * Detect available GPU acceleration
273
+ * @returns Detected GPU mode and info
274
+ */
275
+ async function detectGpuSupport(): Promise<{ mode: GpuMode; available: GpuMode[]; info: string }> {
276
+ const available: GpuMode[] = ['cpu'];
277
+ let detectedInfo = 'CPU only';
278
+
279
+ // Check for NVIDIA GPU (CUDA)
280
+ try {
281
+ if (process.platform === 'win32') {
282
+ execSync('nvidia-smi', { stdio: 'pipe' });
283
+ available.push('cuda');
284
+ detectedInfo = 'NVIDIA GPU detected (CUDA available)';
285
+ } else {
286
+ execSync('which nvidia-smi', { stdio: 'pipe' });
287
+ available.push('cuda');
288
+ detectedInfo = 'NVIDIA GPU detected (CUDA available)';
289
+ }
290
+ } catch {
291
+ // NVIDIA not available
292
+ }
293
+
294
+ // On Windows, DirectML is always available if DirectX 12 is supported
295
+ if (process.platform === 'win32') {
296
+ try {
297
+ // Check for DirectX 12 support via dxdiag or registry
298
+ // DirectML works on most modern Windows 10/11 systems
299
+ available.push('directml');
300
+ if (available.includes('cuda')) {
301
+ detectedInfo = 'NVIDIA GPU detected (CUDA & DirectML available)';
302
+ } else {
303
+ detectedInfo = 'DirectML available (Windows GPU acceleration)';
304
+ }
305
+ } catch {
306
+ // DirectML check failed
307
+ }
308
+ }
309
+
310
+ // Recommend best available mode
311
+ let recommendedMode: GpuMode = 'cpu';
312
+ if (process.platform === 'win32' && available.includes('directml')) {
313
+ recommendedMode = 'directml'; // DirectML is easier on Windows (no CUDA toolkit needed)
314
+ } else if (available.includes('cuda')) {
315
+ recommendedMode = 'cuda';
316
+ }
317
+
318
+ return { mode: recommendedMode, available, info: detectedInfo };
319
+ }
320
+
321
+ /**
322
+ * Install semantic search dependencies with optional GPU acceleration
323
+ * @param gpuMode - GPU acceleration mode: 'cpu', 'cuda', or 'directml'
241
324
  * @returns Bootstrap result
242
325
  */
243
- async function installSemantic(): Promise<BootstrapResult> {
326
+ async function installSemantic(gpuMode: GpuMode = 'cpu'): Promise<BootstrapResult> {
244
327
  // First ensure CodexLens is installed
245
328
  const venvStatus = await checkVenvStatus();
246
329
  if (!venvStatus.ready) {
@@ -252,42 +335,106 @@ async function installSemantic(): Promise<BootstrapResult> {
252
335
  ? join(CODEXLENS_VENV, 'Scripts', 'pip.exe')
253
336
  : join(CODEXLENS_VENV, 'bin', 'pip');
254
337
 
338
+ // IMPORTANT: Uninstall all onnxruntime variants first to prevent conflicts
339
+ // Having multiple onnxruntime packages causes provider detection issues
340
+ const onnxVariants = ['onnxruntime', 'onnxruntime-gpu', 'onnxruntime-directml'];
341
+ console.log(`[CodexLens] Cleaning up existing ONNX Runtime packages...`);
342
+
343
+ for (const pkg of onnxVariants) {
344
+ try {
345
+ execSync(`"${pipPath}" uninstall ${pkg} -y`, { stdio: 'pipe' });
346
+ console.log(`[CodexLens] Removed ${pkg}`);
347
+ } catch {
348
+ // Package not installed, ignore
349
+ }
350
+ }
351
+
352
+ // Build package list based on GPU mode
353
+ const packages = ['numpy>=1.24', 'fastembed>=0.5', 'hnswlib>=0.8.0'];
354
+
355
+ let modeDescription = 'CPU (ONNX Runtime)';
356
+ let onnxPackage = 'onnxruntime>=1.18.0'; // Default CPU
357
+
358
+ if (gpuMode === 'cuda') {
359
+ onnxPackage = 'onnxruntime-gpu>=1.18.0';
360
+ modeDescription = 'NVIDIA CUDA GPU acceleration';
361
+ } else if (gpuMode === 'directml') {
362
+ onnxPackage = 'onnxruntime-directml>=1.18.0';
363
+ modeDescription = 'Windows DirectML GPU acceleration';
364
+ }
365
+
255
366
  return new Promise((resolve) => {
256
- console.log('[CodexLens] Installing semantic search dependencies (fastembed)...');
257
- console.log('[CodexLens] Using ONNX-based fastembed backend (~200MB)');
367
+ console.log(`[CodexLens] Installing semantic search dependencies...`);
368
+ console.log(`[CodexLens] Mode: ${modeDescription}`);
369
+ console.log(`[CodexLens] ONNX Runtime: ${onnxPackage}`);
370
+ console.log(`[CodexLens] Packages: ${packages.join(', ')}`);
258
371
 
259
- const child = spawn(pipPath, ['install', 'numpy>=1.24', 'fastembed>=0.2'], {
372
+ // Install ONNX Runtime first with force-reinstall to ensure clean state
373
+ const installOnnx = spawn(pipPath, ['install', '--force-reinstall', onnxPackage], {
260
374
  stdio: ['ignore', 'pipe', 'pipe'],
261
- timeout: 600000, // 10 minutes for potential model download
375
+ timeout: 600000, // 10 minutes for GPU packages
262
376
  });
263
377
 
264
- let stdout = '';
265
- let stderr = '';
378
+ let onnxStdout = '';
379
+ let onnxStderr = '';
266
380
 
267
- child.stdout.on('data', (data) => {
268
- stdout += data.toString();
269
- // Log progress
381
+ installOnnx.stdout.on('data', (data) => {
382
+ onnxStdout += data.toString();
270
383
  const line = data.toString().trim();
271
- if (line.includes('Downloading') || line.includes('Installing') || line.includes('Collecting')) {
384
+ if (line.includes('Downloading') || line.includes('Installing')) {
272
385
  console.log(`[CodexLens] ${line}`);
273
386
  }
274
387
  });
275
388
 
276
- child.stderr.on('data', (data) => {
277
- stderr += data.toString();
389
+ installOnnx.stderr.on('data', (data) => {
390
+ onnxStderr += data.toString();
278
391
  });
279
392
 
280
- child.on('close', (code) => {
281
- if (code === 0) {
282
- console.log('[CodexLens] Semantic dependencies installed successfully');
283
- resolve({ success: true });
284
- } else {
285
- resolve({ success: false, error: `Installation failed: ${stderr || stdout}` });
393
+ installOnnx.on('close', (onnxCode) => {
394
+ if (onnxCode !== 0) {
395
+ resolve({ success: false, error: `Failed to install ${onnxPackage}: ${onnxStderr || onnxStdout}` });
396
+ return;
286
397
  }
398
+
399
+ console.log(`[CodexLens] ${onnxPackage} installed successfully`);
400
+
401
+ // Now install remaining packages
402
+ const child = spawn(pipPath, ['install', ...packages], {
403
+ stdio: ['ignore', 'pipe', 'pipe'],
404
+ timeout: 600000,
405
+ });
406
+
407
+ let stdout = '';
408
+ let stderr = '';
409
+
410
+ child.stdout.on('data', (data) => {
411
+ stdout += data.toString();
412
+ const line = data.toString().trim();
413
+ if (line.includes('Downloading') || line.includes('Installing') || line.includes('Collecting')) {
414
+ console.log(`[CodexLens] ${line}`);
415
+ }
416
+ });
417
+
418
+ child.stderr.on('data', (data) => {
419
+ stderr += data.toString();
420
+ });
421
+
422
+ child.on('close', (code) => {
423
+ if (code === 0) {
424
+ console.log(`[CodexLens] Semantic dependencies installed successfully (${gpuMode} mode)`);
425
+ resolve({ success: true, message: `Installed with ${modeDescription}` });
426
+ } else {
427
+ resolve({ success: false, error: `Installation failed: ${stderr || stdout}` });
428
+ }
429
+ });
430
+
431
+ child.on('error', (err) => {
432
+ resolve({ success: false, error: `Failed to run pip: ${err.message}` });
433
+ });
287
434
  });
288
435
 
289
- child.on('error', (err) => {
290
- resolve({ success: false, error: `Failed to run pip: ${err.message}` });
436
+ installOnnx.on('error', (err) => {
437
+ resolve({ success: false, error: `Failed to install ONNX Runtime: ${err.message}` });
291
438
  });
292
439
  });
293
440
  }
@@ -1126,7 +1273,8 @@ function isIndexingInProgress(): boolean {
1126
1273
  export type { ProgressInfo, ExecuteOptions };
1127
1274
 
1128
1275
  // Export for direct usage
1129
- export { ensureReady, executeCodexLens, checkVenvStatus, bootstrapVenv, checkSemanticStatus, installSemantic, uninstallCodexLens, cancelIndexing, isIndexingInProgress };
1276
+ export { ensureReady, executeCodexLens, checkVenvStatus, bootstrapVenv, checkSemanticStatus, installSemantic, detectGpuSupport, uninstallCodexLens, cancelIndexing, isIndexingInProgress };
1277
+ export type { GpuMode };
1130
1278
 
1131
1279
  // Backward-compatible export for tests
1132
1280
  export const codexLensTool = {
@@ -1,48 +1,66 @@
1
- [build-system]
2
- requires = ["setuptools>=61.0"]
3
- build-backend = "setuptools.build_meta"
4
-
5
- [project]
6
- name = "codex-lens"
7
- version = "0.1.0"
8
- description = "CodexLens multi-modal code analysis platform"
9
- readme = "README.md"
10
- requires-python = ">=3.10"
11
- license = { text = "MIT" }
12
- authors = [
13
- { name = "CodexLens contributors" }
14
- ]
15
- dependencies = [
16
- "typer>=0.9",
17
- "rich>=13",
18
- "pydantic>=2.0",
19
- "tree-sitter>=0.20",
20
- "tree-sitter-python>=0.25",
21
- "tree-sitter-javascript>=0.25",
22
- "tree-sitter-typescript>=0.23",
23
- "pathspec>=0.11",
24
- ]
25
-
26
- [project.optional-dependencies]
27
- # Semantic search using fastembed (ONNX-based, lightweight ~200MB)
28
- semantic = [
29
- "numpy>=1.24",
30
- "fastembed>=0.2",
31
- "hnswlib>=0.8.0",
32
- ]
33
-
34
- # Encoding detection for non-UTF8 files
35
- encoding = [
36
- "chardet>=5.0",
37
- ]
38
-
39
- # Full features including tiktoken for accurate token counting
40
- full = [
41
- "tiktoken>=0.5.0",
42
- ]
43
-
44
- [project.urls]
45
- Homepage = "https://github.com/openai/codex-lens"
46
-
47
- [tool.setuptools]
48
- package-dir = { "" = "src" }
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "codex-lens"
7
+ version = "0.1.0"
8
+ description = "CodexLens multi-modal code analysis platform"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = { text = "MIT" }
12
+ authors = [
13
+ { name = "CodexLens contributors" }
14
+ ]
15
+ dependencies = [
16
+ "typer>=0.9",
17
+ "rich>=13",
18
+ "pydantic>=2.0",
19
+ "tree-sitter>=0.20",
20
+ "tree-sitter-python>=0.25",
21
+ "tree-sitter-javascript>=0.25",
22
+ "tree-sitter-typescript>=0.23",
23
+ "pathspec>=0.11",
24
+ ]
25
+
26
+ [project.optional-dependencies]
27
+ # Semantic search using fastembed (ONNX-based, lightweight ~200MB)
28
+ semantic = [
29
+ "numpy>=1.24",
30
+ "fastembed>=0.2",
31
+ "hnswlib>=0.8.0",
32
+ ]
33
+
34
+ # GPU acceleration for semantic search (NVIDIA CUDA)
35
+ # Install with: pip install codexlens[semantic-gpu]
36
+ semantic-gpu = [
37
+ "numpy>=1.24",
38
+ "fastembed>=0.2",
39
+ "hnswlib>=0.8.0",
40
+ "onnxruntime-gpu>=1.15.0", # CUDA support
41
+ ]
42
+
43
+ # GPU acceleration for Windows (DirectML - supports NVIDIA/AMD/Intel)
44
+ # Install with: pip install codexlens[semantic-directml]
45
+ semantic-directml = [
46
+ "numpy>=1.24",
47
+ "fastembed>=0.2",
48
+ "hnswlib>=0.8.0",
49
+ "onnxruntime-directml>=1.15.0", # DirectML support
50
+ ]
51
+
52
+ # Encoding detection for non-UTF8 files
53
+ encoding = [
54
+ "chardet>=5.0",
55
+ ]
56
+
57
+ # Full features including tiktoken for accurate token counting
58
+ full = [
59
+ "tiktoken>=0.5.0",
60
+ ]
61
+
62
+ [project.urls]
63
+ Homepage = "https://github.com/openai/codex-lens"
64
+
65
+ [tool.setuptools]
66
+ package-dir = { "" = "src" }
@@ -20,8 +20,8 @@ except ImportError:
20
20
  logger = logging.getLogger(__name__)
21
21
 
22
22
  # Embedding batch size - larger values improve throughput on modern hardware
23
- # Default 64 balances memory usage and GPU/CPU utilization
24
- EMBEDDING_BATCH_SIZE = 64 # Increased from 8 for better performance
23
+ # Benchmark: 256 gives ~2.35x speedup over 64 with DirectML GPU acceleration
24
+ EMBEDDING_BATCH_SIZE = 256 # Optimized from 64 based on batch size benchmarks
25
25
 
26
26
 
27
27
  def _generate_chunks_from_cursor(
@@ -275,7 +275,7 @@ def generate_embeddings(
275
275
  total_chunks_created = 0
276
276
  total_files_processed = 0
277
277
  FILE_BATCH_SIZE = 100 # Process 100 files at a time
278
- # EMBEDDING_BATCH_SIZE is defined at module level (default: 64)
278
+ # EMBEDDING_BATCH_SIZE is defined at module level (default: 256)
279
279
 
280
280
  try:
281
281
  with VectorStore(index_path) as vector_store:
@@ -14,6 +14,8 @@ except ImportError:
14
14
 
15
15
 
16
16
  # Model profiles with metadata
17
+ # Note: 768d is max recommended dimension for optimal performance/quality balance
18
+ # 1024d models are available but not recommended due to higher resource usage
17
19
  MODEL_PROFILES = {
18
20
  "fast": {
19
21
  "model_name": "BAAI/bge-small-en-v1.5",
@@ -21,6 +23,15 @@ MODEL_PROFILES = {
21
23
  "size_mb": 80,
22
24
  "description": "Fast, lightweight, English-optimized",
23
25
  "use_case": "Quick prototyping, resource-constrained environments",
26
+ "recommended": True,
27
+ },
28
+ "base": {
29
+ "model_name": "BAAI/bge-base-en-v1.5",
30
+ "dimensions": 768,
31
+ "size_mb": 220,
32
+ "description": "General purpose, good balance of speed and quality",
33
+ "use_case": "General text search, documentation",
34
+ "recommended": True,
24
35
  },
25
36
  "code": {
26
37
  "model_name": "jinaai/jina-embeddings-v2-base-code",
@@ -28,20 +39,31 @@ MODEL_PROFILES = {
28
39
  "size_mb": 150,
29
40
  "description": "Code-optimized, best for programming languages",
30
41
  "use_case": "Open source projects, code semantic search",
42
+ "recommended": True,
43
+ },
44
+ "minilm": {
45
+ "model_name": "sentence-transformers/all-MiniLM-L6-v2",
46
+ "dimensions": 384,
47
+ "size_mb": 90,
48
+ "description": "Popular lightweight model, good quality",
49
+ "use_case": "General purpose, low resource environments",
50
+ "recommended": True,
31
51
  },
32
52
  "multilingual": {
33
53
  "model_name": "intfloat/multilingual-e5-large",
34
54
  "dimensions": 1024,
35
55
  "size_mb": 1000,
36
- "description": "Multilingual + code support",
56
+ "description": "Multilingual + code support (high resource usage)",
37
57
  "use_case": "Enterprise multilingual projects",
58
+ "recommended": False, # 1024d not recommended
38
59
  },
39
60
  "balanced": {
40
61
  "model_name": "mixedbread-ai/mxbai-embed-large-v1",
41
62
  "dimensions": 1024,
42
63
  "size_mb": 600,
43
- "description": "High accuracy, general purpose",
64
+ "description": "High accuracy, general purpose (high resource usage)",
44
65
  "use_case": "High-quality semantic search, balanced performance",
66
+ "recommended": False, # 1024d not recommended
45
67
  },
46
68
  }
47
69