@mytechtoday/augment-extensions 0.1.2 → 0.4.0

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 (316) hide show
  1. package/README.md +614 -39
  2. package/augment-extensions/coding-standards/bash/README.md +196 -0
  3. package/augment-extensions/coding-standards/bash/module.json +163 -0
  4. package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
  5. package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
  6. package/augment-extensions/coding-standards/css/README.md +40 -0
  7. package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
  8. package/augment-extensions/coding-standards/css/module.json +44 -0
  9. package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
  10. package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
  11. package/augment-extensions/coding-standards/html/README.md +40 -0
  12. package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
  13. package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
  14. package/augment-extensions/coding-standards/html/module.json +44 -0
  15. package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
  16. package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
  17. package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
  18. package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
  19. package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
  20. package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
  21. package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
  22. package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
  23. package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
  24. package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
  25. package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
  26. package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
  27. package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
  28. package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
  29. package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
  30. package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
  31. package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
  32. package/augment-extensions/coding-standards/js/README.md +46 -0
  33. package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
  34. package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
  35. package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
  36. package/augment-extensions/coding-standards/js/module.json +49 -0
  37. package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
  38. package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
  39. package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
  40. package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
  41. package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
  42. package/augment-extensions/coding-standards/php/README.md +248 -0
  43. package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
  44. package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
  45. package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
  46. package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
  47. package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
  48. package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
  49. package/augment-extensions/coding-standards/php/module.json +166 -0
  50. package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
  51. package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
  52. package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
  53. package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
  54. package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
  55. package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
  56. package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
  57. package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
  58. package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
  59. package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
  60. package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
  61. package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
  62. package/augment-extensions/coding-standards/php/rules/security.md +358 -0
  63. package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
  64. package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
  65. package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
  66. package/augment-extensions/coding-standards/powershell/README.md +154 -0
  67. package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
  68. package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
  69. package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
  70. package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
  71. package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
  72. package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
  73. package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
  74. package/augment-extensions/coding-standards/powershell/module.json +165 -0
  75. package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
  76. package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
  77. package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
  78. package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
  79. package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
  80. package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
  81. package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
  82. package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
  83. package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
  84. package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
  85. package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
  86. package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
  87. package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
  88. package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
  89. package/augment-extensions/coding-standards/python/README.md +12 -8
  90. package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
  91. package/augment-extensions/coding-standards/python/module.json +8 -4
  92. package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
  93. package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
  94. package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
  95. package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
  96. package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
  97. package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
  98. package/augment-extensions/collections/html-css-js/README.md +82 -0
  99. package/augment-extensions/collections/html-css-js/collection.json +41 -0
  100. package/augment-extensions/domain-rules/database/README.md +161 -0
  101. package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
  102. package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
  103. package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
  104. package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
  105. package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
  106. package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
  107. package/augment-extensions/domain-rules/database/module.json +28 -0
  108. package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
  109. package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
  110. package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
  111. package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
  112. package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
  113. package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
  114. package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
  115. package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
  116. package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
  117. package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
  118. package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
  119. package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
  120. package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
  121. package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
  122. package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
  123. package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
  124. package/augment-extensions/domain-rules/mcp/README.md +150 -0
  125. package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
  126. package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
  127. package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
  128. package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
  129. package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
  130. package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
  131. package/augment-extensions/domain-rules/mcp/module.json +49 -0
  132. package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
  133. package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
  134. package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
  135. package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
  136. package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
  137. package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
  138. package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
  139. package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
  140. package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
  141. package/augment-extensions/domain-rules/wordpress/README.md +163 -0
  142. package/augment-extensions/domain-rules/wordpress/module.json +32 -0
  143. package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -0
  144. package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -0
  145. package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -0
  146. package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -0
  147. package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -0
  148. package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -0
  149. package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -0
  150. package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -0
  151. package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -0
  152. package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -0
  153. package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -0
  154. package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -0
  155. package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -0
  156. package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -0
  157. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -0
  158. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -0
  159. package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -0
  160. package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -0
  161. package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -0
  162. package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -0
  163. package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -0
  164. package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -0
  165. package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -0
  166. package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -0
  167. package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -0
  168. package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -0
  169. package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -0
  170. package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -0
  171. package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -0
  172. package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -0
  173. package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -0
  174. package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -0
  175. package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -0
  176. package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -0
  177. package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -0
  178. package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -0
  179. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -0
  180. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -0
  181. package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -0
  182. package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -0
  183. package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -0
  184. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -0
  185. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -0
  186. package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -0
  187. package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -0
  188. package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -0
  189. package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -0
  190. package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -0
  191. package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -0
  192. package/augment-extensions/examples/rest-api-plugin/README.md +98 -0
  193. package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -0
  194. package/augment-extensions/examples/rest-api-plugin/module.json +40 -0
  195. package/augment-extensions/examples/woocommerce-extension/README.md +98 -0
  196. package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -0
  197. package/augment-extensions/examples/woocommerce-extension/module.json +40 -0
  198. package/augment-extensions/workflows/beads/module.json +4 -3
  199. package/augment-extensions/workflows/database/README.md +195 -0
  200. package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
  201. package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
  202. package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
  203. package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
  204. package/augment-extensions/workflows/database/module.json +42 -0
  205. package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
  206. package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
  207. package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
  208. package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
  209. package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
  210. package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
  211. package/augment-extensions/workflows/database/rules/workflow.md +458 -0
  212. package/augment-extensions/workflows/openspec/module.json +4 -3
  213. package/augment-extensions/workflows/wordpress-plugin/README.md +232 -0
  214. package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -0
  215. package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -0
  216. package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -0
  217. package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -0
  218. package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -0
  219. package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -0
  220. package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -0
  221. package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -0
  222. package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -0
  223. package/augment-extensions/workflows/wordpress-plugin/module.json +49 -0
  224. package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -0
  225. package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -0
  226. package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -0
  227. package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -0
  228. package/augment-extensions/writing-standards/screenplay/README.md +171 -0
  229. package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
  230. package/augment-extensions/writing-standards/screenplay/module.json +124 -0
  231. package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
  232. package/cli/MODULES.md +302 -0
  233. package/cli/dist/cli.js +142 -9
  234. package/cli/dist/cli.js.map +1 -1
  235. package/cli/dist/commands/catalog.d.ts +13 -0
  236. package/cli/dist/commands/catalog.d.ts.map +1 -0
  237. package/cli/dist/commands/catalog.js +104 -0
  238. package/cli/dist/commands/catalog.js.map +1 -0
  239. package/cli/dist/commands/gui.d.ts +6 -0
  240. package/cli/dist/commands/gui.d.ts.map +1 -0
  241. package/cli/dist/commands/gui.js +211 -0
  242. package/cli/dist/commands/gui.js.map +1 -0
  243. package/cli/dist/commands/init.d.ts.map +1 -1
  244. package/cli/dist/commands/init.js +12 -0
  245. package/cli/dist/commands/init.js.map +1 -1
  246. package/cli/dist/commands/install-rules.d.ts +14 -0
  247. package/cli/dist/commands/install-rules.d.ts.map +1 -0
  248. package/cli/dist/commands/install-rules.js +127 -0
  249. package/cli/dist/commands/install-rules.js.map +1 -0
  250. package/cli/dist/commands/link.d.ts.map +1 -1
  251. package/cli/dist/commands/link.js +9 -11
  252. package/cli/dist/commands/link.js.map +1 -1
  253. package/cli/dist/commands/list.d.ts.map +1 -1
  254. package/cli/dist/commands/list.js +11 -28
  255. package/cli/dist/commands/list.js.map +1 -1
  256. package/cli/dist/commands/mcp.d.ts +48 -0
  257. package/cli/dist/commands/mcp.d.ts.map +1 -0
  258. package/cli/dist/commands/mcp.js +229 -0
  259. package/cli/dist/commands/mcp.js.map +1 -0
  260. package/cli/dist/commands/self-remove.d.ts +7 -0
  261. package/cli/dist/commands/self-remove.d.ts.map +1 -0
  262. package/cli/dist/commands/self-remove.js +179 -0
  263. package/cli/dist/commands/self-remove.js.map +1 -0
  264. package/cli/dist/commands/show.d.ts.map +1 -1
  265. package/cli/dist/commands/show.js +42 -71
  266. package/cli/dist/commands/show.js.map +1 -1
  267. package/cli/dist/commands/skill.d.ts +67 -0
  268. package/cli/dist/commands/skill.d.ts.map +1 -0
  269. package/cli/dist/commands/skill.js +513 -0
  270. package/cli/dist/commands/skill.js.map +1 -0
  271. package/cli/dist/commands/unlink.d.ts +6 -0
  272. package/cli/dist/commands/unlink.d.ts.map +1 -0
  273. package/cli/dist/commands/unlink.js +115 -0
  274. package/cli/dist/commands/unlink.js.map +1 -0
  275. package/cli/dist/commands/validate.d.ts +6 -0
  276. package/cli/dist/commands/validate.d.ts.map +1 -0
  277. package/cli/dist/commands/validate.js +159 -0
  278. package/cli/dist/commands/validate.js.map +1 -0
  279. package/cli/dist/utils/catalog-sync.d.ts +22 -0
  280. package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
  281. package/cli/dist/utils/catalog-sync.js +157 -0
  282. package/cli/dist/utils/catalog-sync.js.map +1 -0
  283. package/cli/dist/utils/character-count.d.ts +56 -0
  284. package/cli/dist/utils/character-count.d.ts.map +1 -0
  285. package/cli/dist/utils/character-count.js +190 -0
  286. package/cli/dist/utils/character-count.js.map +1 -0
  287. package/cli/dist/utils/documentation-validator.d.ts +18 -0
  288. package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
  289. package/cli/dist/utils/documentation-validator.js +233 -0
  290. package/cli/dist/utils/documentation-validator.js.map +1 -0
  291. package/cli/dist/utils/install-rules.d.ts +32 -0
  292. package/cli/dist/utils/install-rules.d.ts.map +1 -0
  293. package/cli/dist/utils/install-rules.js +375 -0
  294. package/cli/dist/utils/install-rules.js.map +1 -0
  295. package/cli/dist/utils/mcp-integration.d.ts +70 -0
  296. package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
  297. package/cli/dist/utils/mcp-integration.js +292 -0
  298. package/cli/dist/utils/mcp-integration.js.map +1 -0
  299. package/cli/dist/utils/module-system.d.ts +153 -0
  300. package/cli/dist/utils/module-system.d.ts.map +1 -0
  301. package/cli/dist/utils/module-system.js +528 -0
  302. package/cli/dist/utils/module-system.js.map +1 -0
  303. package/cli/dist/utils/modules-catalog.d.ts +33 -0
  304. package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
  305. package/cli/dist/utils/modules-catalog.js +163 -0
  306. package/cli/dist/utils/modules-catalog.js.map +1 -0
  307. package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
  308. package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
  309. package/cli/dist/utils/rule-install-hooks.js +224 -0
  310. package/cli/dist/utils/rule-install-hooks.js.map +1 -0
  311. package/cli/dist/utils/skill-system.d.ts +95 -0
  312. package/cli/dist/utils/skill-system.d.ts.map +1 -0
  313. package/cli/dist/utils/skill-system.js +313 -0
  314. package/cli/dist/utils/skill-system.js.map +1 -0
  315. package/modules.md +534 -70
  316. package/package.json +12 -3
