@techwavedev/agi-agent-kit 1.1.3

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 (196) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +147 -0
  3. package/bin/init.js +471 -0
  4. package/package.json +36 -0
  5. package/templates/.agent/agents/backend-specialist.md +263 -0
  6. package/templates/.agent/agents/code-archaeologist.md +106 -0
  7. package/templates/.agent/agents/database-architect.md +226 -0
  8. package/templates/.agent/agents/debugger.md +225 -0
  9. package/templates/.agent/agents/devops-engineer.md +242 -0
  10. package/templates/.agent/agents/documentation-writer.md +104 -0
  11. package/templates/.agent/agents/explorer-agent.md +73 -0
  12. package/templates/.agent/agents/frontend-specialist.md +556 -0
  13. package/templates/.agent/agents/game-developer.md +162 -0
  14. package/templates/.agent/agents/mobile-developer.md +377 -0
  15. package/templates/.agent/agents/orchestrator.md +416 -0
  16. package/templates/.agent/agents/penetration-tester.md +188 -0
  17. package/templates/.agent/agents/performance-optimizer.md +187 -0
  18. package/templates/.agent/agents/product-manager.md +112 -0
  19. package/templates/.agent/agents/project-planner.md +403 -0
  20. package/templates/.agent/agents/qa-automation-engineer.md +109 -0
  21. package/templates/.agent/agents/security-auditor.md +170 -0
  22. package/templates/.agent/agents/seo-specialist.md +111 -0
  23. package/templates/.agent/agents/test-engineer.md +158 -0
  24. package/templates/.agent/rules/GEMINI.md +253 -0
  25. package/templates/.agent/workflows/brainstorm.md +113 -0
  26. package/templates/.agent/workflows/create.md +59 -0
  27. package/templates/.agent/workflows/debug.md +103 -0
  28. package/templates/.agent/workflows/deploy.md +176 -0
  29. package/templates/.agent/workflows/enhance.md +63 -0
  30. package/templates/.agent/workflows/orchestrate.md +237 -0
  31. package/templates/.agent/workflows/plan.md +89 -0
  32. package/templates/.agent/workflows/preview.md +81 -0
  33. package/templates/.agent/workflows/status.md +86 -0
  34. package/templates/.agent/workflows/test.md +144 -0
  35. package/templates/.agent/workflows/ui-ux-pro-max.md +296 -0
  36. package/templates/base/.env.example +54 -0
  37. package/templates/base/AGENTS.md +463 -0
  38. package/templates/base/requirements.txt +6 -0
  39. package/templates/base/skill-creator/LICENSE.txt +202 -0
  40. package/templates/base/skill-creator/SKILL_skillcreator.md +389 -0
  41. package/templates/base/skill-creator/references/output-patterns.md +82 -0
  42. package/templates/base/skill-creator/references/workflows.md +28 -0
  43. package/templates/base/skill-creator/scripts/init_skill.py +304 -0
  44. package/templates/base/skill-creator/scripts/package_skill.py +110 -0
  45. package/templates/base/skill-creator/scripts/quick_validate.py +95 -0
  46. package/templates/base/skill-creator/scripts/update_catalog.py +371 -0
  47. package/templates/skills/core/README.md +21 -0
  48. package/templates/skills/core/documentation/SKILL.md +351 -0
  49. package/templates/skills/core/documentation/references/best_practices.md +201 -0
  50. package/templates/skills/core/documentation/scripts/analyze_code.py +307 -0
  51. package/templates/skills/core/documentation/scripts/detect_changes.py +460 -0
  52. package/templates/skills/core/documentation/scripts/generate_changelog.py +312 -0
  53. package/templates/skills/core/documentation/scripts/sync_docs.py +272 -0
  54. package/templates/skills/core/documentation/scripts/update_skill_docs.py +366 -0
  55. package/templates/skills/core/pdf-reader/SKILL.md +104 -0
  56. package/templates/skills/core/pdf-reader/references/pdf_libraries.md +83 -0
  57. package/templates/skills/core/pdf-reader/scripts/extract_text.py +295 -0
  58. package/templates/skills/core/qdrant-memory/SKILL.md +435 -0
  59. package/templates/skills/core/qdrant-memory/references/advanced_patterns.md +375 -0
  60. package/templates/skills/core/qdrant-memory/references/collection_schemas.md +229 -0
  61. package/templates/skills/core/qdrant-memory/references/complete_guide.md +724 -0
  62. package/templates/skills/core/qdrant-memory/references/embedding_models.md +325 -0
  63. package/templates/skills/core/qdrant-memory/scripts/benchmark_token_savings.py +640 -0
  64. package/templates/skills/core/qdrant-memory/scripts/embedding_utils.py +323 -0
  65. package/templates/skills/core/qdrant-memory/scripts/hybrid_search.py +214 -0
  66. package/templates/skills/core/qdrant-memory/scripts/init_collection.py +193 -0
  67. package/templates/skills/core/qdrant-memory/scripts/memory_retrieval.py +345 -0
  68. package/templates/skills/core/qdrant-memory/scripts/semantic_cache.py +282 -0
  69. package/templates/skills/core/qdrant-memory/scripts/test_skill.py +655 -0
  70. package/templates/skills/core/webcrawler/SKILL.md +292 -0
  71. package/templates/skills/core/webcrawler/references/advanced_crawling.md +181 -0
  72. package/templates/skills/core/webcrawler/scripts/crawl_docs.py +532 -0
  73. package/templates/skills/core/webcrawler/scripts/extract_page.py +189 -0
  74. package/templates/skills/core/webcrawler/scripts/filter_docs.py +200 -0
  75. package/templates/skills/knowledge/api-patterns/SKILL.md +81 -0
  76. package/templates/skills/knowledge/api-patterns/api-style.md +42 -0
  77. package/templates/skills/knowledge/api-patterns/auth.md +24 -0
  78. package/templates/skills/knowledge/api-patterns/documentation.md +26 -0
  79. package/templates/skills/knowledge/api-patterns/graphql.md +41 -0
  80. package/templates/skills/knowledge/api-patterns/rate-limiting.md +31 -0
  81. package/templates/skills/knowledge/api-patterns/response.md +37 -0
  82. package/templates/skills/knowledge/api-patterns/rest.md +40 -0
  83. package/templates/skills/knowledge/api-patterns/scripts/api_validator.py +211 -0
  84. package/templates/skills/knowledge/api-patterns/security-testing.md +122 -0
  85. package/templates/skills/knowledge/api-patterns/trpc.md +41 -0
  86. package/templates/skills/knowledge/api-patterns/versioning.md +22 -0
  87. package/templates/skills/knowledge/app-builder/SKILL.md +75 -0
  88. package/templates/skills/knowledge/app-builder/agent-coordination.md +71 -0
  89. package/templates/skills/knowledge/app-builder/feature-building.md +53 -0
  90. package/templates/skills/knowledge/app-builder/project-detection.md +34 -0
  91. package/templates/skills/knowledge/app-builder/scaffolding.md +118 -0
  92. package/templates/skills/knowledge/app-builder/tech-stack.md +40 -0
  93. package/templates/skills/knowledge/app-builder/templates/SKILL.md +39 -0
  94. package/templates/skills/knowledge/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  95. package/templates/skills/knowledge/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  96. package/templates/skills/knowledge/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  97. package/templates/skills/knowledge/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  98. package/templates/skills/knowledge/app-builder/templates/express-api/TEMPLATE.md +83 -0
  99. package/templates/skills/knowledge/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  100. package/templates/skills/knowledge/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  101. package/templates/skills/knowledge/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  102. package/templates/skills/knowledge/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  103. package/templates/skills/knowledge/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  104. package/templates/skills/knowledge/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  105. package/templates/skills/knowledge/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  106. package/templates/skills/knowledge/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  107. package/templates/skills/knowledge/architecture/SKILL.md +55 -0
  108. package/templates/skills/knowledge/architecture/context-discovery.md +43 -0
  109. package/templates/skills/knowledge/architecture/examples.md +94 -0
  110. package/templates/skills/knowledge/architecture/pattern-selection.md +68 -0
  111. package/templates/skills/knowledge/architecture/patterns-reference.md +50 -0
  112. package/templates/skills/knowledge/architecture/trade-off-analysis.md +77 -0
  113. package/templates/skills/knowledge/bash-linux/SKILL.md +199 -0
  114. package/templates/skills/knowledge/behavioral-modes/SKILL.md +242 -0
  115. package/templates/skills/knowledge/brainstorming/SKILL.md +163 -0
  116. package/templates/skills/knowledge/brainstorming/dynamic-questioning.md +350 -0
  117. package/templates/skills/knowledge/clean-code/SKILL.md +201 -0
  118. package/templates/skills/knowledge/code-review-checklist/SKILL.md +109 -0
  119. package/templates/skills/knowledge/database-design/SKILL.md +52 -0
  120. package/templates/skills/knowledge/database-design/database-selection.md +43 -0
  121. package/templates/skills/knowledge/database-design/indexing.md +39 -0
  122. package/templates/skills/knowledge/database-design/migrations.md +48 -0
  123. package/templates/skills/knowledge/database-design/optimization.md +36 -0
  124. package/templates/skills/knowledge/database-design/orm-selection.md +30 -0
  125. package/templates/skills/knowledge/database-design/schema-design.md +56 -0
  126. package/templates/skills/knowledge/database-design/scripts/schema_validator.py +172 -0
  127. package/templates/skills/knowledge/deployment-procedures/SKILL.md +241 -0
  128. package/templates/skills/knowledge/doc.md +177 -0
  129. package/templates/skills/knowledge/documentation-templates/SKILL.md +194 -0
  130. package/templates/skills/knowledge/frontend-design/SKILL.md +396 -0
  131. package/templates/skills/knowledge/frontend-design/animation-guide.md +331 -0
  132. package/templates/skills/knowledge/frontend-design/color-system.md +311 -0
  133. package/templates/skills/knowledge/frontend-design/decision-trees.md +418 -0
  134. package/templates/skills/knowledge/frontend-design/motion-graphics.md +306 -0
  135. package/templates/skills/knowledge/frontend-design/scripts/accessibility_checker.py +183 -0
  136. package/templates/skills/knowledge/frontend-design/scripts/ux_audit.py +722 -0
  137. package/templates/skills/knowledge/frontend-design/typography-system.md +345 -0
  138. package/templates/skills/knowledge/frontend-design/ux-psychology.md +541 -0
  139. package/templates/skills/knowledge/frontend-design/visual-effects.md +383 -0
  140. package/templates/skills/knowledge/game-development/2d-games/SKILL.md +119 -0
  141. package/templates/skills/knowledge/game-development/3d-games/SKILL.md +135 -0
  142. package/templates/skills/knowledge/game-development/SKILL.md +167 -0
  143. package/templates/skills/knowledge/game-development/game-art/SKILL.md +185 -0
  144. package/templates/skills/knowledge/game-development/game-audio/SKILL.md +190 -0
  145. package/templates/skills/knowledge/game-development/game-design/SKILL.md +129 -0
  146. package/templates/skills/knowledge/game-development/mobile-games/SKILL.md +108 -0
  147. package/templates/skills/knowledge/game-development/multiplayer/SKILL.md +132 -0
  148. package/templates/skills/knowledge/game-development/pc-games/SKILL.md +144 -0
  149. package/templates/skills/knowledge/game-development/vr-ar/SKILL.md +123 -0
  150. package/templates/skills/knowledge/game-development/web-games/SKILL.md +150 -0
  151. package/templates/skills/knowledge/geo-fundamentals/SKILL.md +156 -0
  152. package/templates/skills/knowledge/geo-fundamentals/scripts/geo_checker.py +289 -0
  153. package/templates/skills/knowledge/i18n-localization/SKILL.md +154 -0
  154. package/templates/skills/knowledge/i18n-localization/scripts/i18n_checker.py +241 -0
  155. package/templates/skills/knowledge/intelligent-routing/SKILL.md +334 -0
  156. package/templates/skills/knowledge/lint-and-validate/SKILL.md +45 -0
  157. package/templates/skills/knowledge/lint-and-validate/scripts/lint_runner.py +172 -0
  158. package/templates/skills/knowledge/lint-and-validate/scripts/type_coverage.py +173 -0
  159. package/templates/skills/knowledge/mcp-builder/SKILL.md +176 -0
  160. package/templates/skills/knowledge/mobile-design/SKILL.md +394 -0
  161. package/templates/skills/knowledge/mobile-design/decision-trees.md +516 -0
  162. package/templates/skills/knowledge/mobile-design/mobile-backend.md +491 -0
  163. package/templates/skills/knowledge/mobile-design/mobile-color-system.md +420 -0
  164. package/templates/skills/knowledge/mobile-design/mobile-debugging.md +122 -0
  165. package/templates/skills/knowledge/mobile-design/mobile-design-thinking.md +357 -0
  166. package/templates/skills/knowledge/mobile-design/mobile-navigation.md +458 -0
  167. package/templates/skills/knowledge/mobile-design/mobile-performance.md +767 -0
  168. package/templates/skills/knowledge/mobile-design/mobile-testing.md +356 -0
  169. package/templates/skills/knowledge/mobile-design/mobile-typography.md +433 -0
  170. package/templates/skills/knowledge/mobile-design/platform-android.md +666 -0
  171. package/templates/skills/knowledge/mobile-design/platform-ios.md +561 -0
  172. package/templates/skills/knowledge/mobile-design/scripts/mobile_audit.py +670 -0
  173. package/templates/skills/knowledge/mobile-design/touch-psychology.md +537 -0
  174. package/templates/skills/knowledge/nextjs-best-practices/SKILL.md +203 -0
  175. package/templates/skills/knowledge/nodejs-best-practices/SKILL.md +333 -0
  176. package/templates/skills/knowledge/parallel-agents/SKILL.md +175 -0
  177. package/templates/skills/knowledge/performance-profiling/SKILL.md +143 -0
  178. package/templates/skills/knowledge/performance-profiling/scripts/lighthouse_audit.py +76 -0
  179. package/templates/skills/knowledge/plan-writing/SKILL.md +152 -0
  180. package/templates/skills/knowledge/powershell-windows/SKILL.md +167 -0
  181. package/templates/skills/knowledge/python-patterns/SKILL.md +441 -0
  182. package/templates/skills/knowledge/react-patterns/SKILL.md +198 -0
  183. package/templates/skills/knowledge/red-team-tactics/SKILL.md +199 -0
  184. package/templates/skills/knowledge/seo-fundamentals/SKILL.md +129 -0
  185. package/templates/skills/knowledge/seo-fundamentals/scripts/seo_checker.py +219 -0
  186. package/templates/skills/knowledge/server-management/SKILL.md +161 -0
  187. package/templates/skills/knowledge/systematic-debugging/SKILL.md +109 -0
  188. package/templates/skills/knowledge/tailwind-patterns/SKILL.md +269 -0
  189. package/templates/skills/knowledge/tdd-workflow/SKILL.md +149 -0
  190. package/templates/skills/knowledge/testing-patterns/SKILL.md +178 -0
  191. package/templates/skills/knowledge/testing-patterns/scripts/test_runner.py +219 -0
  192. package/templates/skills/knowledge/vulnerability-scanner/SKILL.md +276 -0
  193. package/templates/skills/knowledge/vulnerability-scanner/checklists.md +121 -0
  194. package/templates/skills/knowledge/vulnerability-scanner/scripts/security_scan.py +458 -0
  195. package/templates/skills/knowledge/webapp-testing/SKILL.md +187 -0
  196. package/templates/skills/knowledge/webapp-testing/scripts/playwright_runner.py +173 -0
