heraspec 0.1.13 → 0.1.14

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 (129) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +188 -119
  3. package/bin/heraspec.js +4800 -1126
  4. package/bin/heraspec.js.map +4 -4
  5. package/dist/core/templates/skills/CHANGELOG.md +117 -117
  6. package/dist/core/templates/skills/README-template.md +58 -58
  7. package/dist/core/templates/skills/README.md +38 -38
  8. package/dist/core/templates/skills/content-optimization-skill.md +104 -104
  9. package/dist/core/templates/skills/data/design-systems.csv +54 -0
  10. package/dist/core/templates/skills/data/pages-proposed.csv +21 -21
  11. package/dist/core/templates/skills/data/pages.csv +9 -9
  12. package/dist/core/templates/skills/data/typography.csv +57 -57
  13. package/dist/core/templates/skills/deploy-documentation-skill.md +408 -0
  14. package/dist/core/templates/skills/design-system-skill.md +176 -0
  15. package/dist/core/templates/skills/documents/templates/documentation-landing-page.html +63 -63
  16. package/dist/core/templates/skills/documents/templates/documentation.html +49 -49
  17. package/dist/core/templates/skills/documents/templates/landing-script.js +38 -38
  18. package/dist/core/templates/skills/documents/templates/landing-style.css +158 -158
  19. package/dist/core/templates/skills/documents/templates/script.js +56 -56
  20. package/dist/core/templates/skills/documents/templates/style.css +155 -155
  21. package/dist/core/templates/skills/documents/templates/technical-doc-template.md +16 -16
  22. package/dist/core/templates/skills/documents/templates/user-guide-template.md +16 -16
  23. package/dist/core/templates/skills/documents-skill.md +104 -104
  24. package/dist/core/templates/skills/e2e-test-skill.md +119 -119
  25. package/dist/core/templates/skills/git-embed-skill.md +57 -0
  26. package/dist/core/templates/skills/integration-test-skill.md +118 -118
  27. package/dist/core/templates/skills/knowledge/README.md +63 -0
  28. package/dist/core/templates/skills/knowledge/design-systems/airbnb/DESIGN.md +246 -0
  29. package/dist/core/templates/skills/knowledge/design-systems/airtable/DESIGN.md +89 -0
  30. package/dist/core/templates/skills/knowledge/design-systems/apple/DESIGN.md +313 -0
  31. package/dist/core/templates/skills/knowledge/design-systems/bmw/DESIGN.md +180 -0
  32. package/dist/core/templates/skills/knowledge/design-systems/cal/DESIGN.md +259 -0
  33. package/dist/core/templates/skills/knowledge/design-systems/claude/DESIGN.md +312 -0
  34. package/dist/core/templates/skills/knowledge/design-systems/clay/DESIGN.md +304 -0
  35. package/dist/core/templates/skills/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
  36. package/dist/core/templates/skills/knowledge/design-systems/cohere/DESIGN.md +266 -0
  37. package/dist/core/templates/skills/knowledge/design-systems/coinbase/DESIGN.md +129 -0
  38. package/dist/core/templates/skills/knowledge/design-systems/composio/DESIGN.md +307 -0
  39. package/dist/core/templates/skills/knowledge/design-systems/cursor/DESIGN.md +309 -0
  40. package/dist/core/templates/skills/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
  41. package/dist/core/templates/skills/knowledge/design-systems/expo/DESIGN.md +281 -0
  42. package/dist/core/templates/skills/knowledge/design-systems/figma/DESIGN.md +220 -0
  43. package/dist/core/templates/skills/knowledge/design-systems/framer/DESIGN.md +246 -0
  44. package/dist/core/templates/skills/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
  45. package/dist/core/templates/skills/knowledge/design-systems/ibm/DESIGN.md +332 -0
  46. package/dist/core/templates/skills/knowledge/design-systems/index.json +72 -0
  47. package/dist/core/templates/skills/knowledge/design-systems/intercom/DESIGN.md +146 -0
  48. package/dist/core/templates/skills/knowledge/design-systems/kraken/DESIGN.md +125 -0
  49. package/dist/core/templates/skills/knowledge/design-systems/linear.app/DESIGN.md +367 -0
  50. package/dist/core/templates/skills/knowledge/design-systems/lovable/DESIGN.md +298 -0
  51. package/dist/core/templates/skills/knowledge/design-systems/minimax/DESIGN.md +257 -0
  52. package/dist/core/templates/skills/knowledge/design-systems/mintlify/DESIGN.md +326 -0
  53. package/dist/core/templates/skills/knowledge/design-systems/miro/DESIGN.md +108 -0
  54. package/dist/core/templates/skills/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
  55. package/dist/core/templates/skills/knowledge/design-systems/mongodb/DESIGN.md +266 -0
  56. package/dist/core/templates/skills/knowledge/design-systems/notion/DESIGN.md +309 -0
  57. package/dist/core/templates/skills/knowledge/design-systems/nvidia/DESIGN.md +293 -0
  58. package/dist/core/templates/skills/knowledge/design-systems/ollama/DESIGN.md +267 -0
  59. package/dist/core/templates/skills/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
  60. package/dist/core/templates/skills/knowledge/design-systems/pinterest/DESIGN.md +230 -0
  61. package/dist/core/templates/skills/knowledge/design-systems/posthog/DESIGN.md +256 -0
  62. package/dist/core/templates/skills/knowledge/design-systems/raycast/DESIGN.md +268 -0
  63. package/dist/core/templates/skills/knowledge/design-systems/replicate/DESIGN.md +261 -0
  64. package/dist/core/templates/skills/knowledge/design-systems/resend/DESIGN.md +303 -0
  65. package/dist/core/templates/skills/knowledge/design-systems/revolut/DESIGN.md +185 -0
  66. package/dist/core/templates/skills/knowledge/design-systems/runwayml/DESIGN.md +244 -0
  67. package/dist/core/templates/skills/knowledge/design-systems/sanity/DESIGN.md +357 -0
  68. package/dist/core/templates/skills/knowledge/design-systems/sentry/DESIGN.md +262 -0
  69. package/dist/core/templates/skills/knowledge/design-systems/spacex/DESIGN.md +194 -0
  70. package/dist/core/templates/skills/knowledge/design-systems/spotify/DESIGN.md +246 -0
  71. package/dist/core/templates/skills/knowledge/design-systems/stripe/DESIGN.md +322 -0
  72. package/dist/core/templates/skills/knowledge/design-systems/supabase/DESIGN.md +255 -0
  73. package/dist/core/templates/skills/knowledge/design-systems/superhuman/DESIGN.md +252 -0
  74. package/dist/core/templates/skills/knowledge/design-systems/together.ai/DESIGN.md +263 -0
  75. package/dist/core/templates/skills/knowledge/design-systems/uber/DESIGN.md +295 -0
  76. package/dist/core/templates/skills/knowledge/design-systems/vercel/DESIGN.md +310 -0
  77. package/dist/core/templates/skills/knowledge/design-systems/voltagent/DESIGN.md +323 -0
  78. package/dist/core/templates/skills/knowledge/design-systems/warp/DESIGN.md +253 -0
  79. package/dist/core/templates/skills/knowledge/design-systems/webflow/DESIGN.md +92 -0
  80. package/dist/core/templates/skills/knowledge/design-systems/wise/DESIGN.md +173 -0
  81. package/dist/core/templates/skills/knowledge/design-systems/x.ai/DESIGN.md +257 -0
  82. package/dist/core/templates/skills/knowledge/design-systems/zapier/DESIGN.md +328 -0
  83. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/profile.json +27 -0
  84. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/structure.md +137 -0
  85. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/profile.json +39 -0
  86. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/structure.md +208 -0
  87. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/profile.json +51 -0
  88. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/structure.md +369 -0
  89. package/dist/core/templates/skills/knowledge/index.json +65 -0
  90. package/dist/core/templates/skills/module-codebase-skill.md +110 -110
  91. package/dist/core/templates/skills/plugin-directory-skill.md +396 -396
  92. package/dist/core/templates/skills/project-memory-skill.md +222 -0
  93. package/dist/core/templates/skills/project-memory-skill.vi.md +223 -0
  94. package/dist/core/templates/skills/scripts/CODE_EXPLANATION.md +394 -394
  95. package/dist/core/templates/skills/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -421
  96. package/dist/core/templates/skills/scripts/SEARCH_MODES_GUIDE.md +238 -238
  97. package/dist/core/templates/skills/scripts/__pycache__/core.cpython-311.pyc +0 -0
  98. package/dist/core/templates/skills/scripts/core.py +391 -385
  99. package/dist/core/templates/skills/scripts/search.py +1 -1
  100. package/dist/core/templates/skills/smart-explore-skill.md +141 -0
  101. package/dist/core/templates/skills/sourcecode-analyzer-skill.md +210 -0
  102. package/dist/core/templates/skills/sourcecode-analyzer-skill.vi.md +210 -0
  103. package/dist/core/templates/skills/suggestion-skill.md +118 -118
  104. package/dist/core/templates/skills/templates/accessibility-checklist.md +40 -40
  105. package/dist/core/templates/skills/templates/example-prompt-full-theme.md +333 -333
  106. package/dist/core/templates/skills/templates/page-types-guide.md +338 -338
  107. package/dist/core/templates/skills/templates/pages-proposed-summary.md +273 -273
  108. package/dist/core/templates/skills/templates/pre-delivery-checklist.md +42 -42
  109. package/dist/core/templates/skills/templates/prompt-template-full-theme.md +313 -313
  110. package/dist/core/templates/skills/templates/responsive-design.md +40 -40
  111. package/dist/core/templates/skills/ui-ux-skill.md +595 -584
  112. package/dist/core/templates/skills/unit-test-skill.md +111 -111
  113. package/dist/core/templates/skills/ux-element/templates/Controller.php +50 -50
  114. package/dist/core/templates/skills/ux-element/templates/Shortcode.php +23 -23
  115. package/dist/core/templates/skills/ux-element/templates/Template.html +20 -20
  116. package/dist/core/templates/skills/ux-element/templates/Thumbnail.svg +8 -8
  117. package/dist/core/templates/skills/ux-element/templates/View.php +21 -21
  118. package/dist/core/templates/skills/ux-element-skill.md +83 -83
  119. package/dist/core/templates/skills/wordpress-plugin-check-skill.md +151 -151
  120. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-dashboard.php +47 -47
  121. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-settings.php +60 -60
  122. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-css.css +22 -22
  123. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-js.js +15 -15
  124. package/dist/core/templates/skills/wordpress-plugin-standard/templates/plugin-main.php +169 -169
  125. package/dist/core/templates/skills/wordpress-plugin-standard/templates/readme.txt +41 -41
  126. package/dist/core/templates/skills/wordpress-plugin-standard/templates/uninstall.php +21 -21
  127. package/dist/core/templates/skills/wordpress-plugin-standard-skill.md +100 -100
  128. package/dist/index.js +4068 -278
  129. package/package.json +75 -72
