@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.
- package/CHANGELOG.md +59 -0
- package/README.md +147 -0
- package/bin/init.js +471 -0
- package/package.json +36 -0
- package/templates/.agent/agents/backend-specialist.md +263 -0
- package/templates/.agent/agents/code-archaeologist.md +106 -0
- package/templates/.agent/agents/database-architect.md +226 -0
- package/templates/.agent/agents/debugger.md +225 -0
- package/templates/.agent/agents/devops-engineer.md +242 -0
- package/templates/.agent/agents/documentation-writer.md +104 -0
- package/templates/.agent/agents/explorer-agent.md +73 -0
- package/templates/.agent/agents/frontend-specialist.md +556 -0
- package/templates/.agent/agents/game-developer.md +162 -0
- package/templates/.agent/agents/mobile-developer.md +377 -0
- package/templates/.agent/agents/orchestrator.md +416 -0
- package/templates/.agent/agents/penetration-tester.md +188 -0
- package/templates/.agent/agents/performance-optimizer.md +187 -0
- package/templates/.agent/agents/product-manager.md +112 -0
- package/templates/.agent/agents/project-planner.md +403 -0
- package/templates/.agent/agents/qa-automation-engineer.md +109 -0
- package/templates/.agent/agents/security-auditor.md +170 -0
- package/templates/.agent/agents/seo-specialist.md +111 -0
- package/templates/.agent/agents/test-engineer.md +158 -0
- package/templates/.agent/rules/GEMINI.md +253 -0
- package/templates/.agent/workflows/brainstorm.md +113 -0
- package/templates/.agent/workflows/create.md +59 -0
- package/templates/.agent/workflows/debug.md +103 -0
- package/templates/.agent/workflows/deploy.md +176 -0
- package/templates/.agent/workflows/enhance.md +63 -0
- package/templates/.agent/workflows/orchestrate.md +237 -0
- package/templates/.agent/workflows/plan.md +89 -0
- package/templates/.agent/workflows/preview.md +81 -0
- package/templates/.agent/workflows/status.md +86 -0
- package/templates/.agent/workflows/test.md +144 -0
- package/templates/.agent/workflows/ui-ux-pro-max.md +296 -0
- package/templates/base/.env.example +54 -0
- package/templates/base/AGENTS.md +463 -0
- package/templates/base/requirements.txt +6 -0
- package/templates/base/skill-creator/LICENSE.txt +202 -0
- package/templates/base/skill-creator/SKILL_skillcreator.md +389 -0
- package/templates/base/skill-creator/references/output-patterns.md +82 -0
- package/templates/base/skill-creator/references/workflows.md +28 -0
- package/templates/base/skill-creator/scripts/init_skill.py +304 -0
- package/templates/base/skill-creator/scripts/package_skill.py +110 -0
- package/templates/base/skill-creator/scripts/quick_validate.py +95 -0
- package/templates/base/skill-creator/scripts/update_catalog.py +371 -0
- package/templates/skills/core/README.md +21 -0
- package/templates/skills/core/documentation/SKILL.md +351 -0
- package/templates/skills/core/documentation/references/best_practices.md +201 -0
- package/templates/skills/core/documentation/scripts/analyze_code.py +307 -0
- package/templates/skills/core/documentation/scripts/detect_changes.py +460 -0
- package/templates/skills/core/documentation/scripts/generate_changelog.py +312 -0
- package/templates/skills/core/documentation/scripts/sync_docs.py +272 -0
- package/templates/skills/core/documentation/scripts/update_skill_docs.py +366 -0
- package/templates/skills/core/pdf-reader/SKILL.md +104 -0
- package/templates/skills/core/pdf-reader/references/pdf_libraries.md +83 -0
- package/templates/skills/core/pdf-reader/scripts/extract_text.py +295 -0
- package/templates/skills/core/qdrant-memory/SKILL.md +435 -0
- package/templates/skills/core/qdrant-memory/references/advanced_patterns.md +375 -0
- package/templates/skills/core/qdrant-memory/references/collection_schemas.md +229 -0
- package/templates/skills/core/qdrant-memory/references/complete_guide.md +724 -0
- package/templates/skills/core/qdrant-memory/references/embedding_models.md +325 -0
- package/templates/skills/core/qdrant-memory/scripts/benchmark_token_savings.py +640 -0
- package/templates/skills/core/qdrant-memory/scripts/embedding_utils.py +323 -0
- package/templates/skills/core/qdrant-memory/scripts/hybrid_search.py +214 -0
- package/templates/skills/core/qdrant-memory/scripts/init_collection.py +193 -0
- package/templates/skills/core/qdrant-memory/scripts/memory_retrieval.py +345 -0
- package/templates/skills/core/qdrant-memory/scripts/semantic_cache.py +282 -0
- package/templates/skills/core/qdrant-memory/scripts/test_skill.py +655 -0
- package/templates/skills/core/webcrawler/SKILL.md +292 -0
- package/templates/skills/core/webcrawler/references/advanced_crawling.md +181 -0
- package/templates/skills/core/webcrawler/scripts/crawl_docs.py +532 -0
- package/templates/skills/core/webcrawler/scripts/extract_page.py +189 -0
- package/templates/skills/core/webcrawler/scripts/filter_docs.py +200 -0
- package/templates/skills/knowledge/api-patterns/SKILL.md +81 -0
- package/templates/skills/knowledge/api-patterns/api-style.md +42 -0
- package/templates/skills/knowledge/api-patterns/auth.md +24 -0
- package/templates/skills/knowledge/api-patterns/documentation.md +26 -0
- package/templates/skills/knowledge/api-patterns/graphql.md +41 -0
- package/templates/skills/knowledge/api-patterns/rate-limiting.md +31 -0
- package/templates/skills/knowledge/api-patterns/response.md +37 -0
- package/templates/skills/knowledge/api-patterns/rest.md +40 -0
- package/templates/skills/knowledge/api-patterns/scripts/api_validator.py +211 -0
- package/templates/skills/knowledge/api-patterns/security-testing.md +122 -0
- package/templates/skills/knowledge/api-patterns/trpc.md +41 -0
- package/templates/skills/knowledge/api-patterns/versioning.md +22 -0
- package/templates/skills/knowledge/app-builder/SKILL.md +75 -0
- package/templates/skills/knowledge/app-builder/agent-coordination.md +71 -0
- package/templates/skills/knowledge/app-builder/feature-building.md +53 -0
- package/templates/skills/knowledge/app-builder/project-detection.md +34 -0
- package/templates/skills/knowledge/app-builder/scaffolding.md +118 -0
- package/templates/skills/knowledge/app-builder/tech-stack.md +40 -0
- package/templates/skills/knowledge/app-builder/templates/SKILL.md +39 -0
- package/templates/skills/knowledge/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/templates/skills/knowledge/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/templates/skills/knowledge/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/templates/skills/knowledge/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/templates/skills/knowledge/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/templates/skills/knowledge/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/templates/skills/knowledge/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/templates/skills/knowledge/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/templates/skills/knowledge/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/templates/skills/knowledge/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/templates/skills/knowledge/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/templates/skills/knowledge/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/templates/skills/knowledge/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/templates/skills/knowledge/architecture/SKILL.md +55 -0
- package/templates/skills/knowledge/architecture/context-discovery.md +43 -0
- package/templates/skills/knowledge/architecture/examples.md +94 -0
- package/templates/skills/knowledge/architecture/pattern-selection.md +68 -0
- package/templates/skills/knowledge/architecture/patterns-reference.md +50 -0
- package/templates/skills/knowledge/architecture/trade-off-analysis.md +77 -0
- package/templates/skills/knowledge/bash-linux/SKILL.md +199 -0
- package/templates/skills/knowledge/behavioral-modes/SKILL.md +242 -0
- package/templates/skills/knowledge/brainstorming/SKILL.md +163 -0
- package/templates/skills/knowledge/brainstorming/dynamic-questioning.md +350 -0
- package/templates/skills/knowledge/clean-code/SKILL.md +201 -0
- package/templates/skills/knowledge/code-review-checklist/SKILL.md +109 -0
- package/templates/skills/knowledge/database-design/SKILL.md +52 -0
- package/templates/skills/knowledge/database-design/database-selection.md +43 -0
- package/templates/skills/knowledge/database-design/indexing.md +39 -0
- package/templates/skills/knowledge/database-design/migrations.md +48 -0
- package/templates/skills/knowledge/database-design/optimization.md +36 -0
- package/templates/skills/knowledge/database-design/orm-selection.md +30 -0
- package/templates/skills/knowledge/database-design/schema-design.md +56 -0
- package/templates/skills/knowledge/database-design/scripts/schema_validator.py +172 -0
- package/templates/skills/knowledge/deployment-procedures/SKILL.md +241 -0
- package/templates/skills/knowledge/doc.md +177 -0
- package/templates/skills/knowledge/documentation-templates/SKILL.md +194 -0
- package/templates/skills/knowledge/frontend-design/SKILL.md +396 -0
- package/templates/skills/knowledge/frontend-design/animation-guide.md +331 -0
- package/templates/skills/knowledge/frontend-design/color-system.md +311 -0
- package/templates/skills/knowledge/frontend-design/decision-trees.md +418 -0
- package/templates/skills/knowledge/frontend-design/motion-graphics.md +306 -0
- package/templates/skills/knowledge/frontend-design/scripts/accessibility_checker.py +183 -0
- package/templates/skills/knowledge/frontend-design/scripts/ux_audit.py +722 -0
- package/templates/skills/knowledge/frontend-design/typography-system.md +345 -0
- package/templates/skills/knowledge/frontend-design/ux-psychology.md +541 -0
- package/templates/skills/knowledge/frontend-design/visual-effects.md +383 -0
- package/templates/skills/knowledge/game-development/2d-games/SKILL.md +119 -0
- package/templates/skills/knowledge/game-development/3d-games/SKILL.md +135 -0
- package/templates/skills/knowledge/game-development/SKILL.md +167 -0
- package/templates/skills/knowledge/game-development/game-art/SKILL.md +185 -0
- package/templates/skills/knowledge/game-development/game-audio/SKILL.md +190 -0
- package/templates/skills/knowledge/game-development/game-design/SKILL.md +129 -0
- package/templates/skills/knowledge/game-development/mobile-games/SKILL.md +108 -0
- package/templates/skills/knowledge/game-development/multiplayer/SKILL.md +132 -0
- package/templates/skills/knowledge/game-development/pc-games/SKILL.md +144 -0
- package/templates/skills/knowledge/game-development/vr-ar/SKILL.md +123 -0
- package/templates/skills/knowledge/game-development/web-games/SKILL.md +150 -0
- package/templates/skills/knowledge/geo-fundamentals/SKILL.md +156 -0
- package/templates/skills/knowledge/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/templates/skills/knowledge/i18n-localization/SKILL.md +154 -0
- package/templates/skills/knowledge/i18n-localization/scripts/i18n_checker.py +241 -0
- package/templates/skills/knowledge/intelligent-routing/SKILL.md +334 -0
- package/templates/skills/knowledge/lint-and-validate/SKILL.md +45 -0
- package/templates/skills/knowledge/lint-and-validate/scripts/lint_runner.py +172 -0
- package/templates/skills/knowledge/lint-and-validate/scripts/type_coverage.py +173 -0
- package/templates/skills/knowledge/mcp-builder/SKILL.md +176 -0
- package/templates/skills/knowledge/mobile-design/SKILL.md +394 -0
- package/templates/skills/knowledge/mobile-design/decision-trees.md +516 -0
- package/templates/skills/knowledge/mobile-design/mobile-backend.md +491 -0
- package/templates/skills/knowledge/mobile-design/mobile-color-system.md +420 -0
- package/templates/skills/knowledge/mobile-design/mobile-debugging.md +122 -0
- package/templates/skills/knowledge/mobile-design/mobile-design-thinking.md +357 -0
- package/templates/skills/knowledge/mobile-design/mobile-navigation.md +458 -0
- package/templates/skills/knowledge/mobile-design/mobile-performance.md +767 -0
- package/templates/skills/knowledge/mobile-design/mobile-testing.md +356 -0
- package/templates/skills/knowledge/mobile-design/mobile-typography.md +433 -0
- package/templates/skills/knowledge/mobile-design/platform-android.md +666 -0
- package/templates/skills/knowledge/mobile-design/platform-ios.md +561 -0
- package/templates/skills/knowledge/mobile-design/scripts/mobile_audit.py +670 -0
- package/templates/skills/knowledge/mobile-design/touch-psychology.md +537 -0
- package/templates/skills/knowledge/nextjs-best-practices/SKILL.md +203 -0
- package/templates/skills/knowledge/nodejs-best-practices/SKILL.md +333 -0
- package/templates/skills/knowledge/parallel-agents/SKILL.md +175 -0
- package/templates/skills/knowledge/performance-profiling/SKILL.md +143 -0
- package/templates/skills/knowledge/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/templates/skills/knowledge/plan-writing/SKILL.md +152 -0
- package/templates/skills/knowledge/powershell-windows/SKILL.md +167 -0
- package/templates/skills/knowledge/python-patterns/SKILL.md +441 -0
- package/templates/skills/knowledge/react-patterns/SKILL.md +198 -0
- package/templates/skills/knowledge/red-team-tactics/SKILL.md +199 -0
- package/templates/skills/knowledge/seo-fundamentals/SKILL.md +129 -0
- package/templates/skills/knowledge/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/templates/skills/knowledge/server-management/SKILL.md +161 -0
- package/templates/skills/knowledge/systematic-debugging/SKILL.md +109 -0
- package/templates/skills/knowledge/tailwind-patterns/SKILL.md +269 -0
- package/templates/skills/knowledge/tdd-workflow/SKILL.md +149 -0
- package/templates/skills/knowledge/testing-patterns/SKILL.md +178 -0
- package/templates/skills/knowledge/testing-patterns/scripts/test_runner.py +219 -0
- package/templates/skills/knowledge/vulnerability-scanner/SKILL.md +276 -0
- package/templates/skills/knowledge/vulnerability-scanner/checklists.md +121 -0
- package/templates/skills/knowledge/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/templates/skills/knowledge/webapp-testing/SKILL.md +187 -0
- 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
|
+
```
|