@@ -0,0 +1,325 @@
1
+ # Embedding Models Reference
2
+
3
+ This document compares embedding models for semantic caching and memory retrieval.
4
+
5
+ ## Model Comparison
6
+
7
+ | Model | Provider | Dimensions | Speed | Quality | Cost | Best For |
8
+ | ------------------------ | ----------- | ---------- | -------- | --------- | -------- | ------------------ |
9
+ | **`nomic-embed-text`** | **Ollama** | **768** | **Fast** | **Good** | **Free** | **Local/M3 Mac** |
10
+ | `text-embedding-3-small` | OpenAI | 1536 | Fast | Good | Low | General use |
11
+ | `text-embedding-3-large` | OpenAI | 3072 | Medium | Excellent | Medium | High accuracy |
12
+ | `text-embedding-ada-002` | OpenAI | 1536 | Fast | Good | Low | Legacy systems |
13
+ | `all-MiniLM-L6-v2` | HuggingFace | 384 | Fastest | Good | Free | Local/private |
14
+ | `all-mpnet-base-v2` | HuggingFace | 768 | Medium | Very Good | Free | Local/balanced |
15
+ | `e5-large-v2` | HuggingFace | 1024 | Slow | Excellent | Free | Local/high quality |
16
+ | `voyage-large-2` | Voyage AI | 1024 | Medium | Excellent | Low | Code understanding |
17
+ | `jina-embeddings-v2` | Jina AI | 768 | Fast | Good | Low | Multilingual |
18
+
19
+ ---
20
+
21
+ ## Ollama (Recommended for Local/Private)
22
+
23
+ Ollama runs **entirely local** with Metal acceleration on M-series Macs. No API keys, no cloud calls, fully private.
24
+
25
+ ### Setup
26
+
27
+ ```bash
28
+ # Install
29
+ brew install ollama
30
+
31
+ # Start server (background)
32
+ ollama serve &
33
+
34
+ # Pull embedding model
35
+ ollama pull nomic-embed-text
36
+ ```
37
+
38
+ ### nomic-embed-text (Recommended)
39
+
40
+ ```python
41
+ import json
42
+ from urllib.request import Request, urlopen
43
+
44
+ OLLAMA_URL = "http://localhost:11434"
45
+
46
+ def get_embedding(text: str) -> list:
47
+ payload = {
48
+ "model": "nomic-embed-text",
49
+ "prompt": text
50
+ }
51
+
52
+ req = Request(
53
+ f"{OLLAMA_URL}/api/embeddings",
54
+ data=json.dumps(payload).encode(),
55
+ headers={"Content-Type": "application/json"},
56
+ method="POST"
57
+ )
58
+
59
+ with urlopen(req, timeout=60) as response:
60
+ result = json.loads(response.read().decode())
61
+ return result["embedding"]
62
+ ```
63
+
64
+ **Characteristics**:
65
+
66
+ - 768 dimensions
67
+ - Metal acceleration on M1/M2/M3 Macs
68
+ - ~500-1000 embeddings/second on M3
69
+ - Good quality for semantic similarity
70
+ - **100% private - no data leaves your machine**
71
+
72
+ ### Other Ollama Embedding Models
73
+
74
+ | Model | Dimensions | Size | Quality |
75
+ | ------------------- | ---------- | ----- | ------------------ |
76
+ | `nomic-embed-text` | 768 | 274MB | Good (recommended) |
77
+ | `mxbai-embed-large` | 1024 | 670MB | Better |
78
+ | `all-minilm` | 384 | 45MB | Fastest |
79
+
80
+ ```bash
81
+ # Pull alternative models
82
+ ollama pull mxbai-embed-large
83
+ ollama pull all-minilm
84
+ ```
85
+
86
+ ---
87
+
88
+ ## OpenAI Models
89
+
90
+ ### text-embedding-3-small (Recommended)
91
+
92
+ ```python
93
+ import openai
94
+
95
+ def get_embedding(text: str) -> list:
96
+ response = openai.embeddings.create(
97
+ input=text,
98
+ model="text-embedding-3-small"
99
+ )
100
+ return response.data[0].embedding
101
+ ```
102
+
103
+ **Pricing**: $0.00002 / 1K tokens (~$0.02 per 1M tokens)
104
+
105
+ **Characteristics**:
106
+
107
+ - 1536 dimensions (same as ada-002)
108
+ - 33% better quality than ada-002
109
+ - 5x cheaper than ada-002
110
+ - Supports dimension reduction
111
+
112
+ ### text-embedding-3-large
113
+
114
+ ```python
115
+ response = openai.embeddings.create(
116
+ input=text,
117
+ model="text-embedding-3-large"
118
+ )
119
+ ```
120
+
121
+ **Pricing**: $0.00013 / 1K tokens (~$0.13 per 1M tokens)
122
+
123
+ **When to use**:
124
+
125
+ - Critical cache matching (need 0.95+ precision)
126
+ - Technical documentation search
127
+ - Multi-language content
128
+
129
+ ---
130
+
131
+ ## Local Models (No API Cost)
132
+
133
+ ### all-MiniLM-L6-v2 (Fastest)
134
+
135
+ ```python
136
+ from sentence_transformers import SentenceTransformer
137
+
138
+ model = SentenceTransformer('all-MiniLM-L6-v2')
139
+
140
+ def get_embedding(text: str) -> list:
141
+ return model.encode(text).tolist()
142
+ ```
143
+
144
+ **Characteristics**:
145
+
146
+ - 384 dimensions (smaller storage)
147
+ - ~14,200 sentences/second on GPU
148
+ - Good for high-volume, low-latency
149
+ - Quality: 68.06 on MTEB
150
+
151
+ ### all-mpnet-base-v2 (Balanced)
152
+
153
+ ```python
154
+ model = SentenceTransformer('all-mpnet-base-v2')
155
+ ```
156
+
157
+ **Characteristics**:
158
+
159
+ - 768 dimensions
160
+ - ~2,800 sentences/second on GPU
161
+ - Better quality than MiniLM
162
+ - Quality: 69.57 on MTEB
163
+
164
+ ### e5-large-v2 (Highest Quality Local)
165
+
166
+ ```python
167
+ from sentence_transformers import SentenceTransformer
168
+
169
+ model = SentenceTransformer('intfloat/e5-large-v2')
170
+
171
+ def get_embedding(text: str) -> list:
172
+ # e5 models require instruction prefix
173
+ return model.encode(f"query: {text}").tolist()
174
+ ```
175
+
176
+ **Characteristics**:
177
+
178
+ - 1024 dimensions
179
+ - ~700 sentences/second on GPU
180
+ - Excellent for technical content
181
+ - Quality: 75.24 on MTEB
182
+
183
+ ---
184
+
185
+ ## Code-Specialized Models
186
+
187
+ ### voyage-code-2
188
+
189
+ Best for code understanding and technical documentation.
190
+
191
+ ```python
192
+ import voyageai
193
+
194
+ vo = voyageai.Client()
195
+
196
+ def get_embedding(text: str) -> list:
197
+ result = vo.embed(text, model="voyage-code-2")
198
+ return result.embeddings[0]
199
+ ```
200
+
201
+ **Use when**:
202
+
203
+ - Code pattern retrieval
204
+ - Technical error matching
205
+ - API documentation search
206
+
207
+ ### CodeBERT
208
+
209
+ ```python
210
+ from transformers import AutoTokenizer, AutoModel
211
+ import torch
212
+
213
+ tokenizer = AutoTokenizer.from_pretrained("microsoft/codebert-base")
214
+ model = AutoModel.from_pretrained("microsoft/codebert-base")
215
+
216
+ def get_embedding(code: str) -> list:
217
+ inputs = tokenizer(code, return_tensors="pt", truncation=True, max_length=512)
218
+ with torch.no_grad():
219
+ outputs = model(**inputs)
220
+ return outputs.last_hidden_state.mean(dim=1).squeeze().tolist()
221
+ ```
222
+
223
+ ---
224
+
225
+ ## Dimension Reduction
226
+
227
+ ### OpenAI Shortening
228
+
229
+ ```python
230
+ response = openai.embeddings.create(
231
+ input=text,
232
+ model="text-embedding-3-small",
233
+ dimensions=512 # Reduce from 1536
234
+ )
235
+ ```
236
+
237
+ **Trade-offs**:
238
+
239
+ - 512 dims: ~3% quality loss, 66% storage savings
240
+ - 256 dims: ~8% quality loss, 83% storage savings
241
+
242
+ ### PCA Reduction (Local Models)
243
+
244
+ ```python
245
+ from sklearn.decomposition import PCA
246
+
247
+ # Fit PCA on training embeddings
248
+ pca = PCA(n_components=256)
249
+ pca.fit(training_embeddings)
250
+
251
+ # Reduce new embeddings
252
+ reduced = pca.transform([embedding])
253
+ ```
254
+
255
+ ---
256
+
257
+ ## Selection Guide
258
+
259
+ ### By Use Case
260
+
261
+ | Use Case | Recommended Model |
262
+ | ------------------------ | ------------------------------- |
263
+ | **Local/M3 Mac** | **`nomic-embed-text` (Ollama)** |
264
+ | General semantic cache | `text-embedding-3-small` |
265
+ | High-precision matching | `text-embedding-3-large` |
266
+ | Local/private deployment | `nomic-embed-text` (Ollama) |
267
+ | Code pattern matching | `voyage-code-2` |
268
+ | Multi-language support | `jina-embeddings-v2` |
269
+ | Budget-conscious | `nomic-embed-text` (Ollama) |
270
+
271
+ ### By Volume
272
+
273
+ | Daily Volume | Recommended Approach |
274
+ | ------------- | -------------------- |
275
+ | Any volume | Ollama (local, free) |
276
+ | < 10K queries | OpenAI API |
277
+ | 10K - 100K | Hybrid (cache + API) |
278
+ | > 100K | Ollama (local) |
279
+
280
+ ### By Latency Requirements
281
+
282
+ | Requirement | Model | Expected Latency |
283
+ | ----------- | ----------------------- | ---------------- |
284
+ | < 10ms | Ollama nomic-embed-text | 2-5ms (M3) |
285
+ | < 10ms | Local MiniLM | 5-8ms |
286
+ | < 50ms | Local mpnet | 20-40ms |
287
+ | < 200ms | OpenAI small | 50-150ms |
288
+ | < 500ms | OpenAI large | 100-300ms |
289
+
290
+ ---
291
+
292
+ ## Environment Configuration
293
+
294
+ ```bash
295
+ # .env file
296
+
297
+ # === OLLAMA (Recommended - Local/Private) ===
298
+ EMBEDDING_PROVIDER=ollama
299
+ OLLAMA_URL=http://localhost:11434
300
+ EMBEDDING_MODEL=nomic-embed-text
301
+ EMBEDDING_DIMENSION=768
302
+
303
+ # === OPENAI (Cloud) ===
304
+ # EMBEDDING_PROVIDER=openai
305
+ # EMBEDDING_MODEL=text-embedding-3-small
306
+ # EMBEDDING_DIMENSION=1536
307
+ # OPENAI_API_KEY=sk-...
308
+ ```
309
+
310
+ ## Caching Embeddings
311
+
312
+ To avoid redundant embedding calls:
313
+
314
+ ```python
315
+ import hashlib
316
+ from functools import lru_cache
317
+
318
+ @lru_cache(maxsize=10000)
319
+ def get_cached_embedding(text_hash: str, text: str) -> tuple:
320
+ return tuple(get_embedding(text))
321
+
322
+ def embed_with_cache(text: str) -> list:
323
+ text_hash = hashlib.md5(text.encode()).hexdigest()
324
+ return list(get_cached_embedding(text_hash, text))
325
+ ```