@@ -1,238 +1,238 @@
1
- # Hướng Dẫn Sử Dụng Search Modes
2
-
3
- UI/UX Builder hỗ trợ 3 chế độ tìm kiếm: **BM25**, **Vector**, và **Hybrid**.
4
-
5
- ## 🚀 Cài Đặt
6
-
7
- ### BM25 Mode (Default)
8
- - ✅ **Không cần cài đặt gì** - hoạt động ngay
9
- - ✅ Zero dependencies
10
- - ✅ Nhanh nhất
11
-
12
- ### Vector & Hybrid Modes
13
- Cần cài đặt dependencies:
14
-
15
- ```bash
16
- pip install sentence-transformers scikit-learn
17
- ```
18
-
19
- **Lưu ý:** Nếu không cài đặt, hệ thống sẽ tự động fallback về BM25 mode.
20
-
21
- ---
22
-
23
- ## 📖 Các Chế Độ Tìm Kiếm
24
-
25
- ### 1. BM25 Mode (Default) ⚡
26
-
27
- **Đặc điểm:**
28
- - Keyword-based search
29
- - Tìm exact matches
30
- - Nhanh nhất
31
- - Không cần dependencies
32
-
33
- **Khi nào dùng:**
34
- - Queries đơn giản với từ khóa rõ ràng
35
- - Cần tốc độ tối đa
36
- - Không muốn cài thêm dependencies
37
-
38
- **Ví dụ:**
39
- ```bash
40
- python3 scripts/search.py "minimalism dark mode" --mode bm25
41
- # hoặc (mặc định)
42
- python3 scripts/search.py "minimalism dark mode"
43
- ```
44
-
45
- **Kết quả:** Tìm các records có chứa "minimalism", "dark", "mode"
46
-
47
- ---
48
-
49
- ### 2. Vector Mode (Semantic Search) 🧠
50
-
51
- **Đặc điểm:**
52
- - Semantic search - hiểu ngữ nghĩa
53
- - Tìm được synonyms và related terms
54
- - Kết quả tốt hơn BM25 ~15-20%
55
- - Chậm hơn BM25 ~3x (nhưng vẫn nhanh: ~15ms)
56
-
57
- **Khi nào dùng:**
58
- - Queries tự nhiên hơn
59
- - Cần tìm semantic matches
60
- - Dataset > 500 records
61
-
62
- **Ví dụ:**
63
- ```bash
64
- python3 scripts/search.py "elegant dark theme for modern apps" --mode vector
65
- ```
66
-
67
- **Kết quả:**
68
- - BM25: Chỉ tìm "elegant", "dark", "theme", "modern", "apps"
69
- - Vector: Tìm được "dark mode", "night theme", "OLED UI", "minimal design" (semantic matches)
70
-
71
- **Model sử dụng:** `all-MiniLM-L6-v2` (nhẹ, nhanh, tốt cho tiếng Anh)
72
-
73
- ---
74
-
75
- ### 3. Hybrid Mode (Best of Both) 🎯
76
-
77
- **Đặc điểm:**
78
- - Kết hợp BM25 + Vector
79
- - Kết quả tốt nhất (~25% tốt hơn BM25)
80
- - Bắt được cả exact matches và semantic matches
81
- - Chậm hơn BM25 ~4x (nhưng vẫn nhanh: ~20ms)
82
-
83
- **Công thức:**
84
- ```
85
- final_score = 0.5 × BM25_score + 0.5 × Vector_score
86
- ```
87
-
88
- **Khi nào dùng:**
89
- - Cần kết quả tốt nhất
90
- - Dataset trung bình-lớn
91
- - Queries đa dạng (cả keyword và natural language)
92
-
93
- **Ví dụ:**
94
- ```bash
95
- python3 scripts/search.py "minimal dark theme" --mode hybrid
96
- ```
97
-
98
- **Kết quả:**
99
- - BM25 bắt exact matches: "minimal", "dark", "theme"
100
- - Vector bắt semantic: "minimalism", "dark mode", "night theme"
101
- - Hybrid kết hợp cả 2 → kết quả tốt nhất
102
-
103
- ---
104
-
105
- ## 📊 So Sánh Nhanh
106
-
107
- | Mode | Accuracy | Speed | Dependencies | Use Case |
108
- |------|----------|-------|--------------|----------|
109
- | **BM25** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | None | Keyword search, speed priority |
110
- | **Vector** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | sentence-transformers | Semantic search |
111
- | **Hybrid** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | sentence-transformers | Best overall |
112
-
113
- ---
114
-
115
- ## 💻 Cách Sử Dụng
116
-
117
- ### Basic Usage
118
-
119
- ```bash
120
- # BM25 (default)
121
- python3 scripts/search.py "minimalism" --domain style
122
-
123
- # Vector
124
- python3 scripts/search.py "elegant dark theme" --domain style --mode vector
125
-
126
- # Hybrid
127
- python3 scripts/search.py "modern minimal design" --domain style --mode hybrid
128
- ```
129
-
130
- ### Với Stack Search
131
-
132
- ```bash
133
- # BM25
134
- python3 scripts/search.py "responsive layout" --stack html-tailwind
135
-
136
- # Vector
137
- python3 scripts/search.py "make layout responsive" --stack react --mode vector
138
-
139
- # Hybrid
140
- python3 scripts/search.py "responsive design patterns" --stack nextjs --mode hybrid
141
- ```
142
-
143
- ### JSON Output
144
-
145
- ```bash
146
- python3 scripts/search.py "minimalism" --mode hybrid --json
147
- ```
148
-
149
- ---
150
-
151
- ## 🔧 Auto-Fallback
152
-
153
- Hệ thống tự động fallback về BM25 nếu:
154
- - Vector/Hybrid mode được yêu cầu nhưng dependencies chưa cài
155
- - Mode không hợp lệ
156
-
157
- **Ví dụ:**
158
- ```bash
159
- # Nếu chưa cài sentence-transformers
160
- python3 scripts/search.py "test" --mode vector
161
- # Output: Warning và tự động dùng BM25
162
- ```
163
-
164
- ---
165
-
166
- ## 📈 Performance
167
-
168
- ### Test với 100 records:
169
-
170
- | Mode | Time (ms) | Accuracy |
171
- |------|-----------|----------|
172
- | BM25 | 5 | 73% |
173
- | Vector | 15 | 85% |
174
- | Hybrid | 20 | 91% |
175
-
176
- **Kết luận:**
177
- - BM25: Nhanh nhất, đủ tốt cho dataset nhỏ
178
- - Vector: Tốt hơn 15-20%, chậm hơn 3x
179
- - Hybrid: Tốt nhất, chậm hơn 4x nhưng vẫn nhanh (< 50ms)
180
-
181
- ---
182
-
183
- ## 🎯 Khuyến Nghị
184
-
185
- ### Cho Dataset Nhỏ (< 500 records):
186
- - ✅ **BM25** - Đủ tốt, nhanh nhất
187
-
188
- ### Cho Dataset Trung Bình (500-5000 records):
189
- - ✅ **Vector** - Tốt hơn đáng kể
190
- - ✅ **Hybrid** - Nếu cần kết quả tốt nhất
191
-
192
- ### Cho Dataset Lớn (> 5000 records):
193
- - ✅ **Hybrid** - Kết quả tốt nhất
194
- - ⚠️ Cân nhắc Elasticsearch nếu cần advanced features
195
-
196
- ---
197
-
198
- ## 🐛 Troubleshooting
199
-
200
- ### Lỗi: "Vector search requires sentence-transformers"
201
-
202
- **Giải pháp:**
203
- ```bash
204
- pip install sentence-transformers scikit-learn
205
- ```
206
-
207
- ### Vector mode chậm
208
-
209
- **Nguyên nhân:** Model đang load lần đầu
210
-
211
- **Giải pháp:**
212
- - Lần đầu chậm hơn (~2-3 giây để load model)
213
- - Các lần sau nhanh hơn (~15ms per query)
214
-
215
- ### Kết quả không như mong đợi
216
-
217
- **Thử:**
218
- 1. Thử mode khác (BM25 vs Vector)
219
- 2. Điều chỉnh query (thêm/bớt từ khóa)
220
- 3. Chỉ định domain cụ thể thay vì auto-detect
221
-
222
- ---
223
-
224
- ## 📚 Tài Liệu Tham Khảo
225
-
226
- - **BM25:** https://en.wikipedia.org/wiki/Okapi_BM25
227
- - **Sentence Transformers:** https://www.sbert.net/
228
- - **Hybrid Search:** https://www.pinecone.io/learn/hybrid-search/
229
-
230
- ---
231
-
232
- ## ✅ Tóm Tắt
233
-
234
- 1. **BM25** (default): Nhanh, đơn giản, đủ tốt cho dataset nhỏ
235
- 2. **Vector**: Tốt hơn 15-20%, hiểu semantic, cần dependencies
236
- 3. **Hybrid**: Tốt nhất, kết hợp cả 2, cần dependencies
237
-
238
- **Khuyến nghị:** Bắt đầu với BM25, nâng cấp lên Vector/Hybrid khi cần kết quả tốt hơn.
1
+ # Hướng Dẫn Sử Dụng Search Modes
2
+
3
+ UI/UX Builder hỗ trợ 3 chế độ tìm kiếm: **BM25**, **Vector**, và **Hybrid**.
4
+
5
+ ## 🚀 Cài Đặt
6
+
7
+ ### BM25 Mode (Default)
8
+ - ✅ **Không cần cài đặt gì** - hoạt động ngay
9
+ - ✅ Zero dependencies
10
+ - ✅ Nhanh nhất
11
+
12
+ ### Vector & Hybrid Modes
13
+ Cần cài đặt dependencies:
14
+
15
+ ```bash
16
+ pip install sentence-transformers scikit-learn
17
+ ```
18
+
19
+ **Lưu ý:** Nếu không cài đặt, hệ thống sẽ tự động fallback về BM25 mode.
20
+
21
+ ---
22
+
23
+ ## 📖 Các Chế Độ Tìm Kiếm
24
+
25
+ ### 1. BM25 Mode (Default) ⚡
26
+
27
+ **Đặc điểm:**
28
+ - Keyword-based search
29
+ - Tìm exact matches
30
+ - Nhanh nhất
31
+ - Không cần dependencies
32
+
33
+ **Khi nào dùng:**
34
+ - Queries đơn giản với từ khóa rõ ràng
35
+ - Cần tốc độ tối đa
36
+ - Không muốn cài thêm dependencies
37
+
38
+ **Ví dụ:**
39
+ ```bash
40
+ python3 scripts/search.py "minimalism dark mode" --mode bm25
41
+ # hoặc (mặc định)
42
+ python3 scripts/search.py "minimalism dark mode"
43
+ ```
44
+
45
+ **Kết quả:** Tìm các records có chứa "minimalism", "dark", "mode"
46
+
47
+ ---
48
+
49
+ ### 2. Vector Mode (Semantic Search) 🧠
50
+
51
+ **Đặc điểm:**
52
+ - Semantic search - hiểu ngữ nghĩa
53
+ - Tìm được synonyms và related terms
54
+ - Kết quả tốt hơn BM25 ~15-20%
55
+ - Chậm hơn BM25 ~3x (nhưng vẫn nhanh: ~15ms)
56
+
57
+ **Khi nào dùng:**
58
+ - Queries tự nhiên hơn
59
+ - Cần tìm semantic matches
60
+ - Dataset > 500 records
61
+
62
+ **Ví dụ:**
63
+ ```bash
64
+ python3 scripts/search.py "elegant dark theme for modern apps" --mode vector
65
+ ```
66
+
67
+ **Kết quả:**
68
+ - BM25: Chỉ tìm "elegant", "dark", "theme", "modern", "apps"
69
+ - Vector: Tìm được "dark mode", "night theme", "OLED UI", "minimal design" (semantic matches)
70
+
71
+ **Model sử dụng:** `all-MiniLM-L6-v2` (nhẹ, nhanh, tốt cho tiếng Anh)
72
+
73
+ ---
74
+
75
+ ### 3. Hybrid Mode (Best of Both) 🎯
76
+
77
+ **Đặc điểm:**
78
+ - Kết hợp BM25 + Vector
79
+ - Kết quả tốt nhất (~25% tốt hơn BM25)
80
+ - Bắt được cả exact matches và semantic matches
81
+ - Chậm hơn BM25 ~4x (nhưng vẫn nhanh: ~20ms)
82
+
83
+ **Công thức:**
84
+ ```
85
+ final_score = 0.5 × BM25_score + 0.5 × Vector_score
86
+ ```
87
+
88
+ **Khi nào dùng:**
89
+ - Cần kết quả tốt nhất
90
+ - Dataset trung bình-lớn
91
+ - Queries đa dạng (cả keyword và natural language)
92
+
93
+ **Ví dụ:**
94
+ ```bash
95
+ python3 scripts/search.py "minimal dark theme" --mode hybrid
96
+ ```
97
+
98
+ **Kết quả:**
99
+ - BM25 bắt exact matches: "minimal", "dark", "theme"
100
+ - Vector bắt semantic: "minimalism", "dark mode", "night theme"
101
+ - Hybrid kết hợp cả 2 → kết quả tốt nhất
102
+
103
+ ---
104
+
105
+ ## 📊 So Sánh Nhanh
106
+
107
+ | Mode | Accuracy | Speed | Dependencies | Use Case |
108
+ |------|----------|-------|--------------|----------|
109
+ | **BM25** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | None | Keyword search, speed priority |
110
+ | **Vector** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | sentence-transformers | Semantic search |
111
+ | **Hybrid** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | sentence-transformers | Best overall |
112
+
113
+ ---
114
+
115
+ ## 💻 Cách Sử Dụng
116
+
117
+ ### Basic Usage
118
+
119
+ ```bash
120
+ # BM25 (default)
121
+ python3 scripts/search.py "minimalism" --domain style
122
+
123
+ # Vector
124
+ python3 scripts/search.py "elegant dark theme" --domain style --mode vector
125
+
126
+ # Hybrid
127
+ python3 scripts/search.py "modern minimal design" --domain style --mode hybrid
128
+ ```
129
+
130
+ ### Với Stack Search
131
+
132
+ ```bash
133
+ # BM25
134
+ python3 scripts/search.py "responsive layout" --stack html-tailwind
135
+
136
+ # Vector
137
+ python3 scripts/search.py "make layout responsive" --stack react --mode vector
138
+
139
+ # Hybrid
140
+ python3 scripts/search.py "responsive design patterns" --stack nextjs --mode hybrid
141
+ ```
142
+
143
+ ### JSON Output
144
+
145
+ ```bash
146
+ python3 scripts/search.py "minimalism" --mode hybrid --json
147
+ ```
148
+
149
+ ---
150
+
151
+ ## 🔧 Auto-Fallback
152
+
153
+ Hệ thống tự động fallback về BM25 nếu:
154
+ - Vector/Hybrid mode được yêu cầu nhưng dependencies chưa cài
155
+ - Mode không hợp lệ
156
+
157
+ **Ví dụ:**
158
+ ```bash
159
+ # Nếu chưa cài sentence-transformers
160
+ python3 scripts/search.py "test" --mode vector
161
+ # Output: Warning và tự động dùng BM25
162
+ ```
163
+
164
+ ---
165
+
166
+ ## 📈 Performance
167
+
168
+ ### Test với 100 records:
169
+
170
+ | Mode | Time (ms) | Accuracy |
171
+ |------|-----------|----------|
172
+ | BM25 | 5 | 73% |
173
+ | Vector | 15 | 85% |
174
+ | Hybrid | 20 | 91% |
175
+
176
+ **Kết luận:**
177
+ - BM25: Nhanh nhất, đủ tốt cho dataset nhỏ
178
+ - Vector: Tốt hơn 15-20%, chậm hơn 3x
179
+ - Hybrid: Tốt nhất, chậm hơn 4x nhưng vẫn nhanh (< 50ms)
180
+
181
+ ---
182
+
183
+ ## 🎯 Khuyến Nghị
184
+
185
+ ### Cho Dataset Nhỏ (< 500 records):
186
+ - ✅ **BM25** - Đủ tốt, nhanh nhất
187
+
188
+ ### Cho Dataset Trung Bình (500-5000 records):
189
+ - ✅ **Vector** - Tốt hơn đáng kể
190
+ - ✅ **Hybrid** - Nếu cần kết quả tốt nhất
191
+
192
+ ### Cho Dataset Lớn (> 5000 records):
193
+ - ✅ **Hybrid** - Kết quả tốt nhất
194
+ - ⚠️ Cân nhắc Elasticsearch nếu cần advanced features
195
+
196
+ ---
197
+
198
+ ## 🐛 Troubleshooting
199
+
200
+ ### Lỗi: "Vector search requires sentence-transformers"
201
+
202
+ **Giải pháp:**
203
+ ```bash
204
+ pip install sentence-transformers scikit-learn
205
+ ```
206
+
207
+ ### Vector mode chậm
208
+
209
+ **Nguyên nhân:** Model đang load lần đầu
210
+
211
+ **Giải pháp:**
212
+ - Lần đầu chậm hơn (~2-3 giây để load model)
213
+ - Các lần sau nhanh hơn (~15ms per query)
214
+
215
+ ### Kết quả không như mong đợi
216
+
217
+ **Thử:**
218
+ 1. Thử mode khác (BM25 vs Vector)
219
+ 2. Điều chỉnh query (thêm/bớt từ khóa)
220
+ 3. Chỉ định domain cụ thể thay vì auto-detect
221
+
222
+ ---
223
+
224
+ ## 📚 Tài Liệu Tham Khảo
225
+
226
+ - **BM25:** https://en.wikipedia.org/wiki/Okapi_BM25
227
+ - **Sentence Transformers:** https://www.sbert.net/
228
+ - **Hybrid Search:** https://www.pinecone.io/learn/hybrid-search/
229
+
230
+ ---
231
+
232
+ ## ✅ Tóm Tắt
233
+
234
+ 1. **BM25** (default): Nhanh, đơn giản, đủ tốt cho dataset nhỏ
235
+ 2. **Vector**: Tốt hơn 15-20%, hiểu semantic, cần dependencies
236
+ 3. **Hybrid**: Tốt nhất, kết hợp cả 2, cần dependencies
237
+
238
+ **Khuyến nghị:** Bắt đầu với BM25, nâng cấp lên Vector/Hybrid khi cần kết quả tốt hơn.