@@ -0,0 +1,858 @@
1
+ # Vector Embeddings
2
+
3
+ ## Overview
4
+
5
+ This document covers vector embedding fundamentals, including embedding models (OpenAI, Cohere, sentence-transformers), embedding dimensions, chunking strategies, metadata storage, embedding updates, versioning, batch processing, and cost optimization.
6
+
7
+ ---
8
+
9
+ ## What are Vector Embeddings?
10
+
11
+ ### Definition
12
+
13
+ **Vector Embedding**: A numerical representation of data (text, images, audio) as a high-dimensional vector
14
+
15
+ **Key Concepts:**
16
+ - Converts unstructured data to structured vectors
17
+ - Captures semantic meaning in numerical form
18
+ - Similar items have similar embeddings (close in vector space)
19
+ - Enables mathematical operations on meaning
20
+
21
+ **Example:**
22
+ ```
23
+ Text: "The cat sat on the mat"
24
+ Embedding: [0.234, -0.567, 0.891, ..., 0.123] # 1536 dimensions
25
+
26
+ Text: "A feline rested on the rug"
27
+ Embedding: [0.241, -0.553, 0.879, ..., 0.118] # Similar vector!
28
+ ```
29
+
30
+ ### How Embeddings Work
31
+
32
+ **1. Training:**
33
+ - ML models trained on large datasets
34
+ - Learn to represent semantic meaning as vectors
35
+ - Similar meanings → similar vectors
36
+
37
+ **2. Generation:**
38
+ - Input data (text, image, etc.)
39
+ - Model processes input
40
+ - Outputs fixed-size vector
41
+
42
+ **3. Usage:**
43
+ - Store vectors in vector database
44
+ - Compare vectors using distance metrics
45
+ - Find similar items by vector similarity
46
+
47
+ ---
48
+
49
+ ## Embedding Models
50
+
51
+ ### Popular Embedding Models
52
+
53
+ **OpenAI Embeddings**
54
+ - **Model**: `text-embedding-3-small`, `text-embedding-3-large`
55
+ - **Dimensions**: 1536 (small), 3072 (large)
56
+ - **Max Input**: 8191 tokens
57
+ - **Cost**: $0.02 / 1M tokens (small), $0.13 / 1M tokens (large)
58
+ - **Best for**: General-purpose text embeddings, high quality
59
+ - **API**: OpenAI API (requires API key)
60
+
61
+ ```python
62
+ from openai import OpenAI
63
+
64
+ client = OpenAI(api_key="your-api-key")
65
+
66
+ response = client.embeddings.create(
67
+ model="text-embedding-3-small",
68
+ input="Your text here"
69
+ )
70
+
71
+ embedding = response.data[0].embedding # 1536-dimensional vector
72
+ ```
73
+
74
+ **Cohere Embeddings**
75
+ - **Model**: `embed-english-v3.0`, `embed-multilingual-v3.0`
76
+ - **Dimensions**: 1024 (default), configurable
77
+ - **Max Input**: 512 tokens
78
+ - **Cost**: $0.10 / 1M tokens
79
+ - **Best for**: Multilingual support, semantic search
80
+ - **API**: Cohere API (requires API key)
81
+
82
+ ```python
83
+ import cohere
84
+
85
+ co = cohere.Client("your-api-key")
86
+
87
+ response = co.embed(
88
+ texts=["Your text here"],
89
+ model="embed-english-v3.0",
90
+ input_type="search_document" # or "search_query"
91
+ )
92
+
93
+ embedding = response.embeddings[0] # 1024-dimensional vector
94
+ ```
95
+
96
+ **Sentence Transformers (Open Source)**
97
+ - **Models**: `all-MiniLM-L6-v2`, `all-mpnet-base-v2`, `multi-qa-mpnet-base-dot-v1`
98
+ - **Dimensions**: 384 (MiniLM), 768 (mpnet)
99
+ - **Max Input**: 256-512 tokens (model-dependent)
100
+ - **Cost**: Free (self-hosted)
101
+ - **Best for**: Self-hosting, cost optimization, privacy
102
+ - **Library**: Hugging Face Transformers
103
+
104
+ ```python
105
+ from sentence_transformers import SentenceTransformer
106
+
107
+ model = SentenceTransformer('all-MiniLM-L6-v2')
108
+
109
+ embedding = model.encode("Your text here") # 384-dimensional vector
110
+ ```
111
+
112
+ **Voyage AI**
113
+ - **Model**: `voyage-2`, `voyage-code-2`
114
+ - **Dimensions**: 1024
115
+ - **Max Input**: 16000 tokens
116
+ - **Cost**: $0.12 / 1M tokens
117
+ - **Best for**: Long documents, code embeddings
118
+ - **API**: Voyage AI API
119
+
120
+ **Google Vertex AI (PaLM)**
121
+ - **Model**: `textembedding-gecko`
122
+ - **Dimensions**: 768
123
+ - **Max Input**: 3072 tokens
124
+ - **Cost**: $0.025 / 1M tokens
125
+ - **Best for**: Google Cloud users
126
+ - **API**: Google Cloud Vertex AI
127
+
128
+ ### Model Selection Criteria
129
+
130
+ | Model | Dimensions | Quality | Cost | Speed | Best For |
131
+ |-------|------------|---------|------|-------|----------|
132
+ | OpenAI (large) | 3072 | Highest | High | Medium | Production, high quality |
133
+ | OpenAI (small) | 1536 | High | Medium | Fast | Production, balanced |
134
+ | Cohere | 1024 | High | Medium | Fast | Multilingual, semantic search |
135
+ | Sentence Transformers | 384-768 | Medium | Free | Fast | Self-hosting, cost optimization |
136
+ | Voyage AI | 1024 | High | Medium | Medium | Long documents, code |
137
+
138
+ **Recommendation**:
139
+ - **Production**: OpenAI `text-embedding-3-small` (balanced quality/cost)
140
+ - **Self-hosted**: Sentence Transformers `all-mpnet-base-v2` (best quality)
141
+ - **Multilingual**: Cohere `embed-multilingual-v3.0`
142
+ - **Code**: Voyage AI `voyage-code-2`
143
+
144
+ ---
145
+
146
+ ## Embedding Dimensions
147
+
148
+ ### Understanding Dimensions
149
+
150
+ **Dimension**: Number of values in the embedding vector
151
+
152
+ **Trade-offs:**
153
+ - **Higher dimensions** (1536, 3072):
154
+ - More expressive (capture more nuance)
155
+ - Better quality (more accurate similarity)
156
+ - Slower search (more computations)
157
+ - More storage (larger vectors)
158
+
159
+ - **Lower dimensions** (384, 768):
160
+ - Less expressive (less nuance)
161
+ - Lower quality (less accurate)
162
+ - Faster search (fewer computations)
163
+ - Less storage (smaller vectors)
164
+
165
+ ### Dimension Recommendations
166
+
167
+ **Small datasets (< 100k documents):**
168
+ - Use higher dimensions (1536+)
169
+ - Quality > speed
170
+ - Storage cost is minimal
171
+
172
+ **Large datasets (> 1M documents):**
173
+ - Consider lower dimensions (384-768)
174
+ - Speed and storage matter
175
+ - Quality may still be acceptable
176
+
177
+ **Real-time applications:**
178
+ - Use lower dimensions (384-768)
179
+ - Latency is critical
180
+ - Batch pre-compute embeddings
181
+
182
+ ---
183
+
184
+ ## Chunking Strategies
185
+
186
+ ### Why Chunking Matters
187
+
188
+ **Problem**: Documents are often too long for embedding models (max 512-8191 tokens)
189
+
190
+ **Solution**: Split documents into smaller chunks, embed each chunk separately
191
+
192
+ **Benefits:**
193
+ - Fit within model token limits
194
+ - More granular search (find specific sections)
195
+ - Better context matching
196
+
197
+ **Challenges:**
198
+ - Losing context across chunks
199
+ - Determining optimal chunk size
200
+ - Handling chunk boundaries
201
+
202
+ ### Chunking Methods
203
+
204
+ **Method 1: Fixed-Size Chunking**
205
+ ```python
206
+ def chunk_by_tokens(text, chunk_size=512, overlap=50):
207
+ """Split text into fixed-size chunks with overlap"""
208
+ tokens = tokenize(text)
209
+ chunks = []
210
+
211
+ for i in range(0, len(tokens), chunk_size - overlap):
212
+ chunk = tokens[i:i + chunk_size]
213
+ chunks.append(detokenize(chunk))
214
+
215
+ return chunks
216
+
217
+ # Example
218
+ text = "Long document..."
219
+ chunks = chunk_by_tokens(text, chunk_size=512, overlap=50)
220
+ ```
221
+
222
+ **Pros**: Simple, predictable chunk sizes
223
+ **Cons**: May split sentences/paragraphs awkwardly
224
+
225
+ **Method 2: Sentence-Based Chunking**
226
+ ```python
227
+ def chunk_by_sentences(text, max_tokens=512):
228
+ """Split text by sentences, group until max_tokens"""
229
+ sentences = split_into_sentences(text)
230
+ chunks = []
231
+ current_chunk = []
232
+ current_tokens = 0
233
+
234
+ for sentence in sentences:
235
+ sentence_tokens = count_tokens(sentence)
236
+
237
+ if current_tokens + sentence_tokens > max_tokens:
238
+ chunks.append(" ".join(current_chunk))
239
+ current_chunk = [sentence]
240
+ current_tokens = sentence_tokens
241
+ else:
242
+ current_chunk.append(sentence)
243
+ current_tokens += sentence_tokens
244
+
245
+ if current_chunk:
246
+ chunks.append(" ".join(current_chunk))
247
+
248
+ return chunks
249
+ ```
250
+
251
+ **Pros**: Preserves sentence boundaries
252
+ **Cons**: Variable chunk sizes
253
+
254
+ **Method 3: Paragraph-Based Chunking**
255
+ ```python
256
+ def chunk_by_paragraphs(text, max_tokens=512):
257
+ """Split text by paragraphs, group until max_tokens"""
258
+ paragraphs = text.split("\n\n")
259
+ chunks = []
260
+ current_chunk = []
261
+ current_tokens = 0
262
+
263
+ for para in paragraphs:
264
+ para_tokens = count_tokens(para)
265
+
266
+ if para_tokens > max_tokens:
267
+ # Split large paragraph by sentences
268
+ chunks.extend(chunk_by_sentences(para, max_tokens))
269
+ elif current_tokens + para_tokens > max_tokens:
270
+ chunks.append("\n\n".join(current_chunk))
271
+ current_chunk = [para]
272
+ current_tokens = para_tokens
273
+ else:
274
+ current_chunk.append(para)
275
+ current_tokens += para_tokens
276
+
277
+ if current_chunk:
278
+ chunks.append("\n\n".join(current_chunk))
279
+
280
+ return chunks
281
+ ```
282
+
283
+ **Pros**: Preserves logical structure
284
+ **Cons**: More complex, variable sizes
285
+
286
+ **Method 4: Semantic Chunking**
287
+ ```python
288
+ def chunk_by_semantics(text, max_tokens=512):
289
+ """Split text by semantic similarity"""
290
+ sentences = split_into_sentences(text)
291
+ embeddings = [embed(s) for s in sentences]
292
+
293
+ chunks = []
294
+ current_chunk = [sentences[0]]
295
+
296
+ for i in range(1, len(sentences)):
297
+ similarity = cosine_similarity(embeddings[i-1], embeddings[i])
298
+
299
+ if similarity < 0.7 or count_tokens(" ".join(current_chunk)) > max_tokens:
300
+ chunks.append(" ".join(current_chunk))
301
+ current_chunk = [sentences[i]]
302
+ else:
303
+ current_chunk.append(sentences[i])
304
+
305
+ if current_chunk:
306
+ chunks.append(" ".join(current_chunk))
307
+
308
+ return chunks
309
+ ```
310
+
311
+ **Pros**: Preserves semantic coherence
312
+ **Cons**: Expensive (requires embeddings), complex
313
+
314
+ ### Chunking Best Practices
315
+
316
+ **Chunk Size:**
317
+ - **Small chunks (128-256 tokens)**: More granular, better for specific queries
318
+ - **Medium chunks (256-512 tokens)**: Balanced, good default
319
+ - **Large chunks (512-1024 tokens)**: More context, better for broad queries
320
+
321
+ **Overlap:**
322
+ - Use 10-20% overlap to preserve context across boundaries
323
+ - Example: 512 token chunks with 50 token overlap
324
+
325
+ **Metadata:**
326
+ - Store chunk metadata (document ID, chunk index, position)
327
+ - Enable reconstruction of original document
328
+ - Track chunk relationships
329
+
330
+ ```python
331
+ # Example with metadata
332
+ chunks = [
333
+ {
334
+ "text": "First chunk...",
335
+ "embedding": [0.1, 0.2, ...],
336
+ "metadata": {
337
+ "document_id": "doc123",
338
+ "chunk_index": 0,
339
+ "total_chunks": 5,
340
+ "source": "article.pdf",
341
+ "page": 1
342
+ }
343
+ },
344
+ # ...
345
+ ]
346
+ ```
347
+
348
+ ---
349
+
350
+ ## Metadata Storage
351
+
352
+ ### Why Store Metadata?
353
+
354
+ **Metadata**: Additional information stored with embeddings
355
+
356
+ **Benefits:**
357
+ - Filter search results (by date, category, author, etc.)
358
+ - Reconstruct original content
359
+ - Track embedding provenance
360
+ - Enable hybrid search
361
+
362
+ ### Metadata Schema
363
+
364
+ **Essential Metadata:**
365
+ ```python
366
+ {
367
+ "id": "unique-id",
368
+ "text": "Original text content",
369
+ "embedding": [0.1, 0.2, ...],
370
+ "metadata": {
371
+ # Source information
372
+ "source": "document.pdf",
373
+ "source_type": "pdf",
374
+ "url": "https://example.com/doc",
375
+
376
+ # Content information
377
+ "title": "Document Title",
378
+ "author": "John Doe",
379
+ "category": "technology",
380
+ "tags": ["ai", "ml", "nlp"],
381
+
382
+ # Temporal information
383
+ "created_at": "2024-01-15T10:00:00Z",
384
+ "updated_at": "2024-01-20T15:30:00Z",
385
+ "published_date": "2024-01-10",
386
+
387
+ # Chunking information
388
+ "chunk_index": 0,
389
+ "total_chunks": 5,
390
+ "chunk_size": 512,
391
+
392
+ # Embedding information
393
+ "embedding_model": "text-embedding-3-small",
394
+ "embedding_version": "1.0",
395
+ "embedding_date": "2024-01-15T10:00:00Z"
396
+ }
397
+ }
398
+ ```
399
+
400
+ ### Metadata Filtering
401
+
402
+ **Example: Filter by category and date**
403
+ ```python
404
+ # Pinecone
405
+ results = index.query(
406
+ vector=query_embedding,
407
+ top_k=10,
408
+ filter={
409
+ "category": {"$eq": "technology"},
410
+ "published_date": {"$gte": "2024-01-01"}
411
+ }
412
+ )
413
+
414
+ # Weaviate
415
+ results = client.query.get("Document", ["text", "title"]) \
416
+ .with_near_vector({"vector": query_embedding}) \
417
+ .with_where({
418
+ "operator": "And",
419
+ "operands": [
420
+ {"path": ["category"], "operator": "Equal", "valueString": "technology"},
421
+ {"path": ["published_date"], "operator": "GreaterThanEqual", "valueString": "2024-01-01"}
422
+ ]
423
+ }) \
424
+ .with_limit(10) \
425
+ .do()
426
+ ```
427
+
428
+ ---
429
+
430
+ ## Embedding Updates
431
+
432
+ ### When to Update Embeddings
433
+
434
+ **Update embeddings when:**
435
+ - ✅ Content changes significantly
436
+ - ✅ Embedding model is upgraded
437
+ - ✅ Embedding quality is poor
438
+ - ✅ New metadata is added
439
+
440
+ **Don't update when:**
441
+ - ❌ Minor typo fixes
442
+ - ❌ Metadata-only changes
443
+ - ❌ Formatting changes
444
+
445
+ ### Update Strategies
446
+
447
+ **Strategy 1: Full Reindex**
448
+ ```python
449
+ def full_reindex(documents, index):
450
+ """Re-embed all documents"""
451
+ for doc in documents:
452
+ embedding = embed(doc.text)
453
+ index.upsert(id=doc.id, vector=embedding, metadata=doc.metadata)
454
+ ```
455
+
456
+ **Pros**: Clean, consistent
457
+ **Cons**: Expensive, time-consuming
458
+
459
+ **Strategy 2: Incremental Update**
460
+ ```python
461
+ def incremental_update(changed_documents, index):
462
+ """Update only changed documents"""
463
+ for doc in changed_documents:
464
+ embedding = embed(doc.text)
465
+ index.upsert(id=doc.id, vector=embedding, metadata=doc.metadata)
466
+ ```
467
+
468
+ **Pros**: Efficient, fast
469
+ **Cons**: May have inconsistent embeddings (different models)
470
+
471
+ **Strategy 3: Versioned Embeddings**
472
+ ```python
473
+ def versioned_update(documents, index, new_version):
474
+ """Create new version of embeddings"""
475
+ for doc in documents:
476
+ embedding = embed(doc.text)
477
+ index.upsert(
478
+ id=f"{doc.id}_v{new_version}",
479
+ vector=embedding,
480
+ metadata={**doc.metadata, "version": new_version}
481
+ )
482
+
483
+ # Optionally delete old versions
484
+ # delete_old_versions(index, old_version)
485
+ ```
486
+
487
+ **Pros**: Rollback capability, A/B testing
488
+ **Cons**: More storage, complex management
489
+
490
+ ---
491
+
492
+ ## Embedding Versioning
493
+
494
+ ### Why Version Embeddings?
495
+
496
+ **Reasons:**
497
+ - Track which model generated embeddings
498
+ - Enable rollback if new model performs poorly
499
+ - A/B test different embedding models
500
+ - Maintain consistency across updates
501
+
502
+ ### Versioning Schema
503
+
504
+ ```python
505
+ {
506
+ "id": "doc123",
507
+ "text": "Document content",
508
+ "embedding": [0.1, 0.2, ...],
509
+ "metadata": {
510
+ "embedding_model": "text-embedding-3-small",
511
+ "embedding_version": "v2",
512
+ "embedding_date": "2024-01-15T10:00:00Z",
513
+ "previous_versions": ["v1"]
514
+ }
515
+ }
516
+ ```
517
+
518
+ ### Version Migration
519
+
520
+ ```python
521
+ def migrate_embeddings(index, old_version, new_version, new_model):
522
+ """Migrate embeddings to new version"""
523
+ # Fetch all documents with old version
524
+ docs = index.fetch(filter={"embedding_version": old_version})
525
+
526
+ # Re-embed with new model
527
+ for doc in docs:
528
+ new_embedding = embed(doc.text, model=new_model)
529
+
530
+ # Update with new version
531
+ index.upsert(
532
+ id=doc.id,
533
+ vector=new_embedding,
534
+ metadata={
535
+ **doc.metadata,
536
+ "embedding_model": new_model,
537
+ "embedding_version": new_version,
538
+ "embedding_date": datetime.now().isoformat(),
539
+ "previous_versions": doc.metadata.get("previous_versions", []) + [old_version]
540
+ }
541
+ )
542
+ ```
543
+
544
+ ---
545
+
546
+ ## Batch Processing
547
+
548
+ ### Why Batch Process?
549
+
550
+ **Benefits:**
551
+ - Faster processing (parallel requests)
552
+ - Lower cost (batch discounts)
553
+ - Better resource utilization
554
+ - Reduced API rate limiting
555
+
556
+ ### Batch Embedding
557
+
558
+ **Example with OpenAI:**
559
+ ```python
560
+ from openai import OpenAI
561
+
562
+ client = OpenAI(api_key="your-api-key")
563
+
564
+ def batch_embed(texts, batch_size=100):
565
+ """Embed texts in batches"""
566
+ embeddings = []
567
+
568
+ for i in range(0, len(texts), batch_size):
569
+ batch = texts[i:i + batch_size]
570
+
571
+ response = client.embeddings.create(
572
+ model="text-embedding-3-small",
573
+ input=batch
574
+ )
575
+
576
+ batch_embeddings = [item.embedding for item in response.data]
577
+ embeddings.extend(batch_embeddings)
578
+
579
+ return embeddings
580
+
581
+ # Usage
582
+ texts = ["Text 1", "Text 2", ..., "Text 1000"]
583
+ embeddings = batch_embed(texts, batch_size=100)
584
+ ```
585
+
586
+ **Example with Sentence Transformers:**
587
+ ```python
588
+ from sentence_transformers import SentenceTransformer
589
+
590
+ model = SentenceTransformer('all-MiniLM-L6-v2')
591
+
592
+ def batch_embed_local(texts, batch_size=32):
593
+ """Embed texts in batches (local model)"""
594
+ embeddings = model.encode(
595
+ texts,
596
+ batch_size=batch_size,
597
+ show_progress_bar=True
598
+ )
599
+ return embeddings
600
+
601
+ # Usage
602
+ texts = ["Text 1", "Text 2", ..., "Text 10000"]
603
+ embeddings = batch_embed_local(texts, batch_size=32)
604
+ ```
605
+
606
+ ### Batch Upsert
607
+
608
+ ```python
609
+ def batch_upsert(index, documents, batch_size=100):
610
+ """Upsert documents in batches"""
611
+ for i in range(0, len(documents), batch_size):
612
+ batch = documents[i:i + batch_size]
613
+
614
+ # Prepare batch data
615
+ ids = [doc.id for doc in batch]
616
+ vectors = [doc.embedding for doc in batch]
617
+ metadata = [doc.metadata for doc in batch]
618
+
619
+ # Upsert batch
620
+ index.upsert(vectors=list(zip(ids, vectors, metadata)))
621
+ ```
622
+
623
+ ---
624
+
625
+ ## Cost Optimization
626
+
627
+ ### Embedding Cost Factors
628
+
629
+ **1. Model Selection:**
630
+ - OpenAI small: $0.02 / 1M tokens
631
+ - OpenAI large: $0.13 / 1M tokens
632
+ - Cohere: $0.10 / 1M tokens
633
+ - Sentence Transformers: Free (self-hosted)
634
+
635
+ **2. Token Count:**
636
+ - Longer texts = more tokens = higher cost
637
+ - Chunking strategy affects total tokens
638
+
639
+ **3. Update Frequency:**
640
+ - Frequent updates = higher cost
641
+ - Cache embeddings when possible
642
+
643
+ ### Cost Optimization Strategies
644
+
645
+ **Strategy 1: Use Smaller Models**
646
+ ```python
647
+ # Instead of text-embedding-3-large (expensive)
648
+ # Use text-embedding-3-small (cheaper, still good quality)
649
+ model = "text-embedding-3-small"
650
+ ```
651
+
652
+ **Strategy 2: Self-Host Open Source Models**
653
+ ```python
654
+ # Free (after infrastructure cost)
655
+ from sentence_transformers import SentenceTransformer
656
+ model = SentenceTransformer('all-MiniLM-L6-v2')
657
+ ```
658
+
659
+ **Strategy 3: Cache Embeddings**
660
+ ```python
661
+ import hashlib
662
+ import json
663
+
664
+ embedding_cache = {}
665
+
666
+ def embed_with_cache(text, model):
667
+ """Cache embeddings to avoid re-computation"""
668
+ # Create cache key
669
+ cache_key = hashlib.md5(f"{model}:{text}".encode()).hexdigest()
670
+
671
+ # Check cache
672
+ if cache_key in embedding_cache:
673
+ return embedding_cache[cache_key]
674
+
675
+ # Generate embedding
676
+ embedding = embed(text, model)
677
+
678
+ # Store in cache
679
+ embedding_cache[cache_key] = embedding
680
+
681
+ return embedding
682
+ ```
683
+
684
+ **Strategy 4: Batch Processing**
685
+ ```python
686
+ # Batch requests for better throughput and potential discounts
687
+ embeddings = batch_embed(texts, batch_size=100)
688
+ ```
689
+
690
+ **Strategy 5: Optimize Chunking**
691
+ ```python
692
+ # Larger chunks = fewer embeddings = lower cost
693
+ # But balance with search quality
694
+ chunk_size = 512 # Instead of 256
695
+ ```
696
+
697
+ ### Cost Estimation
698
+
699
+ ```python
700
+ def estimate_embedding_cost(num_documents, avg_tokens_per_doc, model="text-embedding-3-small"):
701
+ """Estimate embedding cost"""
702
+ costs = {
703
+ "text-embedding-3-small": 0.02 / 1_000_000,
704
+ "text-embedding-3-large": 0.13 / 1_000_000,
705
+ "embed-english-v3.0": 0.10 / 1_000_000
706
+ }
707
+
708
+ total_tokens = num_documents * avg_tokens_per_doc
709
+ cost_per_token = costs.get(model, 0)
710
+ total_cost = total_tokens * cost_per_token
711
+
712
+ return {
713
+ "total_tokens": total_tokens,
714
+ "total_cost": total_cost,
715
+ "cost_per_document": total_cost / num_documents
716
+ }
717
+
718
+ # Example
719
+ estimate = estimate_embedding_cost(
720
+ num_documents=100_000,
721
+ avg_tokens_per_doc=500,
722
+ model="text-embedding-3-small"
723
+ )
724
+ print(f"Total cost: ${estimate['total_cost']:.2f}")
725
+ # Output: Total cost: $1.00
726
+ ```
727
+
728
+ ---
729
+
730
+ ## Best Practices
731
+
732
+ ### 1. Model Selection
733
+
734
+ ✅ **DO:**
735
+ - Use OpenAI for production (high quality, reliable)
736
+ - Use Sentence Transformers for self-hosting (cost optimization)
737
+ - Use Cohere for multilingual (best multilingual support)
738
+ - Benchmark models on your data before choosing
739
+
740
+ ❌ **DON'T:**
741
+ - Mix embeddings from different models in same index
742
+ - Choose model based on dimensions alone
743
+ - Ignore cost implications
744
+ - Skip model evaluation
745
+
746
+ ### 2. Chunking
747
+
748
+ ✅ **DO:**
749
+ - Use 256-512 token chunks as default
750
+ - Add 10-20% overlap between chunks
751
+ - Preserve sentence/paragraph boundaries
752
+ - Store chunk metadata (index, total chunks)
753
+
754
+ ❌ **DON'T:**
755
+ - Use chunks larger than model max tokens
756
+ - Split mid-sentence without overlap
757
+ - Ignore chunk boundaries
758
+ - Forget to store chunk relationships
759
+
760
+ ### 3. Metadata
761
+
762
+ ✅ **DO:**
763
+ - Store original text with embeddings
764
+ - Include source, author, date, category
765
+ - Track embedding model and version
766
+ - Enable filtering by metadata
767
+
768
+ ❌ **DON'T:**
769
+ - Store only embeddings without metadata
770
+ - Forget to version embeddings
771
+ - Ignore temporal information
772
+ - Skip source tracking
773
+
774
+ ### 4. Updates
775
+
776
+ ✅ **DO:**
777
+ - Version embeddings for rollback
778
+ - Update incrementally when possible
779
+ - Cache embeddings to avoid re-computation
780
+ - Monitor embedding quality over time
781
+
782
+ ❌ **DON'T:**
783
+ - Re-embed everything for minor changes
784
+ - Mix old and new embeddings without versioning
785
+ - Ignore embedding drift
786
+ - Skip quality monitoring
787
+
788
+ ### 5. Cost Optimization
789
+
790
+ ✅ **DO:**
791
+ - Batch embed documents
792
+ - Cache embeddings
793
+ - Use appropriate model for use case
794
+ - Monitor and optimize token usage
795
+
796
+ ❌ **DON'T:**
797
+ - Embed one document at a time
798
+ - Re-embed unnecessarily
799
+ - Use expensive models when cheaper ones suffice
800
+ - Ignore cost monitoring
801
+
802
+ ---
803
+
804
+ ## Common Pitfalls
805
+
806
+ ### 1. Mixing Embedding Models
807
+
808
+ **Problem**: Using different models for indexing and querying
809
+
810
+ **Solution**: Use same model consistently
811
+
812
+ ### 2. Poor Chunking
813
+
814
+ **Problem**: Chunks too large (exceed token limit) or too small (lose context)
815
+
816
+ **Solution**: Use 256-512 token chunks with overlap
817
+
818
+ ### 3. Missing Metadata
819
+
820
+ **Problem**: Can't filter or reconstruct original content
821
+
822
+ **Solution**: Store comprehensive metadata with embeddings
823
+
824
+ ### 4. No Versioning
825
+
826
+ **Problem**: Can't track which model generated embeddings
827
+
828
+ **Solution**: Version embeddings with model name and date
829
+
830
+ ### 5. Inefficient Batch Processing
831
+
832
+ **Problem**: Embedding one document at a time (slow, expensive)
833
+
834
+ **Solution**: Batch embed documents (100+ at a time)
835
+
836
+ ---
837
+
838
+ ## Summary
839
+
840
+ **Key Takeaways:**
841
+ 1. Choose embedding model based on quality, cost, and use case
842
+ 2. Use 256-512 token chunks with 10-20% overlap
843
+ 3. Store comprehensive metadata (source, author, date, version)
844
+ 4. Version embeddings for rollback and consistency
845
+ 5. Batch process for efficiency and cost optimization
846
+ 6. Cache embeddings to avoid re-computation
847
+
848
+ **Model Recommendations:**
849
+ - **Production**: OpenAI `text-embedding-3-small`
850
+ - **Self-hosted**: Sentence Transformers `all-mpnet-base-v2`
851
+ - **Multilingual**: Cohere `embed-multilingual-v3.0`
852
+ - **Code**: Voyage AI `voyage-code-2`
853
+
854
+ **Next Steps:**
855
+ - See `vector-databases.md` for vector storage and search
856
+ - See `vector-indexing.md` for index optimization
857
+ - See `examples/vector-database-example.md` for complete implementation
858
+