ThanhLe0125 commited on
Commit
6d4ed53
·
verified ·
1 Parent(s): ff7d393

MRR-optimized E5-Math - Test MRR: 0.8443548387096775 (avg rank: 1.184336198662846) - 25/06/2025

Browse files
Files changed (4) hide show
  1. README.md +69 -31
  2. final_test_results.json +748 -358
  3. pytorch_model.bin +1 -1
  4. usage_example.py +30 -19
README.md CHANGED
@@ -11,38 +11,55 @@ tags:
11
  - exact-chunk-retrieval
12
  - hierarchical-learning
13
  - e5-base
14
- - precision-at-k
 
15
  base_model: intfloat/multilingual-e5-base
16
  metrics:
17
- - precision
 
18
  ---
19
 
20
- # E5-Math-Vietnamese: Hierarchical Exact Chunk Retrieval
21
 
22
  ## Model Overview
23
- Fine-tuned E5-base model for **exact chunk retrieval** in Vietnamese mathematics with **hierarchical scoring**:
24
- - **Correct chunks**: Score ~1.0 (exact answers)
25
- - **Related chunks**: Score ~0.3 (supplementary info)
26
- - **Irrelevant chunks**: Score ~0.0 (unrelated content)
27
 
28
  ## Performance Metrics
29
 
30
  ### Training Results
31
- - **Best Validation P@5**: 0.75
32
  - **Training Epochs**: 5
33
  - **Hierarchy Maintained**: True
34
 
35
  ### Final Test Results (Used Only Once)
36
- - **Test P@3**: 0.3261648745519709
37
- - **Test P@5**: 0.19784946236559103
38
- - **Hierarchy Rate**: 0.6774193548387096
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  ## Usage
41
  ```python
42
  from sentence_transformers import SentenceTransformer
43
  from sklearn.metrics.pairwise import cosine_similarity
44
 
45
- # Load model
46
  model = SentenceTransformer('ThanhLe0125/e5-math')
47
 
48
  # ⚠️ CRITICAL: Must use E5 prefixes
@@ -53,36 +70,57 @@ chunks = [
53
  "passage: Phương trình bậc hai có dạng..." # IRRELEVANT
54
  ]
55
 
56
- # Find exact chunk in top 3/5
57
  query_emb = model.encode([query])
58
  chunk_embs = model.encode(chunks)
59
  similarities = cosine_similarity(query_emb, chunk_embs)[0]
60
 
61
- # Get top 5 results
62
- top5_indices = similarities.argsort()[::-1][:5]
63
- for rank, idx in enumerate(top5_indices, 1):
64
- print(f"{rank}. Score: {similarities[idx]:.4f} - {chunks[idx][:50]}...")
65
 
66
- # Expected hierarchy: Exact > Related > Irrelevant
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  ```
68
 
69
  ## Evaluation Methodology
70
- - **Training**: train_question + val_question used for model training
71
- - **Validation**: P@5 used for early stopping during training
72
  - **Test**: test_question used ONLY ONCE for final evaluation
73
- - **Metrics**: Precision@3 and Precision@5 for exact chunk retrieval
74
 
75
  ## Key Features
76
- - ✅ Optimized for P@3 and P@5 metrics
77
- - ✅ Maintains hierarchy: Exact > Related > Irrelevant
78
- - ✅ Specialized for Vietnamese mathematics content
79
- - ✅ Follows proper ML evaluation practices
80
- - ⚠️ Requires E5 prefixes for optimal performance
 
81
 
82
  ## Perfect For
83
- - Educational Q&A systems requiring exact answers
84
- - Hierarchical content retrieval systems
85
- - Vietnamese mathematics tutoring platforms
86
- - Content recommendation with quality ranking
 
 
 
 
 
 
87
 
88
- *Trained on 25/06/2025 with hierarchical contrastive learning and proper train/val/test split.*
 
11
  - exact-chunk-retrieval
12
  - hierarchical-learning
13
  - e5-base
14
+ - mrr-optimization
15
+ - mean-reciprocal-rank
16
  base_model: intfloat/multilingual-e5-base
17
  metrics:
18
+ - mean_reciprocal_rank
19
+ - recall
20
  ---
21
 
22
+ # E5-Math-Vietnamese: MRR-Optimized Exact Chunk Retrieval
23
 
24
  ## Model Overview
25
+ Fine-tuned E5-base model optimized with **MRR (Mean Reciprocal Rank)** for exact chunk retrieval in Vietnamese mathematics:
26
+ - **🎯 Goal**: Push correct chunks to rank #1 or #2
27
+ - **📊 Hierarchy**: Correct > Related > Irrelevant scoring
28
+ - ** Efficient**: High MRR = fewer chunks needed at inference
29
 
30
  ## Performance Metrics
31
 
32
  ### Training Results
33
+ - **Best Validation MRR**: 0.75 (avg rank: 1.33)
34
  - **Training Epochs**: 5
35
  - **Hierarchy Maintained**: True
36
 
37
  ### Final Test Results (Used Only Once)
38
+ - **Test MRR**: 0.8443548387096775 (avg rank: 1.184336198662846)
39
+ - **Test Recall@3**: 0.946236559139785
40
+ - **Test Recall@5**: 0.967741935483871
41
+ - **Hierarchy Rate**: 0.6666666666666666
42
+ - **Performance Level**: 🌟 EXCELLENT (avg rank ≤ 1.25)
43
+
44
+ ## MRR Advantage
45
+ ```
46
+ MRR = Mean of (1/rank_of_correct_chunk)
47
+
48
+ Examples:
49
+ - Correct chunk at rank #1 → MRR contribution = 1.0
50
+ - Correct chunk at rank #2 → MRR contribution = 0.5
51
+ - Correct chunk at rank #5 → MRR contribution = 0.2
52
+ - Correct chunk at rank #10 → MRR contribution = 0.1
53
+
54
+ High MRR → Correct chunks consistently at top positions!
55
+ ```
56
 
57
  ## Usage
58
  ```python
59
  from sentence_transformers import SentenceTransformer
60
  from sklearn.metrics.pairwise import cosine_similarity
61
 
62
+ # Load MRR-optimized model
63
  model = SentenceTransformer('ThanhLe0125/e5-math')
64
 
65
  # ⚠️ CRITICAL: Must use E5 prefixes
 
70
  "passage: Phương trình bậc hai có dạng..." # IRRELEVANT
71
  ]
72
 
73
+ # Get rankings (MRR-optimized for top positions)
74
  query_emb = model.encode([query])
75
  chunk_embs = model.encode(chunks)
76
  similarities = cosine_similarity(query_emb, chunk_embs)[0]
77
 
78
+ # With high MRR, correct chunk should be at rank #1 or #2
79
+ ranked_indices = similarities.argsort()[::-1]
80
+ for rank, idx in enumerate(ranked_indices, 1):
81
+ print(f"Rank {rank}: Score {similarities[idx]:.4f} - {chunks[idx][:50]}...")
82
 
83
+ # Expected with MRR optimization:
84
+ # Rank 1: Correct chunk (score ~0.85)
85
+ # Rank 2: Related chunk (score ~0.45)
86
+ # Rank 3: Irrelevant chunk (score ~0.1)
87
+ ```
88
+
89
+ ## Inference Optimization
90
+ With MRR ≥ 0.7, you typically only need to return **top 2-3 chunks** to find the correct answer:
91
+
92
+ ```python
93
+ # Efficient inference - return only top 3
94
+ top_3_indices = similarities.argsort()[::-1][:3]
95
+ top_chunks = [chunks[i] for i in top_3_indices]
96
+
97
+ # High probability correct chunk is in top_chunks[0] or top_chunks[1]
98
  ```
99
 
100
  ## Evaluation Methodology
101
+ - **Training**: train_question + val_question with MRR optimization
102
+ - **Validation**: MRR used for early stopping (pushes correct chunks up)
103
  - **Test**: test_question used ONLY ONCE for final evaluation
104
+ - **Metrics**: MRR (primary), Recall@3/5 (secondary) for exact chunk retrieval
105
 
106
  ## Key Features
107
+ - ✅ **MRR-optimized**: Correct chunks consistently at top positions
108
+ - ✅ **Inference efficient**: Need fewer chunks to find correct answer
109
+ - ✅ **Hierarchical**: Maintains Exact > Related > Irrelevant ranking
110
+ - ✅ **Vietnamese math specialized**: Optimized for educational content
111
+ - **Proper ML practices**: Clean train/val/test split
112
+ - ⚠️ **E5 prefixes required**: Use 'query:' and 'passage:' prefixes
113
 
114
  ## Perfect For
115
+ - Educational Q&A requiring exact answers at top positions
116
+ - Efficient retrieval systems (fewer API calls needed)
117
+ - Vietnamese mathematics tutoring with quick response
118
+ - Content ranking where correct answer must be rank #1 or #2
119
+
120
+ ## Performance Interpretation
121
+ - **MRR ≥ 0.8**: 🌟 Excellent (correct chunks avg rank ≤ 1.25)
122
+ - **MRR ≥ 0.7**: 🎯 Very Good (correct chunks avg rank ≤ 1.4)
123
+ - **MRR ≥ 0.5**: 👍 Good (correct chunks avg rank ≤ 2.0)
124
+ - **MRR < 0.5**: 📈 Needs improvement
125
 
126
+ *Trained on 25/06/2025 with MRR optimization for exact chunk retrieval.*
final_test_results.json CHANGED
@@ -1,1036 +1,1426 @@
1
  {
2
- "precision_at_3": 30.333333333333293,
3
- "precision_at_5": 18.399999999999967,
 
4
  "total_queries": 93,
5
- "hierarchy_maintained": 63,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  "query_details": [
7
  {
8
  "query": "Giả sử bạn chỉ có bảng biến thiên của f'(x), làm sao xác định được khoảng đồng biến và nghịch biến của f(x)?",
9
- "p3": 0.3333333333333333,
10
- "p5": 0.2,
 
 
11
  "hierarchy_ok": true,
12
- "top3_types": [
13
  "correct",
14
  "related",
 
 
15
  "irrelevant"
16
  ]
17
  },
18
  {
19
  "query": "Nếu f'(x) = 0 tại một điểm trong khoảng (a, b), điểm đó có phải luôn là điểm cực trị không? Tại sao?",
20
- "p3": 0.0,
21
- "p5": 0.0,
 
 
22
  "hierarchy_ok": false,
23
- "top3_types": [
24
  "related",
25
  "related",
26
- "related"
 
 
27
  ]
28
  },
29
  {
30
  "query": "Cho một hàm số biết đồng biến trên R. Hãy chứng minh f(x+1)>f(x) với mọi x.",
31
- "p3": 0.3333333333333333,
32
- "p5": 0.2,
 
 
33
  "hierarchy_ok": true,
34
- "top3_types": [
35
  "correct",
36
  "related",
 
 
37
  "irrelevant"
38
  ]
39
  },
40
  {
41
  "query": "Giả sử bạn có một hàm số mà đạo hàm bậc nhất của nó luôn dương. Hàm số này có cực trị không? Tại sao?",
42
- "p3": 0.3333333333333333,
43
- "p5": 0.2,
 
 
44
  "hierarchy_ok": true,
45
- "top3_types": [
46
  "correct",
47
  "related",
 
 
48
  "related"
49
  ]
50
  },
51
  {
52
  "query": "Bạn có một hàm số có đạo hàm tại x = 0 bằng 0. Làm thế nào bạn có thể xác định chắc chắn rằng x = 0 là một điểm cực trị?",
53
- "p3": 0.3333333333333333,
54
- "p5": 0.2,
 
 
55
  "hierarchy_ok": true,
56
- "top3_types": [
57
  "correct",
58
  "related",
 
 
59
  "related"
60
  ]
61
  },
62
  {
63
  "query": "Cho hàm số y = x^4. Tại x = 0, f'(x) = 0 và f''(x) = 0. Điểm này có phải là cực trị không? Tại sao?",
64
- "p3": 0.3333333333333333,
65
- "p5": 0.2,
 
 
66
  "hierarchy_ok": true,
67
- "top3_types": [
68
  "correct",
69
  "related",
 
 
70
  "related"
71
  ]
72
  },
73
  {
74
  "query": "Cho hàm số f(x) = x^2 - 4x + 3. Tìm các điểm cực trị của hàm số này.",
75
- "p3": 0.3333333333333333,
76
- "p5": 0.2,
 
 
77
  "hierarchy_ok": false,
78
- "top3_types": [
79
  "related",
80
  "correct",
 
 
81
  "related"
82
  ]
83
  },
84
  {
85
  "query": "Một hàm số có thể có bao nhiêu điểm cực trị tối đa? Cho ví dụ.",
86
- "p3": 0.3333333333333333,
87
- "p5": 0.2,
 
 
88
  "hierarchy_ok": false,
89
- "top3_types": [
90
  "related",
91
  "correct",
 
 
92
  "related"
93
  ]
94
  },
95
  {
96
  "query": "Khi nào thì việc tìm cực trị trở nên phức tạp và cần đến các phương pháp khác?",
97
- "p3": 0.3333333333333333,
98
- "p5": 0.2,
 
 
99
  "hierarchy_ok": true,
100
- "top3_types": [
101
  "correct",
102
  "related",
103
- "related"
 
 
104
  ]
105
  },
106
  {
107
  "query": "Một hàm số có thể có vô số cực trị nhưng không có giá trị lớn nhất hoặc nhỏ nh��t không? Cho ví dụ.",
108
- "p3": 0.3333333333333333,
109
- "p5": 0.2,
 
 
110
  "hierarchy_ok": true,
111
- "top3_types": [
112
  "correct",
113
  "related",
114
- "related"
 
 
115
  ]
116
  },
117
  {
118
  "query": "Cho một hàm số $f(x)$ liên tục trên đoạn [a, b] và $f(a) = f(b)$. Chứng minh rằng tồn tại ít nhất một điểm c thuộc (a, b) sao cho $f'(c) = 0$. (Ứng dụng định lý Rolle và liên hệ với giá trị lớn nhất/nhỏ nhất)",
119
- "p3": 0.3333333333333333,
120
- "p5": 0.2,
 
 
121
  "hierarchy_ok": false,
122
- "top3_types": [
123
  "related",
124
  "correct",
 
 
125
  "related"
126
  ]
127
  },
128
  {
129
  "query": "Làm thế nào để áp dụng định lý Weierstrass để giải quyết các bài toán tối ưu hóa?",
130
- "p3": 0.3333333333333333,
131
- "p5": 0.2,
132
- "hierarchy_ok": true,
133
- "top3_types": [
 
 
134
  "correct",
 
135
  "related",
136
- "related"
 
137
  ]
138
  },
139
  {
140
  "query": "Hãy mô tả tình huống một bài toán thực tế có thể được giải quyết bằng cách tìm giá trị lớn nhất hoặc nhỏ nhất của một hàm số.",
141
- "p3": 0.3333333333333333,
142
- "p5": 0.2,
143
- "hierarchy_ok": true,
144
- "top3_types": [
 
 
 
145
  "correct",
146
  "related",
 
147
  "related"
148
  ]
149
  },
150
  {
151
  "query": "Cho hàm số f(x) = x^2 - 4x + 5. Không cần tính toán, hãy giải thích các bước để tìm giá trị nhỏ nhất của hàm số này trên khoảng (0, 4).",
152
- "p3": 0.3333333333333333,
153
- "p5": 0.2,
 
 
154
  "hierarchy_ok": true,
155
- "top3_types": [
156
  "correct",
157
  "related",
 
 
158
  "related"
159
  ]
160
  },
161
  {
162
  "query": "Nếu bạn chỉ tính giá trị của hàm số tại các đầu mút của đoạn [a,b], bạn có thể bỏ sót giá trị lớn nhất hoặc nhỏ nhất thực sự của hàm số không? Tại sao?",
163
- "p3": 0.3333333333333333,
164
- "p5": 0.2,
 
 
165
  "hierarchy_ok": false,
166
- "top3_types": [
167
  "related",
168
  "correct",
 
 
169
  "related"
170
  ]
171
  },
172
  {
173
  "query": "Cho hàm số f(x) = (x^2+1)/(x-a). Tìm a để đồ thị hàm số có tiệm cận đứng x=3.",
174
- "p3": 0.3333333333333333,
175
- "p5": 0.2,
 
 
176
  "hierarchy_ok": true,
177
- "top3_types": [
178
  "correct",
179
  "related",
 
 
180
  "irrelevant"
181
  ]
182
  },
183
  {
184
  "query": "Tìm tiệm cận đứng của hàm số f(x) = ln(x).",
185
- "p3": 0.3333333333333333,
186
- "p5": 0.2,
 
 
187
  "hierarchy_ok": true,
188
- "top3_types": [
189
  "correct",
190
  "related",
 
 
191
  "irrelevant"
192
  ]
193
  },
194
  {
195
  "query": "Đồ thị hàm số y = tan(x) có những tiệm cận đứng nào?",
196
- "p3": 0.3333333333333333,
197
- "p5": 0.2,
 
 
198
  "hierarchy_ok": true,
199
- "top3_types": [
200
  "correct",
201
  "related",
 
 
202
  "irrelevant"
203
  ]
204
  },
205
  {
206
  "query": "Tìm tiệm cận của hàm số f(x) = (x^3 - 1) / (x^2 + 1).",
207
- "p3": 0.3333333333333333,
208
- "p5": 0.2,
 
 
209
  "hierarchy_ok": true,
210
- "top3_types": [
211
  "correct",
212
  "related",
 
 
213
  "irrelevant"
214
  ]
215
  },
216
  {
217
  "query": "Có những trường hợp đ��c biệt nào khi tìm tiệm cận mà ta cần lưu ý?",
218
- "p3": 0.3333333333333333,
219
- "p5": 0.2,
 
 
220
  "hierarchy_ok": true,
221
- "top3_types": [
222
  "correct",
223
  "related",
 
 
224
  "irrelevant"
225
  ]
226
  },
227
  {
228
  "query": "Hàm số f(x) = x + sin(x) có tiệm cận không? Giải thích.",
229
- "p3": 0.3333333333333333,
230
- "p5": 0.2,
 
 
231
  "hierarchy_ok": true,
232
- "top3_types": [
233
  "correct",
234
  "related",
 
 
235
  "irrelevant"
236
  ]
237
  },
238
  {
239
  "query": "Một hàm số không có điểm gián đoạn có thể có tiệm cận đứng không?",
240
- "p3": 0.3333333333333333,
241
- "p5": 0.2,
 
 
242
  "hierarchy_ok": false,
243
- "top3_types": [
244
- "irrelevant",
245
  "correct",
246
- "irrelevant"
 
 
 
247
  ]
248
  },
249
  {
250
  "query": "Nếu một hàm số có giới hạn tiến tới vô cùng khi x tiến tới vô cùng, điều đó có ý nghĩa gì về tiệm cận?",
251
- "p3": 0.3333333333333333,
252
- "p5": 0.2,
 
 
253
  "hierarchy_ok": true,
254
- "top3_types": [
255
  "correct",
256
  "related",
257
- "related"
 
 
258
  ]
259
  },
260
  {
261
  "query": "Nếu biết đồ thị hàm số đối xứng qua trục tung, ta có thể suy ra điều gì về hàm số đó?",
262
- "p3": 0.3333333333333333,
263
- "p5": 0.2,
264
- "hierarchy_ok": true,
265
- "top3_types": [
 
 
266
  "correct",
 
267
  "related",
 
268
  "related"
269
  ]
270
  },
271
  {
272
  "query": "Cho hàm số f(x) = x^3 - 3x^2 + 2, tìm giá trị lớn nhất và nhỏ nhất của hàm số trên đoạn [0, 3].",
273
- "p3": 0.3333333333333333,
274
- "p5": 0.2,
275
- "hierarchy_ok": false,
276
- "top3_types": [
277
- "related",
 
278
  "correct",
279
- "irrelevant"
 
 
 
280
  ]
281
  },
282
  {
283
  "query": "Làm sao để chứng minh một hàm số bậc ba đồng biến trên R?",
284
- "p3": 0.3333333333333333,
285
- "p5": 0.2,
 
 
286
  "hierarchy_ok": true,
287
- "top3_types": [
288
  "correct",
289
  "related",
290
- "irrelevant"
 
 
291
  ]
292
  },
293
  {
294
  "query": "Ứng dụng của đạo hàm trong việc tìm giá trị lớn nhất, nhỏ nhất của hàm số bậc ba trong một khoảng cho trước?",
295
- "p3": 0.3333333333333333,
296
- "p5": 0.2,
 
 
297
  "hierarchy_ok": true,
298
- "top3_types": [
299
  "correct",
300
  "related",
 
 
301
  "irrelevant"
302
  ]
303
  },
304
  {
305
  "query": "Cho hàm số f(x) = (x+1)/(x-2). Tìm tất cả các đường tiệm cận và tâm đối xứng của đồ thị hàm số.",
306
- "p3": 0.3333333333333333,
307
- "p5": 0.2,
 
 
308
  "hierarchy_ok": true,
309
- "top3_types": [
310
  "correct",
311
  "related",
 
 
312
  "irrelevant"
313
  ]
314
  },
315
  {
316
  "query": "Ứng dụng của việc khảo sát hàm phân thức bậc nhất trên bậc nhất trong thực tế là gì?",
317
- "p3": 0.3333333333333333,
318
- "p5": 0.2,
 
 
319
  "hierarchy_ok": true,
320
- "top3_types": [
321
  "correct",
322
  "related",
323
- "related"
 
 
324
  ]
325
  },
326
  {
327
  "query": "So sánh phương pháp khảo sát hàm phân thức bậc nhất trên bậc nh��t với phương pháp khảo sát hàm số bậc hai.",
328
- "p3": 0.3333333333333333,
329
- "p5": 0.2,
 
 
330
  "hierarchy_ok": true,
331
- "top3_types": [
332
  "correct",
333
  "related",
334
- "related"
 
 
335
  ]
336
  },
337
  {
338
  "query": "Trong một bài toán tối ưu về diện tích, nếu ta tìm được nghiệm âm, điều này có ý nghĩa gì và ta nên làm gì tiếp theo?",
339
- "p3": 0.3333333333333333,
340
- "p5": 0.2,
 
 
341
  "hierarchy_ok": false,
342
- "top3_types": [
343
  "related",
344
  "correct",
345
- "related"
 
 
346
  ]
347
  },
348
  {
349
  "query": "Một công ty muốn tối đa hóa lợi nhuận. Hãy mô tả cách họ có thể sử dụng phương pháp đạo hàm để giải quyết bài toán này, bao gồm cả việc xác định hàm mục tiêu và các ràng buộc.",
350
- "p3": 0.3333333333333333,
351
- "p5": 0.2,
352
- "hierarchy_ok": true,
353
- "top3_types": [
 
 
 
354
  "correct",
355
  "related",
356
- "related"
 
357
  ]
358
  },
359
  {
360
  "query": "Khi áp dụng đạo hàm để giải bài toán tối ưu, làm thế nào để chắc chắn rằng nghiệm tìm được là nghiệm tối ưu toàn cục, không phải chỉ là nghiệm cục bộ?",
361
- "p3": 0.3333333333333333,
362
- "p5": 0.2,
 
 
363
  "hierarchy_ok": true,
364
- "top3_types": [
365
  "correct",
366
  "related",
367
- "related"
 
 
368
  ]
369
  },
370
  {
371
  "query": "Một hình trụ có tổng diện tích bề mặt là S. Tìm bán kính đáy và chiều cao để thể tích hình trụ lớn nhất.",
372
- "p3": 0.3333333333333333,
373
- "p5": 0.2,
374
- "hierarchy_ok": false,
375
- "top3_types": [
 
 
376
  "correct",
 
377
  "irrelevant",
378
- "related"
 
379
  ]
380
  },
381
  {
382
  "query": "Cho hình chữ nhật có diện tích cố định. Chứng minh rằng hình chữ nhật có chu vi nhỏ nhất là hình vuông.",
383
- "p3": 0.3333333333333333,
384
- "p5": 0.2,
 
 
385
  "hierarchy_ok": false,
386
- "top3_types": [
387
  "correct",
388
  "irrelevant",
 
 
389
  "related"
390
  ]
391
  },
392
  {
393
  "query": "Một người có 100m hàng rào muốn rào một khu đất hình chữ nhật. Hỏi diện tích lớn nhất có thể rào được là bao nhiêu?",
394
- "p3": 0.3333333333333333,
395
- "p5": 0.2,
396
- "hierarchy_ok": false,
397
- "top3_types": [
 
 
398
  "correct",
 
399
  "irrelevant",
400
- "related"
 
401
  ]
402
  },
403
  {
404
  "query": "Trong thực tế, những yếu tố nào có thể ảnh hưởng đến bài toán tối ưu kinh tế, ngoài chi phí và giá bán?",
405
- "p3": 0.3333333333333333,
406
- "p5": 0.2,
 
 
407
  "hierarchy_ok": true,
408
- "top3_types": [
409
  "correct",
410
  "related",
411
- "related"
 
 
412
  ]
413
  },
414
  {
415
  "query": "So sánh bài toán tối ưu lợi nhuận với bài toán tối ưu chi phí?",
416
- "p3": 0.3333333333333333,
417
- "p5": 0.2,
 
 
418
  "hierarchy_ok": true,
419
- "top3_types": [
420
  "correct",
421
  "related",
422
- "related"
 
 
423
  ]
424
  },
425
  {
426
  "query": "Một công ty nên làm gì nếu dự đoán chi phí sản xuất tăng cao trong tương lai?",
427
- "p3": 0.3333333333333333,
428
- "p5": 0.2,
429
- "hierarchy_ok": true,
430
- "top3_types": [
 
 
431
  "correct",
 
 
432
  "related",
433
- "irrelevant"
434
  ]
435
  },
436
  {
437
  "query": "Cho ba điểm A, B, C. Biết rằng vectơ AB = 2 * vectơ AC. Ba điểm này có thẳng hàng không? Giải thích.",
438
- "p3": 0.3333333333333333,
439
- "p5": 0.2,
 
 
440
  "hierarchy_ok": true,
441
- "top3_types": [
442
  "correct",
443
  "related",
444
- "related"
 
 
445
  ]
446
  },
447
  {
448
  "query": "Cho 4 điểm A, B, C, D. Nếu không tồn tại các số thực m, n sao cho vectơ AD = m*vectơ AB + n*vectơ AC, điều này có nghĩa gì?",
449
- "p3": 0.3333333333333333,
450
- "p5": 0.2,
451
- "hierarchy_ok": true,
452
- "top3_types": [
 
 
 
453
  "correct",
454
  "related",
 
455
  "related"
456
  ]
457
  },
458
  {
459
  "query": "Khi nào việc sử dụng vectơ để chứng minh thẳng hàng hoặc đồng phẳng trở nên khó khăn và cần sử dụng phương pháp khác?",
460
- "p3": 0.3333333333333333,
461
- "p5": 0.2,
 
 
462
  "hierarchy_ok": true,
463
- "top3_types": [
464
  "correct",
465
  "related",
 
 
466
  "related"
467
  ]
468
  },
469
  {
470
  "query": "Cho hình bình hành ABCD, gọi O là giao điểm của AC và BD. Hãy biểu diễn \\(\\overrightarrow{AO}\\) theo \\(\\overrightarrow{AB}\\) và \\(\\overrightarrow{AD}\\).",
471
- "p3": 0.3333333333333333,
472
- "p5": 0.2,
 
 
473
  "hierarchy_ok": true,
474
- "top3_types": [
475
  "correct",
476
  "related",
 
 
477
  "related"
478
  ]
479
  },
480
  {
481
  "query": "Trong hình hộp \\(ABCD.EFGH\\), tìm vectơ tổng của \\(\\overrightarrow{AB}\\), \\(\\overrightarrow{AD}\\), và \\(\\overrightarrow{AA'}\\), biết A' là một điểm bất kỳ trên cạnh AE.",
482
- "p3": 0.3333333333333333,
483
- "p5": 0.2,
 
 
484
  "hierarchy_ok": true,
485
- "top3_types": [
486
  "correct",
487
  "related",
488
- "related"
 
 
489
  ]
490
  },
491
  {
492
  "query": "Áp dụng các tính chất của phép toán vectơ, chứng minh rằng trung điểm của một đoạn thẳng chia đoạn thẳng đó thành hai vectơ bằng nhau.",
493
- "p3": 0.3333333333333333,
494
- "p5": 0.2,
495
- "hierarchy_ok": true,
496
- "top3_types": [
 
 
 
497
  "correct",
498
  "related",
499
- "related"
 
500
  ]
501
  },
502
  {
503
  "query": "Khi nào thì việc sử dụng hệ trục tọa độ Oxyz là cần thiết thay vì hệ trục tọa độ Oxy?",
504
- "p3": 0.3333333333333333,
505
- "p5": 0.2,
 
 
506
  "hierarchy_ok": true,
507
- "top3_types": [
508
  "correct",
509
  "related",
510
- "related"
 
 
511
  ]
512
  },
513
  {
514
  "query": "Cho điểm M(x; y; z). Tìm điều kiện để điểm M nằm trên đường thẳng đi qua gốc O và song song với trục Oz.",
515
- "p3": 0.3333333333333333,
516
- "p5": 0.2,
 
 
517
  "hierarchy_ok": true,
518
- "top3_types": [
519
  "correct",
520
  "related",
521
- "related"
 
 
522
  ]
523
  },
524
  {
525
  "query": "Điểm M(a; b; c) thỏa mãn điều kiện gì để nó cách đều các trục Ox, Oy, Oz?",
526
- "p3": 0.3333333333333333,
527
- "p5": 0.2,
 
 
528
  "hierarchy_ok": true,
529
- "top3_types": [
530
  "correct",
531
  "related",
532
- "related"
 
 
533
  ]
534
  },
535
  {
536
  "query": "Cho hình lập phương ABCD.A'B'C'D' với A(0;0;0), B(1;0;0), D(0;1;0), A'(0;0;1). Tìm tọa độ trọng tâm tứ diện ABA'C'.",
537
- "p3": 0.3333333333333333,
538
- "p5": 0.2,
 
 
539
  "hierarchy_ok": true,
540
- "top3_types": [
541
  "correct",
542
  "related",
 
 
543
  "related"
544
  ]
545
  },
546
  {
547
  "query": "Chứng minh rằng trọng tâm của tam giác chia mỗi đường trung tuyến của tam giác đó theo tỉ lệ 2:1.",
548
- "p3": 0.3333333333333333,
549
- "p5": 0.2,
 
 
550
  "hierarchy_ok": true,
551
- "top3_types": [
552
  "correct",
553
  "related",
 
 
554
  "related"
555
  ]
556
  },
557
  {
558
  "query": "Một đoạn thẳng AB có độ dài bằng 5 và trung điểm I có tọa độ (1;2;3). Tìm tất cả các khả năng tọa độ của A và B.",
559
- "p3": 0.3333333333333333,
560
- "p5": 0.2,
 
 
561
  "hierarchy_ok": true,
562
- "top3_types": [
563
  "correct",
564
  "related",
565
- "related"
 
 
566
  ]
567
  },
568
  {
569
  "query": "Cho hình hộp chữ nhật ABCD.A'B'C'D' với A(0;0;0), B(2;0;0), D(0;2;0), A'(0;0;2). Tính góc giữa hai vectơ AC' và BD.",
570
- "p3": 0.3333333333333333,
571
- "p5": 0.2,
 
 
572
  "hierarchy_ok": true,
573
- "top3_types": [
574
  "correct",
575
  "related",
576
- "related"
 
 
577
  ]
578
  },
579
  {
580
  "query": "Cho hai vectơ a và b thỏa mãn |a| = 2, |b| = 3 và (a, b) = 60 độ. Tính |a + b|.",
581
- "p3": 0.3333333333333333,
582
- "p5": 0.2,
 
 
583
  "hierarchy_ok": true,
584
- "top3_types": [
585
  "correct",
586
  "related",
 
 
587
  "related"
588
  ]
589
  },
590
  {
591
  "query": "Tìm tất cả các giá trị của m để hai vectơ a = (m; 2; 1) và b = (2; m; -4) vuông góc với nhau.",
592
- "p3": 0.3333333333333333,
593
- "p5": 0.2,
 
 
594
  "hierarchy_ok": true,
595
- "top3_types": [
596
  "correct",
597
  "related",
 
 
598
  "related"
599
  ]
600
  },
601
  {
602
  "query": "So với trung bình và độ lệch chuẩn, khoảng biến thiên và IQR có ưu điểm gì?",
603
- "p3": 0.3333333333333333,
604
- "p5": 0.2,
 
 
605
  "hierarchy_ok": false,
606
- "top3_types": [
607
  "related",
608
  "correct",
 
 
609
  "related"
610
  ]
611
  },
612
  {
613
  "query": "Khi nào thì khoảng biến thiên và khoảng tứ phân vị cho kết quả tương tự?",
614
- "p3": 0.3333333333333333,
615
- "p5": 0.2,
 
 
616
  "hierarchy_ok": true,
617
- "top3_types": [
618
  "correct",
619
  "related",
620
- "related"
 
 
621
  ]
622
  },
623
  {
624
  "query": "Nếu biết IQR, có thể suy ra khoảng biến thiên không? Tại sao?",
625
- "p3": 0.3333333333333333,
626
- "p5": 0.2,
 
 
627
  "hierarchy_ok": true,
628
- "top3_types": [
629
  "correct",
630
  "related",
631
- "related"
 
 
632
  ]
633
  },
634
  {
635
  "query": "Cho bảng dữ liệu ghép nhóm, nếu bạn biết Q1, Q3, bạn có thể suy ra điều gì về phân bố của dữ liệu?",
636
- "p3": 0.3333333333333333,
637
- "p5": 0.2,
 
 
638
  "hierarchy_ok": true,
639
- "top3_types": [
640
  "correct",
641
  "related",
642
- "related"
 
 
643
  ]
644
  },
645
  {
646
  "query": "Một công ty sử dụng IQR để phân tích doanh số hàng tháng. Nếu IQR tăng đột ngột, điều này có thể báo hiệu điều gì?",
647
- "p3": 0.3333333333333333,
648
- "p5": 0.2,
 
 
649
  "hierarchy_ok": true,
650
- "top3_types": [
651
  "correct",
652
  "related",
 
 
653
  "related"
654
  ]
655
  },
656
  {
657
  "query": "Nếu Q1 = 20 và Q3 = 50, hãy ước tính xem có bao nhiêu phần trăm dữ liệu nằm giữa 20 và 50.",
658
- "p3": 0.3333333333333333,
659
- "p5": 0.2,
 
 
660
  "hierarchy_ok": true,
661
- "top3_types": [
662
  "correct",
663
  "related",
 
 
664
  "related"
665
  ]
666
  },
667
  {
668
  "query": "Một tập dữ liệu có trung bình là 50 và độ lệch chuẩn là 5. Giá trị 65 có phải là một giá trị bất thường không?",
669
- "p3": 0.3333333333333333,
670
- "p5": 0.2,
 
 
671
  "hierarchy_ok": true,
672
- "top3_types": [
673
  "correct",
674
  "related",
 
 
675
  "related"
676
  ]
677
  },
678
  {
679
  "query": "So sánh ý nghĩa của việc sử dụng phương sai mẫu (sample variance) và phương sai quần thể (population variance).",
680
- "p3": 0.3333333333333333,
681
- "p5": 0.2,
 
 
682
  "hierarchy_ok": true,
683
- "top3_types": [
684
  "correct",
685
  "related",
 
 
686
  "related"
687
  ]
688
  },
689
  {
690
  "query": "Một nhà máy sản xuất bóng đèn có độ lệch chuẩn về tuổi thọ là 100 giờ. Làm thế nào để giảm độ lệch chuẩn này?",
691
- "p3": 0.3333333333333333,
692
- "p5": 0.2,
 
 
693
  "hierarchy_ok": true,
694
- "top3_types": [
695
  "correct",
696
  "related",
 
 
697
  "related"
698
  ]
699
  },
700
  {
701
  "query": "Trong thực tế, khi nào việc sử dụng phương sai quan trọng hơn so với độ lệch chuẩn, và ngược lại?",
702
- "p3": 0.3333333333333333,
703
- "p5": 0.2,
 
 
704
  "hierarchy_ok": false,
705
- "top3_types": [
706
  "related",
707
  "correct",
 
 
708
  "related"
709
  ]
710
  },
711
  {
712
  "query": "Nếu có một tập dữ liệu lớn với nhiều ngoại lệ, phương sai và độ lệch chuẩn có bị ảnh hưởng nhiều không? Giải thích.",
713
- "p3": 0.3333333333333333,
714
- "p5": 0.2,
 
 
715
  "hierarchy_ok": false,
716
- "top3_types": [
717
  "related",
718
  "correct",
719
- "related"
 
 
720
  ]
721
  },
722
  {
723
  "query": "Làm thế nào để ước lượng độ lệch chuẩn của một tập dữ liệu mà không cần tính toán chính xác?",
724
- "p3": 0.3333333333333333,
725
- "p5": 0.2,
 
 
726
  "hierarchy_ok": false,
727
- "top3_types": [
728
  "related",
729
  "correct",
 
 
730
  "related"
731
  ]
732
  },
733
  {
734
  "query": "Giả sử bạn có hai bộ dữ liệu: một đo lường chiều cao của học sinh tiểu học (đơn vị cm) và một đo lường thu nhập của người lớn (đơn vị USD). Bạn muốn so sánh mức độ biến động của hai bộ dữ liệu này. Chỉ số nào phù hợp nhất để sử dụng và tại sao?",
735
- "p3": 0.3333333333333333,
736
- "p5": 0.2,
737
- "hierarchy_ok": false,
738
- "top3_types": [
739
- "related",
 
740
  "correct",
 
 
 
741
  "related"
742
  ]
743
  },
744
  {
745
  "query": "Một công ty muốn đánh giá mức độ đồng đều trong năng suất làm việc của nhân viên ở hai phòng ban. Biết rằng dữ liệu năng suất có một vài giá trị ngoại lệ do sự cố kỹ thuật. Bạn nên sử dụng chỉ số nào để so sánh và tại sao?",
746
- "p3": 0.3333333333333333,
747
- "p5": 0.2,
748
- "hierarchy_ok": false,
749
- "top3_types": [
750
- "related",
 
751
  "correct",
 
 
 
752
  "related"
753
  ]
754
  },
755
  {
756
  "query": "Bạn có một tập dữ liệu về thời gian hoàn thành một dự án. Sau khi phân tích, bạn nhận thấy khoảng biến thiên rất lớn nhưng IQR lại khá nhỏ. Điều này cho thấy điều gì về dữ liệu và bạn nên ưu tiên sử dụng chỉ số nào để mô tả độ phân tán?",
757
- "p3": 0.3333333333333333,
758
- "p5": 0.2,
759
- "hierarchy_ok": false,
760
- "top3_types": [
761
- "related",
 
762
  "correct",
763
- "related"
 
 
 
764
  ]
765
  },
766
  {
767
  "query": "Một cấp số cộng có u_1 = 2 và u_5 = 14. Tìm u_10.",
768
- "p3": 0.3333333333333333,
769
- "p5": 0.2,
 
 
770
  "hierarchy_ok": true,
771
- "top3_types": [
772
  "correct",
773
  "related",
774
- "related"
 
 
775
  ]
776
  },
777
  {
778
  "query": "Một người vay ngân hàng 100 triệu đồng với lãi suất hàng tháng tính theo cấp số cộng. Biết tháng đầu trả 2 triệu, tháng thứ hai trả 2.1 triệu. Hỏi tháng thứ 10 người đó phải trả bao nhiêu tiền?",
779
- "p3": 0.3333333333333333,
780
- "p5": 0.2,
 
 
781
  "hierarchy_ok": false,
782
- "top3_types": [
783
  "related",
784
  "correct",
 
 
785
  "irrelevant"
786
  ]
787
  },
788
  {
789
  "query": "Cho cấp số cộng (u_n) có u_1 = -3, d = 2. Hỏi số 2021 có phải là một số hạng của cấp số cộng này không? Vì sao?",
790
- "p3": 0.3333333333333333,
791
- "p5": 0.2,
 
 
792
  "hierarchy_ok": true,
793
- "top3_types": [
794
  "correct",
795
  "related",
796
- "related"
 
 
797
  ]
798
  },
799
  {
800
  "query": "Cho cấp số cộng có tổng 20 số hạng đầu là 500, và tổng 30 số hạng đầu là 1050. Tính số hạng đầu và công sai của cấp số cộng này.",
801
- "p3": 0.3333333333333333,
802
- "p5": 0.2,
 
 
803
  "hierarchy_ok": true,
804
- "top3_types": [
805
  "correct",
806
  "related",
807
- "related"
 
 
808
  ]
809
  },
810
  {
811
  "query": "Một người đi xe đạp leo dốc. Trong phút đầu tiên, người đó đi được 200 mét. Mỗi phút sau, quãng đường đi được giảm 10 mét so với phút trước. Hỏi sau bao lâu người đó dừng lại (khi quãng đường đi được trong phút đó là 0 hoặc âm)? Tính tổng quãng đường đi được trước khi dừng.",
812
- "p3": 0.3333333333333333,
813
- "p5": 0.2,
 
 
814
  "hierarchy_ok": true,
815
- "top3_types": [
816
  "correct",
817
  "related",
 
 
818
  "related"
819
  ]
820
  },
821
  {
822
  "query": "Một người muốn mua một căn nhà trả góp. Mỗi tháng, người đó trả một số tiền cố định, và số tiền trả mỗi tháng giảm dần theo cấp số cộng. Tháng đầu trả 10 triệu, mỗi tháng sau giảm 200 nghìn. Nếu tổng số tiền phải trả là 1 tỷ đồng, hỏi người đó phải trả trong bao nhiêu tháng?",
823
- "p3": 0.3333333333333333,
824
- "p5": 0.2,
 
 
825
  "hierarchy_ok": true,
826
- "top3_types": [
827
  "correct",
828
  "related",
829
- "related"
 
 
830
  ]
831
  },
832
  {
833
  "query": "Tìm công thức tổng quát cho tổng các số lẻ từ 1 đến 2n-1 sử dụng công thức cấp số cộng.",
834
- "p3": 0.3333333333333333,
835
- "p5": 0.2,
 
 
836
  "hierarchy_ok": true,
837
- "top3_types": [
838
  "correct",
839
  "related",
 
 
840
  "irrelevant"
841
  ]
842
  },
843
  {
844
  "query": "Một cấp số cộng có tổng của 5 số hạng đầu là 30 và tổng của 10 số hạng đầu là 80. Tìm số hạng thứ 15 của cấp số cộng này.",
845
- "p3": 0.3333333333333333,
846
- "p5": 0.2,
 
 
847
  "hierarchy_ok": true,
848
- "top3_types": [
849
  "correct",
850
  "related",
 
 
851
  "related"
852
  ]
853
  },
854
  {
855
  "query": "Nếu một khoản đầu tư tăng trưởng theo cấp số nhân với tỷ lệ 10% mỗi năm, sau 5 năm, khoản đầu tư ban đầu sẽ tăng lên bao nhiêu lần?",
856
- "p3": 0.3333333333333333,
857
- "p5": 0.2,
 
 
858
  "hierarchy_ok": false,
859
- "top3_types": [
860
  "related",
861
  "correct",
862
- "related"
 
 
863
  ]
864
  },
865
  {
866
  "query": "Một quần thể vi khuẩn tăng trưởng theo cấp số nhân, cứ sau mỗi giờ số lượng tăng gấp đôi. Nếu ban đầu có 1000 vi khuẩn, sau 4 giờ sẽ có bao nhiêu vi khuẩn?",
867
- "p3": 0.3333333333333333,
868
- "p5": 0.2,
 
 
869
  "hierarchy_ok": false,
870
- "top3_types": [
871
  "related",
872
  "correct",
873
- "related"
 
 
874
  ]
875
  },
876
  {
877
  "query": "Một chất phóng xạ giảm đi một nửa sau mỗi chu kỳ bán rã. Nếu ban đầu có 100g chất này, sau 3 chu kỳ bán rã sẽ còn lại bao nhiêu gam?",
878
- "p3": 0.3333333333333333,
879
- "p5": 0.2,
 
 
880
  "hierarchy_ok": false,
881
- "top3_types": [
882
- "related",
883
  "related",
884
- "correct"
 
 
885
  ]
886
  },
887
  {
888
  "query": "Một người đầu tư 100 triệu đồng vào một quỹ tăng trưởng với tỷ lệ 15% mỗi năm. Hỏi sau 5 năm, số tiền của người đó là bao nhiêu (làm tròn đến hàng triệu)?",
889
- "p3": 0.3333333333333333,
890
- "p5": 0.2,
 
 
891
  "hierarchy_ok": false,
892
- "top3_types": [
893
  "related",
894
  "related",
895
- "correct"
 
 
896
  ]
897
  },
898
  {
899
  "query": "Một loại vi khuẩn sinh sản theo cấp số nhân, cứ mỗi 20 phút số lượng tăng gấp đôi. Nếu ban đầu có 1000 con, sau 2 giờ sẽ có bao nhiêu con?",
900
- "p3": 0.3333333333333333,
901
- "p5": 0.2,
 
 
902
  "hierarchy_ok": false,
903
- "top3_types": [
904
  "related",
905
  "correct",
906
- "related"
 
 
907
  ]
908
  },
909
  {
910
  "query": "Một quả bóng rơi từ độ cao 10 mét, mỗi lần chạm đất nảy lên 60% độ cao ban đầu. Tính tổng quãng đường mà quả bóng đi được cho đến khi dừng lại (coi như dừng hẳn khi độ cao nảy là rất nhỏ).",
911
- "p3": 0.0,
912
- "p5": 0.2,
 
 
913
  "hierarchy_ok": false,
914
- "top3_types": [
915
  "related",
 
 
916
  "related",
917
  "related"
918
  ]
919
  },
920
  {
921
  "query": "Có 10 người tham gia một cuộc họp. Có bao nhiêu cách xếp họ ngồi quanh một bàn tròn sao cho 2 người A và B luôn ngồi cạnh nhau?",
922
- "p3": 0.3333333333333333,
923
- "p5": 0.2,
 
 
924
  "hierarchy_ok": true,
925
- "top3_types": [
926
  "correct",
927
  "related",
928
- "related"
 
 
929
  ]
930
  },
931
  {
932
  "query": "Một người có 5 áo và 3 quần. Hỏi người đó có bao nhiêu cách chọn một bộ quần áo để mặc?",
933
- "p3": 0.3333333333333333,
934
- "p5": 0.2,
 
 
935
  "hierarchy_ok": true,
936
- "top3_types": [
937
  "correct",
938
  "related",
939
- "related"
 
 
940
  ]
941
  },
942
  {
943
  "query": "Giải thích ý nghĩa của việc 'quan tâm đến thứ tự' trong hoán vị và chỉnh hợp bằng một ví dụ cụ thể.",
944
- "p3": 0.3333333333333333,
945
- "p5": 0.2,
 
 
946
  "hierarchy_ok": true,
947
- "top3_types": [
948
  "correct",
949
  "related",
950
- "irrelevant"
 
 
951
  ]
952
  },
953
  {
954
  "query": "Một hộp có 5 bi đỏ và 7 bi xanh. Lấy ngẫu nhiên 3 bi. Tính số cách lấy được ít nhất 2 bi đỏ.",
955
- "p3": 0.3333333333333333,
956
- "p5": 0.2,
 
 
957
  "hierarchy_ok": false,
958
- "top3_types": [
959
  "related",
960
- "correct",
961
- "related"
 
 
962
  ]
963
  },
964
  {
965
  "query": "Trong khai triển (x - 1)^5, hệ số của x^3 là bao nhiêu?",
966
- "p3": 0.3333333333333333,
967
- "p5": 0.2,
968
- "hierarchy_ok": true,
969
- "top3_types": [
 
 
970
  "correct",
 
 
971
  "related",
972
  "related"
973
  ]
974
  },
975
  {
976
  "query": "Cho 10 điểm phân biệt trên mặt phẳng, trong đó không có 3 điểm nào thẳng hàng. Có thể vẽ được bao nhiêu tam giác từ 10 điểm này?",
977
- "p3": 0.3333333333333333,
978
- "p5": 0.2,
979
- "hierarchy_ok": false,
980
- "top3_types": [
981
- "irrelevant",
 
 
982
  "related",
983
- "correct"
 
 
984
  ]
985
  },
986
  {
987
  "query": "Khi nào thì A_n^k = C_n^k?",
988
- "p3": 0.3333333333333333,
989
- "p5": 0.2,
 
 
990
  "hierarchy_ok": true,
991
- "top3_types": [
992
  "correct",
993
  "related",
994
- "related"
 
 
995
  ]
996
  },
997
  {
998
  "query": "Có bao nhiêu cách xếp 5 người vào một hàng ghế sao cho hai người A và B luôn ngồi cạnh nhau?",
999
- "p3": 0.3333333333333333,
1000
- "p5": 0.2,
 
 
1001
  "hierarchy_ok": false,
1002
- "top3_types": [
 
1003
  "related",
1004
  "correct",
1005
- "related"
 
1006
  ]
1007
  },
1008
  {
1009
  "query": "Một hộp có 5 bi đỏ và 3 bi xanh. Chọn ngẫu nhiên 3 bi. Tính số cách chọn sao cho có ít nhất 2 bi đỏ.",
1010
- "p3": 0.3333333333333333,
1011
- "p5": 0.2,
 
 
1012
  "hierarchy_ok": false,
1013
- "top3_types": [
1014
  "related",
 
 
1015
  "related",
1016
- "correct"
1017
  ]
1018
  },
1019
  {
1020
  "query": "Một lớp có 30 học sinh. Cần chọn một ban cán sự lớp gồm 1 lớp trưởng, 1 lớp phó và 3 ủy viên. Hỏi có bao nhiêu cách chọn?",
1021
- "p3": 0.3333333333333333,
1022
- "p5": 0.2,
 
 
1023
  "hierarchy_ok": false,
1024
- "top3_types": [
1025
  "related",
1026
  "related",
 
 
1027
  "correct"
1028
  ]
1029
  }
1030
  ],
1031
- "avg_precision_at_3": 0.3261648745519709,
1032
- "avg_precision_at_5": 0.19784946236559103,
1033
- "hierarchy_rate": 0.6774193548387096,
1034
- "evaluation_date": "2025-06-25T03:47:05.634232",
1035
- "note": "Final evaluation on test data - used only once"
 
 
1036
  }
 
1
  {
2
+ "total_reciprocal_rank": 78.525,
3
+ "recall_at_3": 88,
4
+ "recall_at_5": 90,
5
  "total_queries": 93,
6
+ "hierarchy_maintained": 62,
7
+ "rank_distribution": {
8
+ "1": 68,
9
+ "8": 1,
10
+ "2": 18,
11
+ "6": 2,
12
+ "3": 2,
13
+ "5": 2
14
+ },
15
+ "mrr_breakdown": {
16
+ "rank_1": 68,
17
+ "rank_2": 18,
18
+ "rank_3": 2,
19
+ "rank_4_5": 2,
20
+ "rank_6_plus": 3
21
+ },
22
  "query_details": [
23
  {
24
  "query": "Giả sử bạn chỉ có bảng biến thiên của f'(x), làm sao xác định được khoảng đồng biến và nghịch biến của f(x)?",
25
+ "correct_rank": 1,
26
+ "reciprocal_rank": 1.0,
27
+ "recall_3": 1,
28
+ "recall_5": 1,
29
  "hierarchy_ok": true,
30
+ "top5_types": [
31
  "correct",
32
  "related",
33
+ "related",
34
+ "irrelevant",
35
  "irrelevant"
36
  ]
37
  },
38
  {
39
  "query": "Nếu f'(x) = 0 tại một điểm trong khoảng (a, b), điểm đó có phải luôn là điểm cực trị không? Tại sao?",
40
+ "correct_rank": 8,
41
+ "reciprocal_rank": 0.125,
42
+ "recall_3": 0,
43
+ "recall_5": 0,
44
  "hierarchy_ok": false,
45
+ "top5_types": [
46
  "related",
47
  "related",
48
+ "related",
49
+ "related",
50
+ "irrelevant"
51
  ]
52
  },
53
  {
54
  "query": "Cho một hàm số biết đồng biến trên R. Hãy chứng minh f(x+1)>f(x) với mọi x.",
55
+ "correct_rank": 1,
56
+ "reciprocal_rank": 1.0,
57
+ "recall_3": 1,
58
+ "recall_5": 1,
59
  "hierarchy_ok": true,
60
+ "top5_types": [
61
  "correct",
62
  "related",
63
+ "irrelevant",
64
+ "related",
65
  "irrelevant"
66
  ]
67
  },
68
  {
69
  "query": "Giả sử bạn có một hàm số mà đạo hàm bậc nhất của nó luôn dương. Hàm số này có cực trị không? Tại sao?",
70
+ "correct_rank": 1,
71
+ "reciprocal_rank": 1.0,
72
+ "recall_3": 1,
73
+ "recall_5": 1,
74
  "hierarchy_ok": true,
75
+ "top5_types": [
76
  "correct",
77
  "related",
78
+ "related",
79
+ "related",
80
  "related"
81
  ]
82
  },
83
  {
84
  "query": "Bạn có một hàm số có đạo hàm tại x = 0 bằng 0. Làm thế nào bạn có thể xác định chắc chắn rằng x = 0 là một điểm cực trị?",
85
+ "correct_rank": 1,
86
+ "reciprocal_rank": 1.0,
87
+ "recall_3": 1,
88
+ "recall_5": 1,
89
  "hierarchy_ok": true,
90
+ "top5_types": [
91
  "correct",
92
  "related",
93
+ "related",
94
+ "related",
95
  "related"
96
  ]
97
  },
98
  {
99
  "query": "Cho hàm số y = x^4. Tại x = 0, f'(x) = 0 và f''(x) = 0. Điểm này có phải là cực trị không? Tại sao?",
100
+ "correct_rank": 1,
101
+ "reciprocal_rank": 1.0,
102
+ "recall_3": 1,
103
+ "recall_5": 1,
104
  "hierarchy_ok": true,
105
+ "top5_types": [
106
  "correct",
107
  "related",
108
+ "related",
109
+ "related",
110
  "related"
111
  ]
112
  },
113
  {
114
  "query": "Cho hàm số f(x) = x^2 - 4x + 3. Tìm các điểm cực trị của hàm số này.",
115
+ "correct_rank": 2,
116
+ "reciprocal_rank": 0.5,
117
+ "recall_3": 1,
118
+ "recall_5": 1,
119
  "hierarchy_ok": false,
120
+ "top5_types": [
121
  "related",
122
  "correct",
123
+ "related",
124
+ "related",
125
  "related"
126
  ]
127
  },
128
  {
129
  "query": "Một hàm số có thể có bao nhiêu điểm cực trị tối đa? Cho ví dụ.",
130
+ "correct_rank": 2,
131
+ "reciprocal_rank": 0.5,
132
+ "recall_3": 1,
133
+ "recall_5": 1,
134
  "hierarchy_ok": false,
135
+ "top5_types": [
136
  "related",
137
  "correct",
138
+ "related",
139
+ "irrelevant",
140
  "related"
141
  ]
142
  },
143
  {
144
  "query": "Khi nào thì việc tìm cực trị trở nên phức tạp và cần đến các phương pháp khác?",
145
+ "correct_rank": 1,
146
+ "reciprocal_rank": 1.0,
147
+ "recall_3": 1,
148
+ "recall_5": 1,
149
  "hierarchy_ok": true,
150
+ "top5_types": [
151
  "correct",
152
  "related",
153
+ "related",
154
+ "related",
155
+ "irrelevant"
156
  ]
157
  },
158
  {
159
  "query": "Một hàm số có thể có vô số cực trị nhưng không có giá trị lớn nhất hoặc nhỏ nh��t không? Cho ví dụ.",
160
+ "correct_rank": 1,
161
+ "reciprocal_rank": 1.0,
162
+ "recall_3": 1,
163
+ "recall_5": 1,
164
  "hierarchy_ok": true,
165
+ "top5_types": [
166
  "correct",
167
  "related",
168
+ "related",
169
+ "related",
170
+ "irrelevant"
171
  ]
172
  },
173
  {
174
  "query": "Cho một hàm số $f(x)$ liên tục trên đoạn [a, b] và $f(a) = f(b)$. Chứng minh rằng tồn tại ít nhất một điểm c thuộc (a, b) sao cho $f'(c) = 0$. (Ứng dụng định lý Rolle và liên hệ với giá trị lớn nhất/nhỏ nhất)",
175
+ "correct_rank": 2,
176
+ "reciprocal_rank": 0.5,
177
+ "recall_3": 1,
178
+ "recall_5": 1,
179
  "hierarchy_ok": false,
180
+ "top5_types": [
181
  "related",
182
  "correct",
183
+ "related",
184
+ "related",
185
  "related"
186
  ]
187
  },
188
  {
189
  "query": "Làm thế nào để áp dụng định lý Weierstrass để giải quyết các bài toán tối ưu hóa?",
190
+ "correct_rank": 1,
191
+ "reciprocal_rank": 1.0,
192
+ "recall_3": 1,
193
+ "recall_5": 1,
194
+ "hierarchy_ok": false,
195
+ "top5_types": [
196
  "correct",
197
+ "irrelevant",
198
  "related",
199
+ "related",
200
+ "irrelevant"
201
  ]
202
  },
203
  {
204
  "query": "Hãy mô tả tình huống một bài toán thực tế có thể được giải quyết bằng cách tìm giá trị lớn nhất hoặc nhỏ nhất của một hàm số.",
205
+ "correct_rank": 2,
206
+ "reciprocal_rank": 0.5,
207
+ "recall_3": 1,
208
+ "recall_5": 1,
209
+ "hierarchy_ok": false,
210
+ "top5_types": [
211
+ "related",
212
  "correct",
213
  "related",
214
+ "related",
215
  "related"
216
  ]
217
  },
218
  {
219
  "query": "Cho hàm số f(x) = x^2 - 4x + 5. Không cần tính toán, hãy giải thích các bước để tìm giá trị nhỏ nhất của hàm số này trên khoảng (0, 4).",
220
+ "correct_rank": 1,
221
+ "reciprocal_rank": 1.0,
222
+ "recall_3": 1,
223
+ "recall_5": 1,
224
  "hierarchy_ok": true,
225
+ "top5_types": [
226
  "correct",
227
  "related",
228
+ "related",
229
+ "related",
230
  "related"
231
  ]
232
  },
233
  {
234
  "query": "Nếu bạn chỉ tính giá trị của hàm số tại các đầu mút của đoạn [a,b], bạn có thể bỏ sót giá trị lớn nhất hoặc nhỏ nhất thực sự của hàm số không? Tại sao?",
235
+ "correct_rank": 2,
236
+ "reciprocal_rank": 0.5,
237
+ "recall_3": 1,
238
+ "recall_5": 1,
239
  "hierarchy_ok": false,
240
+ "top5_types": [
241
  "related",
242
  "correct",
243
+ "related",
244
+ "related",
245
  "related"
246
  ]
247
  },
248
  {
249
  "query": "Cho hàm số f(x) = (x^2+1)/(x-a). Tìm a để đồ thị hàm số có tiệm cận đứng x=3.",
250
+ "correct_rank": 1,
251
+ "reciprocal_rank": 1.0,
252
+ "recall_3": 1,
253
+ "recall_5": 1,
254
  "hierarchy_ok": true,
255
+ "top5_types": [
256
  "correct",
257
  "related",
258
+ "irrelevant",
259
+ "irrelevant",
260
  "irrelevant"
261
  ]
262
  },
263
  {
264
  "query": "Tìm tiệm cận đứng của hàm số f(x) = ln(x).",
265
+ "correct_rank": 1,
266
+ "reciprocal_rank": 1.0,
267
+ "recall_3": 1,
268
+ "recall_5": 1,
269
  "hierarchy_ok": true,
270
+ "top5_types": [
271
  "correct",
272
  "related",
273
+ "irrelevant",
274
+ "irrelevant",
275
  "irrelevant"
276
  ]
277
  },
278
  {
279
  "query": "Đồ thị hàm số y = tan(x) có những tiệm cận đứng nào?",
280
+ "correct_rank": 1,
281
+ "reciprocal_rank": 1.0,
282
+ "recall_3": 1,
283
+ "recall_5": 1,
284
  "hierarchy_ok": true,
285
+ "top5_types": [
286
  "correct",
287
  "related",
288
+ "irrelevant",
289
+ "irrelevant",
290
  "irrelevant"
291
  ]
292
  },
293
  {
294
  "query": "Tìm tiệm cận của hàm số f(x) = (x^3 - 1) / (x^2 + 1).",
295
+ "correct_rank": 1,
296
+ "reciprocal_rank": 1.0,
297
+ "recall_3": 1,
298
+ "recall_5": 1,
299
  "hierarchy_ok": true,
300
+ "top5_types": [
301
  "correct",
302
  "related",
303
+ "irrelevant",
304
+ "irrelevant",
305
  "irrelevant"
306
  ]
307
  },
308
  {
309
  "query": "Có những trường hợp đ��c biệt nào khi tìm tiệm cận mà ta cần lưu ý?",
310
+ "correct_rank": 1,
311
+ "reciprocal_rank": 1.0,
312
+ "recall_3": 1,
313
+ "recall_5": 1,
314
  "hierarchy_ok": true,
315
+ "top5_types": [
316
  "correct",
317
  "related",
318
+ "irrelevant",
319
+ "irrelevant",
320
  "irrelevant"
321
  ]
322
  },
323
  {
324
  "query": "Hàm số f(x) = x + sin(x) có tiệm cận không? Giải thích.",
325
+ "correct_rank": 1,
326
+ "reciprocal_rank": 1.0,
327
+ "recall_3": 1,
328
+ "recall_5": 1,
329
  "hierarchy_ok": true,
330
+ "top5_types": [
331
  "correct",
332
  "related",
333
+ "irrelevant",
334
+ "irrelevant",
335
  "irrelevant"
336
  ]
337
  },
338
  {
339
  "query": "Một hàm số không có điểm gián đoạn có thể có tiệm cận đứng không?",
340
+ "correct_rank": 1,
341
+ "reciprocal_rank": 1.0,
342
+ "recall_3": 1,
343
+ "recall_5": 1,
344
  "hierarchy_ok": false,
345
+ "top5_types": [
 
346
  "correct",
347
+ "irrelevant",
348
+ "related",
349
+ "irrelevant",
350
+ "related"
351
  ]
352
  },
353
  {
354
  "query": "Nếu một hàm số có giới hạn tiến tới vô cùng khi x tiến tới vô cùng, điều đó có ý nghĩa gì về tiệm cận?",
355
+ "correct_rank": 1,
356
+ "reciprocal_rank": 1.0,
357
+ "recall_3": 1,
358
+ "recall_5": 1,
359
  "hierarchy_ok": true,
360
+ "top5_types": [
361
  "correct",
362
  "related",
363
+ "related",
364
+ "irrelevant",
365
+ "irrelevant"
366
  ]
367
  },
368
  {
369
  "query": "Nếu biết đồ thị hàm số đối xứng qua trục tung, ta có thể suy ra điều gì về hàm số đó?",
370
+ "correct_rank": 1,
371
+ "reciprocal_rank": 1.0,
372
+ "recall_3": 1,
373
+ "recall_5": 1,
374
+ "hierarchy_ok": false,
375
+ "top5_types": [
376
  "correct",
377
+ "irrelevant",
378
  "related",
379
+ "irrelevant",
380
  "related"
381
  ]
382
  },
383
  {
384
  "query": "Cho hàm số f(x) = x^3 - 3x^2 + 2, tìm giá trị lớn nhất và nhỏ nhất của hàm số trên đoạn [0, 3].",
385
+ "correct_rank": 1,
386
+ "reciprocal_rank": 1.0,
387
+ "recall_3": 1,
388
+ "recall_5": 1,
389
+ "hierarchy_ok": true,
390
+ "top5_types": [
391
  "correct",
392
+ "related",
393
+ "irrelevant",
394
+ "irrelevant",
395
+ "related"
396
  ]
397
  },
398
  {
399
  "query": "Làm sao để chứng minh một hàm số bậc ba đồng biến trên R?",
400
+ "correct_rank": 1,
401
+ "reciprocal_rank": 1.0,
402
+ "recall_3": 1,
403
+ "recall_5": 1,
404
  "hierarchy_ok": true,
405
+ "top5_types": [
406
  "correct",
407
  "related",
408
+ "irrelevant",
409
+ "irrelevant",
410
+ "related"
411
  ]
412
  },
413
  {
414
  "query": "Ứng dụng của đạo hàm trong việc tìm giá trị lớn nhất, nhỏ nhất của hàm số bậc ba trong một khoảng cho trước?",
415
+ "correct_rank": 1,
416
+ "reciprocal_rank": 1.0,
417
+ "recall_3": 1,
418
+ "recall_5": 1,
419
  "hierarchy_ok": true,
420
+ "top5_types": [
421
  "correct",
422
  "related",
423
+ "irrelevant",
424
+ "irrelevant",
425
  "irrelevant"
426
  ]
427
  },
428
  {
429
  "query": "Cho hàm số f(x) = (x+1)/(x-2). Tìm tất cả các đường tiệm cận và tâm đối xứng của đồ thị hàm số.",
430
+ "correct_rank": 1,
431
+ "reciprocal_rank": 1.0,
432
+ "recall_3": 1,
433
+ "recall_5": 1,
434
  "hierarchy_ok": true,
435
+ "top5_types": [
436
  "correct",
437
  "related",
438
+ "related",
439
+ "irrelevant",
440
  "irrelevant"
441
  ]
442
  },
443
  {
444
  "query": "Ứng dụng của việc khảo sát hàm phân thức bậc nhất trên bậc nhất trong thực tế là gì?",
445
+ "correct_rank": 1,
446
+ "reciprocal_rank": 1.0,
447
+ "recall_3": 1,
448
+ "recall_5": 1,
449
  "hierarchy_ok": true,
450
+ "top5_types": [
451
  "correct",
452
  "related",
453
+ "irrelevant",
454
+ "related",
455
+ "irrelevant"
456
  ]
457
  },
458
  {
459
  "query": "So sánh phương pháp khảo sát hàm phân thức bậc nhất trên bậc nh��t với phương pháp khảo sát hàm số bậc hai.",
460
+ "correct_rank": 1,
461
+ "reciprocal_rank": 1.0,
462
+ "recall_3": 1,
463
+ "recall_5": 1,
464
  "hierarchy_ok": true,
465
+ "top5_types": [
466
  "correct",
467
  "related",
468
+ "related",
469
+ "irrelevant",
470
+ "irrelevant"
471
  ]
472
  },
473
  {
474
  "query": "Trong một bài toán tối ưu về diện tích, nếu ta tìm được nghiệm âm, điều này có ý nghĩa gì và ta nên làm gì tiếp theo?",
475
+ "correct_rank": 2,
476
+ "reciprocal_rank": 0.5,
477
+ "recall_3": 1,
478
+ "recall_5": 1,
479
  "hierarchy_ok": false,
480
+ "top5_types": [
481
  "related",
482
  "correct",
483
+ "related",
484
+ "irrelevant",
485
+ "irrelevant"
486
  ]
487
  },
488
  {
489
  "query": "Một công ty muốn tối đa hóa lợi nhuận. Hãy mô tả cách họ có thể sử dụng phương pháp đạo hàm để giải quyết bài toán này, bao gồm cả việc xác định hàm mục tiêu và các ràng buộc.",
490
+ "correct_rank": 2,
491
+ "reciprocal_rank": 0.5,
492
+ "recall_3": 1,
493
+ "recall_5": 1,
494
+ "hierarchy_ok": false,
495
+ "top5_types": [
496
+ "related",
497
  "correct",
498
  "related",
499
+ "irrelevant",
500
+ "irrelevant"
501
  ]
502
  },
503
  {
504
  "query": "Khi áp dụng đạo hàm để giải bài toán tối ưu, làm thế nào để chắc chắn rằng nghiệm tìm được là nghiệm tối ưu toàn cục, không phải chỉ là nghiệm cục bộ?",
505
+ "correct_rank": 1,
506
+ "reciprocal_rank": 1.0,
507
+ "recall_3": 1,
508
+ "recall_5": 1,
509
  "hierarchy_ok": true,
510
+ "top5_types": [
511
  "correct",
512
  "related",
513
+ "related",
514
+ "irrelevant",
515
+ "irrelevant"
516
  ]
517
  },
518
  {
519
  "query": "Một hình trụ có tổng diện tích bề mặt là S. Tìm bán kính đáy và chiều cao để thể tích hình trụ lớn nhất.",
520
+ "correct_rank": 1,
521
+ "reciprocal_rank": 1.0,
522
+ "recall_3": 1,
523
+ "recall_5": 1,
524
+ "hierarchy_ok": true,
525
+ "top5_types": [
526
  "correct",
527
+ "related",
528
  "irrelevant",
529
+ "irrelevant",
530
+ "irrelevant"
531
  ]
532
  },
533
  {
534
  "query": "Cho hình chữ nhật có diện tích cố định. Chứng minh rằng hình chữ nhật có chu vi nhỏ nhất là hình vuông.",
535
+ "correct_rank": 1,
536
+ "reciprocal_rank": 1.0,
537
+ "recall_3": 1,
538
+ "recall_5": 1,
539
  "hierarchy_ok": false,
540
+ "top5_types": [
541
  "correct",
542
  "irrelevant",
543
+ "related",
544
+ "irrelevant",
545
  "related"
546
  ]
547
  },
548
  {
549
  "query": "Một người có 100m hàng rào muốn rào một khu đất hình chữ nhật. Hỏi diện tích lớn nhất có thể rào được là bao nhiêu?",
550
+ "correct_rank": 1,
551
+ "reciprocal_rank": 1.0,
552
+ "recall_3": 1,
553
+ "recall_5": 1,
554
+ "hierarchy_ok": true,
555
+ "top5_types": [
556
  "correct",
557
+ "related",
558
  "irrelevant",
559
+ "irrelevant",
560
+ "irrelevant"
561
  ]
562
  },
563
  {
564
  "query": "Trong thực tế, những yếu tố nào có thể ảnh hưởng đến bài toán tối ưu kinh tế, ngoài chi phí và giá bán?",
565
+ "correct_rank": 1,
566
+ "reciprocal_rank": 1.0,
567
+ "recall_3": 1,
568
+ "recall_5": 1,
569
  "hierarchy_ok": true,
570
+ "top5_types": [
571
  "correct",
572
  "related",
573
+ "related",
574
+ "irrelevant",
575
+ "irrelevant"
576
  ]
577
  },
578
  {
579
  "query": "So sánh bài toán tối ưu lợi nhuận với bài toán tối ưu chi phí?",
580
+ "correct_rank": 1,
581
+ "reciprocal_rank": 1.0,
582
+ "recall_3": 1,
583
+ "recall_5": 1,
584
  "hierarchy_ok": true,
585
+ "top5_types": [
586
  "correct",
587
  "related",
588
+ "related",
589
+ "irrelevant",
590
+ "irrelevant"
591
  ]
592
  },
593
  {
594
  "query": "Một công ty nên làm gì nếu dự đoán chi phí sản xuất tăng cao trong tương lai?",
595
+ "correct_rank": 1,
596
+ "reciprocal_rank": 1.0,
597
+ "recall_3": 1,
598
+ "recall_5": 1,
599
+ "hierarchy_ok": false,
600
+ "top5_types": [
601
  "correct",
602
+ "irrelevant",
603
+ "irrelevant",
604
  "related",
605
+ "related"
606
  ]
607
  },
608
  {
609
  "query": "Cho ba điểm A, B, C. Biết rằng vectơ AB = 2 * vectơ AC. Ba điểm này có thẳng hàng không? Giải thích.",
610
+ "correct_rank": 1,
611
+ "reciprocal_rank": 1.0,
612
+ "recall_3": 1,
613
+ "recall_5": 1,
614
  "hierarchy_ok": true,
615
+ "top5_types": [
616
  "correct",
617
  "related",
618
+ "related",
619
+ "related",
620
+ "irrelevant"
621
  ]
622
  },
623
  {
624
  "query": "Cho 4 điểm A, B, C, D. Nếu không tồn tại các số thực m, n sao cho vectơ AD = m*vectơ AB + n*vectơ AC, điều này có nghĩa gì?",
625
+ "correct_rank": 2,
626
+ "reciprocal_rank": 0.5,
627
+ "recall_3": 1,
628
+ "recall_5": 1,
629
+ "hierarchy_ok": false,
630
+ "top5_types": [
631
+ "related",
632
  "correct",
633
  "related",
634
+ "irrelevant",
635
  "related"
636
  ]
637
  },
638
  {
639
  "query": "Khi nào việc sử dụng vectơ để chứng minh thẳng hàng hoặc đồng phẳng trở nên khó khăn và cần sử dụng phương pháp khác?",
640
+ "correct_rank": 1,
641
+ "reciprocal_rank": 1.0,
642
+ "recall_3": 1,
643
+ "recall_5": 1,
644
  "hierarchy_ok": true,
645
+ "top5_types": [
646
  "correct",
647
  "related",
648
+ "related",
649
+ "related",
650
  "related"
651
  ]
652
  },
653
  {
654
  "query": "Cho hình bình hành ABCD, gọi O là giao điểm của AC và BD. Hãy biểu diễn \\(\\overrightarrow{AO}\\) theo \\(\\overrightarrow{AB}\\) và \\(\\overrightarrow{AD}\\).",
655
+ "correct_rank": 1,
656
+ "reciprocal_rank": 1.0,
657
+ "recall_3": 1,
658
+ "recall_5": 1,
659
  "hierarchy_ok": true,
660
+ "top5_types": [
661
  "correct",
662
  "related",
663
+ "irrelevant",
664
+ "related",
665
  "related"
666
  ]
667
  },
668
  {
669
  "query": "Trong hình hộp \\(ABCD.EFGH\\), tìm vectơ tổng của \\(\\overrightarrow{AB}\\), \\(\\overrightarrow{AD}\\), và \\(\\overrightarrow{AA'}\\), biết A' là một điểm bất kỳ trên cạnh AE.",
670
+ "correct_rank": 1,
671
+ "reciprocal_rank": 1.0,
672
+ "recall_3": 1,
673
+ "recall_5": 1,
674
  "hierarchy_ok": true,
675
+ "top5_types": [
676
  "correct",
677
  "related",
678
+ "related",
679
+ "related",
680
+ "irrelevant"
681
  ]
682
  },
683
  {
684
  "query": "Áp dụng các tính chất của phép toán vectơ, chứng minh rằng trung điểm của một đoạn thẳng chia đoạn thẳng đó thành hai vectơ bằng nhau.",
685
+ "correct_rank": 2,
686
+ "reciprocal_rank": 0.5,
687
+ "recall_3": 1,
688
+ "recall_5": 1,
689
+ "hierarchy_ok": false,
690
+ "top5_types": [
691
+ "related",
692
  "correct",
693
  "related",
694
+ "related",
695
+ "irrelevant"
696
  ]
697
  },
698
  {
699
  "query": "Khi nào thì việc sử dụng hệ trục tọa độ Oxyz là cần thiết thay vì hệ trục tọa độ Oxy?",
700
+ "correct_rank": 1,
701
+ "reciprocal_rank": 1.0,
702
+ "recall_3": 1,
703
+ "recall_5": 1,
704
  "hierarchy_ok": true,
705
+ "top5_types": [
706
  "correct",
707
  "related",
708
+ "related",
709
+ "related",
710
+ "irrelevant"
711
  ]
712
  },
713
  {
714
  "query": "Cho điểm M(x; y; z). Tìm điều kiện để điểm M nằm trên đường thẳng đi qua gốc O và song song với trục Oz.",
715
+ "correct_rank": 1,
716
+ "reciprocal_rank": 1.0,
717
+ "recall_3": 1,
718
+ "recall_5": 1,
719
  "hierarchy_ok": true,
720
+ "top5_types": [
721
  "correct",
722
  "related",
723
+ "related",
724
+ "irrelevant",
725
+ "irrelevant"
726
  ]
727
  },
728
  {
729
  "query": "Điểm M(a; b; c) thỏa mãn điều kiện gì để nó cách đều các trục Ox, Oy, Oz?",
730
+ "correct_rank": 1,
731
+ "reciprocal_rank": 1.0,
732
+ "recall_3": 1,
733
+ "recall_5": 1,
734
  "hierarchy_ok": true,
735
+ "top5_types": [
736
  "correct",
737
  "related",
738
+ "related",
739
+ "irrelevant",
740
+ "irrelevant"
741
  ]
742
  },
743
  {
744
  "query": "Cho hình lập phương ABCD.A'B'C'D' với A(0;0;0), B(1;0;0), D(0;1;0), A'(0;0;1). Tìm tọa độ trọng tâm tứ diện ABA'C'.",
745
+ "correct_rank": 1,
746
+ "reciprocal_rank": 1.0,
747
+ "recall_3": 1,
748
+ "recall_5": 1,
749
  "hierarchy_ok": true,
750
+ "top5_types": [
751
  "correct",
752
  "related",
753
+ "related",
754
+ "irrelevant",
755
  "related"
756
  ]
757
  },
758
  {
759
  "query": "Chứng minh rằng trọng tâm của tam giác chia mỗi đường trung tuyến của tam giác đó theo tỉ lệ 2:1.",
760
+ "correct_rank": 1,
761
+ "reciprocal_rank": 1.0,
762
+ "recall_3": 1,
763
+ "recall_5": 1,
764
  "hierarchy_ok": true,
765
+ "top5_types": [
766
  "correct",
767
  "related",
768
+ "irrelevant",
769
+ "related",
770
  "related"
771
  ]
772
  },
773
  {
774
  "query": "Một đoạn thẳng AB có độ dài bằng 5 và trung điểm I có tọa độ (1;2;3). Tìm tất cả các khả năng tọa độ của A và B.",
775
+ "correct_rank": 1,
776
+ "reciprocal_rank": 1.0,
777
+ "recall_3": 1,
778
+ "recall_5": 1,
779
  "hierarchy_ok": true,
780
+ "top5_types": [
781
  "correct",
782
  "related",
783
+ "related",
784
+ "related",
785
+ "irrelevant"
786
  ]
787
  },
788
  {
789
  "query": "Cho hình hộp chữ nhật ABCD.A'B'C'D' với A(0;0;0), B(2;0;0), D(0;2;0), A'(0;0;2). Tính góc giữa hai vectơ AC' và BD.",
790
+ "correct_rank": 1,
791
+ "reciprocal_rank": 1.0,
792
+ "recall_3": 1,
793
+ "recall_5": 1,
794
  "hierarchy_ok": true,
795
+ "top5_types": [
796
  "correct",
797
  "related",
798
+ "related",
799
+ "related",
800
+ "irrelevant"
801
  ]
802
  },
803
  {
804
  "query": "Cho hai vectơ a và b thỏa mãn |a| = 2, |b| = 3 và (a, b) = 60 độ. Tính |a + b|.",
805
+ "correct_rank": 1,
806
+ "reciprocal_rank": 1.0,
807
+ "recall_3": 1,
808
+ "recall_5": 1,
809
  "hierarchy_ok": true,
810
+ "top5_types": [
811
  "correct",
812
  "related",
813
+ "related",
814
+ "related",
815
  "related"
816
  ]
817
  },
818
  {
819
  "query": "Tìm tất cả các giá trị của m để hai vectơ a = (m; 2; 1) và b = (2; m; -4) vuông góc với nhau.",
820
+ "correct_rank": 1,
821
+ "reciprocal_rank": 1.0,
822
+ "recall_3": 1,
823
+ "recall_5": 1,
824
  "hierarchy_ok": true,
825
+ "top5_types": [
826
  "correct",
827
  "related",
828
+ "irrelevant",
829
+ "related",
830
  "related"
831
  ]
832
  },
833
  {
834
  "query": "So với trung bình và độ lệch chuẩn, khoảng biến thiên và IQR có ưu điểm gì?",
835
+ "correct_rank": 2,
836
+ "reciprocal_rank": 0.5,
837
+ "recall_3": 1,
838
+ "recall_5": 1,
839
  "hierarchy_ok": false,
840
+ "top5_types": [
841
  "related",
842
  "correct",
843
+ "related",
844
+ "related",
845
  "related"
846
  ]
847
  },
848
  {
849
  "query": "Khi nào thì khoảng biến thiên và khoảng tứ phân vị cho kết quả tương tự?",
850
+ "correct_rank": 1,
851
+ "reciprocal_rank": 1.0,
852
+ "recall_3": 1,
853
+ "recall_5": 1,
854
  "hierarchy_ok": true,
855
+ "top5_types": [
856
  "correct",
857
  "related",
858
+ "related",
859
+ "related",
860
+ "irrelevant"
861
  ]
862
  },
863
  {
864
  "query": "Nếu biết IQR, có thể suy ra khoảng biến thiên không? Tại sao?",
865
+ "correct_rank": 1,
866
+ "reciprocal_rank": 1.0,
867
+ "recall_3": 1,
868
+ "recall_5": 1,
869
  "hierarchy_ok": true,
870
+ "top5_types": [
871
  "correct",
872
  "related",
873
+ "related",
874
+ "irrelevant",
875
+ "irrelevant"
876
  ]
877
  },
878
  {
879
  "query": "Cho bảng dữ liệu ghép nhóm, nếu bạn biết Q1, Q3, bạn có thể suy ra điều gì về phân bố của dữ liệu?",
880
+ "correct_rank": 1,
881
+ "reciprocal_rank": 1.0,
882
+ "recall_3": 1,
883
+ "recall_5": 1,
884
  "hierarchy_ok": true,
885
+ "top5_types": [
886
  "correct",
887
  "related",
888
+ "related",
889
+ "related",
890
+ "irrelevant"
891
  ]
892
  },
893
  {
894
  "query": "Một công ty sử dụng IQR để phân tích doanh số hàng tháng. Nếu IQR tăng đột ngột, điều này có thể báo hiệu điều gì?",
895
+ "correct_rank": 1,
896
+ "reciprocal_rank": 1.0,
897
+ "recall_3": 1,
898
+ "recall_5": 1,
899
  "hierarchy_ok": true,
900
+ "top5_types": [
901
  "correct",
902
  "related",
903
+ "related",
904
+ "irrelevant",
905
  "related"
906
  ]
907
  },
908
  {
909
  "query": "Nếu Q1 = 20 và Q3 = 50, hãy ước tính xem có bao nhiêu phần trăm dữ liệu nằm giữa 20 và 50.",
910
+ "correct_rank": 1,
911
+ "reciprocal_rank": 1.0,
912
+ "recall_3": 1,
913
+ "recall_5": 1,
914
  "hierarchy_ok": true,
915
+ "top5_types": [
916
  "correct",
917
  "related",
918
+ "related",
919
+ "related",
920
  "related"
921
  ]
922
  },
923
  {
924
  "query": "Một tập dữ liệu có trung bình là 50 và độ lệch chuẩn là 5. Giá trị 65 có phải là một giá trị bất thường không?",
925
+ "correct_rank": 1,
926
+ "reciprocal_rank": 1.0,
927
+ "recall_3": 1,
928
+ "recall_5": 1,
929
  "hierarchy_ok": true,
930
+ "top5_types": [
931
  "correct",
932
  "related",
933
+ "related",
934
+ "related",
935
  "related"
936
  ]
937
  },
938
  {
939
  "query": "So sánh ý nghĩa của việc sử dụng phương sai mẫu (sample variance) và phương sai quần thể (population variance).",
940
+ "correct_rank": 1,
941
+ "reciprocal_rank": 1.0,
942
+ "recall_3": 1,
943
+ "recall_5": 1,
944
  "hierarchy_ok": true,
945
+ "top5_types": [
946
  "correct",
947
  "related",
948
+ "related",
949
+ "related",
950
  "related"
951
  ]
952
  },
953
  {
954
  "query": "Một nhà máy sản xuất bóng đèn có độ lệch chuẩn về tuổi thọ là 100 giờ. Làm thế nào để giảm độ lệch chuẩn này?",
955
+ "correct_rank": 1,
956
+ "reciprocal_rank": 1.0,
957
+ "recall_3": 1,
958
+ "recall_5": 1,
959
  "hierarchy_ok": true,
960
+ "top5_types": [
961
  "correct",
962
  "related",
963
+ "related",
964
+ "irrelevant",
965
  "related"
966
  ]
967
  },
968
  {
969
  "query": "Trong thực tế, khi nào việc sử dụng phương sai quan trọng hơn so với độ lệch chuẩn, và ngược lại?",
970
+ "correct_rank": 2,
971
+ "reciprocal_rank": 0.5,
972
+ "recall_3": 1,
973
+ "recall_5": 1,
974
  "hierarchy_ok": false,
975
+ "top5_types": [
976
  "related",
977
  "correct",
978
+ "related",
979
+ "irrelevant",
980
  "related"
981
  ]
982
  },
983
  {
984
  "query": "Nếu có một tập dữ liệu lớn với nhiều ngoại lệ, phương sai và độ lệch chuẩn có bị ảnh hưởng nhiều không? Giải thích.",
985
+ "correct_rank": 2,
986
+ "reciprocal_rank": 0.5,
987
+ "recall_3": 1,
988
+ "recall_5": 1,
989
  "hierarchy_ok": false,
990
+ "top5_types": [
991
  "related",
992
  "correct",
993
+ "related",
994
+ "related",
995
+ "irrelevant"
996
  ]
997
  },
998
  {
999
  "query": "Làm thế nào để ước lượng độ lệch chuẩn của một tập dữ liệu mà không cần tính toán chính xác?",
1000
+ "correct_rank": 2,
1001
+ "reciprocal_rank": 0.5,
1002
+ "recall_3": 1,
1003
+ "recall_5": 1,
1004
  "hierarchy_ok": false,
1005
+ "top5_types": [
1006
  "related",
1007
  "correct",
1008
+ "related",
1009
+ "related",
1010
  "related"
1011
  ]
1012
  },
1013
  {
1014
  "query": "Giả sử bạn có hai bộ dữ liệu: một đo lường chiều cao của học sinh tiểu học (đơn vị cm) và một đo lường thu nhập của người lớn (đơn vị USD). Bạn muốn so sánh mức độ biến động của hai bộ dữ liệu này. Chỉ số nào phù hợp nhất để sử dụng và tại sao?",
1015
+ "correct_rank": 1,
1016
+ "reciprocal_rank": 1.0,
1017
+ "recall_3": 1,
1018
+ "recall_5": 1,
1019
+ "hierarchy_ok": true,
1020
+ "top5_types": [
1021
  "correct",
1022
+ "related",
1023
+ "related",
1024
+ "related",
1025
  "related"
1026
  ]
1027
  },
1028
  {
1029
  "query": "Một công ty muốn đánh giá mức độ đồng đều trong năng suất làm việc của nhân viên ở hai phòng ban. Biết rằng dữ liệu năng suất có một vài giá trị ngoại lệ do sự cố kỹ thuật. Bạn nên sử dụng chỉ số nào để so sánh và tại sao?",
1030
+ "correct_rank": 1,
1031
+ "reciprocal_rank": 1.0,
1032
+ "recall_3": 1,
1033
+ "recall_5": 1,
1034
+ "hierarchy_ok": true,
1035
+ "top5_types": [
1036
  "correct",
1037
+ "related",
1038
+ "related",
1039
+ "irrelevant",
1040
  "related"
1041
  ]
1042
  },
1043
  {
1044
  "query": "Bạn có một tập dữ liệu về thời gian hoàn thành một dự án. Sau khi phân tích, bạn nhận thấy khoảng biến thiên rất lớn nhưng IQR lại khá nhỏ. Điều này cho thấy điều gì về dữ liệu và bạn nên ưu tiên sử dụng chỉ số nào để mô tả độ phân tán?",
1045
+ "correct_rank": 1,
1046
+ "reciprocal_rank": 1.0,
1047
+ "recall_3": 1,
1048
+ "recall_5": 1,
1049
+ "hierarchy_ok": true,
1050
+ "top5_types": [
1051
  "correct",
1052
+ "related",
1053
+ "related",
1054
+ "related",
1055
+ "irrelevant"
1056
  ]
1057
  },
1058
  {
1059
  "query": "Một cấp số cộng có u_1 = 2 và u_5 = 14. Tìm u_10.",
1060
+ "correct_rank": 1,
1061
+ "reciprocal_rank": 1.0,
1062
+ "recall_3": 1,
1063
+ "recall_5": 1,
1064
  "hierarchy_ok": true,
1065
+ "top5_types": [
1066
  "correct",
1067
  "related",
1068
+ "related",
1069
+ "related",
1070
+ "irrelevant"
1071
  ]
1072
  },
1073
  {
1074
  "query": "Một người vay ngân hàng 100 triệu đồng với lãi suất hàng tháng tính theo cấp số cộng. Biết tháng đầu trả 2 triệu, tháng thứ hai trả 2.1 triệu. Hỏi tháng thứ 10 người đó phải trả bao nhiêu tiền?",
1075
+ "correct_rank": 2,
1076
+ "reciprocal_rank": 0.5,
1077
+ "recall_3": 1,
1078
+ "recall_5": 1,
1079
  "hierarchy_ok": false,
1080
+ "top5_types": [
1081
  "related",
1082
  "correct",
1083
+ "related",
1084
+ "related",
1085
  "irrelevant"
1086
  ]
1087
  },
1088
  {
1089
  "query": "Cho cấp số cộng (u_n) có u_1 = -3, d = 2. Hỏi số 2021 có phải là một số hạng của cấp số cộng này không? Vì sao?",
1090
+ "correct_rank": 1,
1091
+ "reciprocal_rank": 1.0,
1092
+ "recall_3": 1,
1093
+ "recall_5": 1,
1094
  "hierarchy_ok": true,
1095
+ "top5_types": [
1096
  "correct",
1097
  "related",
1098
+ "related",
1099
+ "related",
1100
+ "irrelevant"
1101
  ]
1102
  },
1103
  {
1104
  "query": "Cho cấp số cộng có tổng 20 số hạng đầu là 500, và tổng 30 số hạng đầu là 1050. Tính số hạng đầu và công sai của cấp số cộng này.",
1105
+ "correct_rank": 1,
1106
+ "reciprocal_rank": 1.0,
1107
+ "recall_3": 1,
1108
+ "recall_5": 1,
1109
  "hierarchy_ok": true,
1110
+ "top5_types": [
1111
  "correct",
1112
  "related",
1113
+ "related",
1114
+ "related",
1115
+ "irrelevant"
1116
  ]
1117
  },
1118
  {
1119
  "query": "Một người đi xe đạp leo dốc. Trong phút đầu tiên, người đó đi được 200 mét. Mỗi phút sau, quãng đường đi được giảm 10 mét so với phút trước. Hỏi sau bao lâu người đó dừng lại (khi quãng đường đi được trong phút đó là 0 hoặc âm)? Tính tổng quãng đường đi được trước khi dừng.",
1120
+ "correct_rank": 1,
1121
+ "reciprocal_rank": 1.0,
1122
+ "recall_3": 1,
1123
+ "recall_5": 1,
1124
  "hierarchy_ok": true,
1125
+ "top5_types": [
1126
  "correct",
1127
  "related",
1128
+ "irrelevant",
1129
+ "related",
1130
  "related"
1131
  ]
1132
  },
1133
  {
1134
  "query": "Một người muốn mua một căn nhà trả góp. Mỗi tháng, người đó trả một số tiền cố định, và số tiền trả mỗi tháng giảm dần theo cấp số cộng. Tháng đầu trả 10 triệu, mỗi tháng sau giảm 200 nghìn. Nếu tổng số tiền phải trả là 1 tỷ đồng, hỏi người đó phải trả trong bao nhiêu tháng?",
1135
+ "correct_rank": 1,
1136
+ "reciprocal_rank": 1.0,
1137
+ "recall_3": 1,
1138
+ "recall_5": 1,
1139
  "hierarchy_ok": true,
1140
+ "top5_types": [
1141
  "correct",
1142
  "related",
1143
+ "related",
1144
+ "related",
1145
+ "irrelevant"
1146
  ]
1147
  },
1148
  {
1149
  "query": "Tìm công thức tổng quát cho tổng các số lẻ từ 1 đến 2n-1 sử dụng công thức cấp số cộng.",
1150
+ "correct_rank": 1,
1151
+ "reciprocal_rank": 1.0,
1152
+ "recall_3": 1,
1153
+ "recall_5": 1,
1154
  "hierarchy_ok": true,
1155
+ "top5_types": [
1156
  "correct",
1157
  "related",
1158
+ "related",
1159
+ "related",
1160
  "irrelevant"
1161
  ]
1162
  },
1163
  {
1164
  "query": "Một cấp số cộng có tổng của 5 số hạng đầu là 30 và tổng của 10 số hạng đầu là 80. Tìm số hạng thứ 15 của cấp số cộng này.",
1165
+ "correct_rank": 1,
1166
+ "reciprocal_rank": 1.0,
1167
+ "recall_3": 1,
1168
+ "recall_5": 1,
1169
  "hierarchy_ok": true,
1170
+ "top5_types": [
1171
  "correct",
1172
  "related",
1173
+ "irrelevant",
1174
+ "related",
1175
  "related"
1176
  ]
1177
  },
1178
  {
1179
  "query": "Nếu một khoản đầu tư tăng trưởng theo cấp số nhân với tỷ lệ 10% mỗi năm, sau 5 năm, khoản đầu tư ban đầu sẽ tăng lên bao nhiêu lần?",
1180
+ "correct_rank": 2,
1181
+ "reciprocal_rank": 0.5,
1182
+ "recall_3": 1,
1183
+ "recall_5": 1,
1184
  "hierarchy_ok": false,
1185
+ "top5_types": [
1186
  "related",
1187
  "correct",
1188
+ "related",
1189
+ "related",
1190
+ "irrelevant"
1191
  ]
1192
  },
1193
  {
1194
  "query": "Một quần thể vi khuẩn tăng trưởng theo cấp số nhân, cứ sau mỗi giờ số lượng tăng gấp đôi. Nếu ban đầu có 1000 vi khuẩn, sau 4 giờ sẽ có bao nhiêu vi khuẩn?",
1195
+ "correct_rank": 2,
1196
+ "reciprocal_rank": 0.5,
1197
+ "recall_3": 1,
1198
+ "recall_5": 1,
1199
  "hierarchy_ok": false,
1200
+ "top5_types": [
1201
  "related",
1202
  "correct",
1203
+ "related",
1204
+ "related",
1205
+ "irrelevant"
1206
  ]
1207
  },
1208
  {
1209
  "query": "Một chất phóng xạ giảm đi một nửa sau mỗi chu kỳ bán rã. Nếu ban đầu có 100g chất này, sau 3 chu kỳ bán rã sẽ còn lại bao nhiêu gam?",
1210
+ "correct_rank": 6,
1211
+ "reciprocal_rank": 0.16666666666666666,
1212
+ "recall_3": 0,
1213
+ "recall_5": 0,
1214
  "hierarchy_ok": false,
1215
+ "top5_types": [
1216
+ "irrelevant",
1217
  "related",
1218
+ "irrelevant",
1219
+ "irrelevant",
1220
+ "related"
1221
  ]
1222
  },
1223
  {
1224
  "query": "Một người đầu tư 100 triệu đồng vào một quỹ tăng trưởng với tỷ lệ 15% mỗi năm. Hỏi sau 5 năm, số tiền của người đó là bao nhiêu (làm tròn đến hàng triệu)?",
1225
+ "correct_rank": 3,
1226
+ "reciprocal_rank": 0.3333333333333333,
1227
+ "recall_3": 1,
1228
+ "recall_5": 1,
1229
  "hierarchy_ok": false,
1230
+ "top5_types": [
1231
  "related",
1232
  "related",
1233
+ "correct",
1234
+ "related",
1235
+ "irrelevant"
1236
  ]
1237
  },
1238
  {
1239
  "query": "Một loại vi khuẩn sinh sản theo cấp số nhân, cứ mỗi 20 phút số lượng tăng gấp đôi. Nếu ban đầu có 1000 con, sau 2 giờ sẽ có bao nhiêu con?",
1240
+ "correct_rank": 2,
1241
+ "reciprocal_rank": 0.5,
1242
+ "recall_3": 1,
1243
+ "recall_5": 1,
1244
  "hierarchy_ok": false,
1245
+ "top5_types": [
1246
  "related",
1247
  "correct",
1248
+ "related",
1249
+ "related",
1250
+ "irrelevant"
1251
  ]
1252
  },
1253
  {
1254
  "query": "Một quả bóng rơi từ độ cao 10 mét, mỗi lần chạm đất nảy lên 60% độ cao ban đầu. Tính tổng quãng đường mà quả bóng đi được cho đến khi dừng lại (coi như dừng hẳn khi độ cao nảy là rất nhỏ).",
1255
+ "correct_rank": 6,
1256
+ "reciprocal_rank": 0.16666666666666666,
1257
+ "recall_3": 0,
1258
+ "recall_5": 0,
1259
  "hierarchy_ok": false,
1260
+ "top5_types": [
1261
  "related",
1262
+ "irrelevant",
1263
+ "irrelevant",
1264
  "related",
1265
  "related"
1266
  ]
1267
  },
1268
  {
1269
  "query": "Có 10 người tham gia một cuộc họp. Có bao nhiêu cách xếp họ ngồi quanh một bàn tròn sao cho 2 người A và B luôn ngồi cạnh nhau?",
1270
+ "correct_rank": 1,
1271
+ "reciprocal_rank": 1.0,
1272
+ "recall_3": 1,
1273
+ "recall_5": 1,
1274
  "hierarchy_ok": true,
1275
+ "top5_types": [
1276
  "correct",
1277
  "related",
1278
+ "related",
1279
+ "irrelevant",
1280
+ "irrelevant"
1281
  ]
1282
  },
1283
  {
1284
  "query": "Một người có 5 áo và 3 quần. Hỏi người đó có bao nhiêu cách chọn một bộ quần áo để mặc?",
1285
+ "correct_rank": 1,
1286
+ "reciprocal_rank": 1.0,
1287
+ "recall_3": 1,
1288
+ "recall_5": 1,
1289
  "hierarchy_ok": true,
1290
+ "top5_types": [
1291
  "correct",
1292
  "related",
1293
+ "related",
1294
+ "irrelevant",
1295
+ "irrelevant"
1296
  ]
1297
  },
1298
  {
1299
  "query": "Giải thích ý nghĩa của việc 'quan tâm đến thứ tự' trong hoán vị và chỉnh hợp bằng một ví dụ cụ thể.",
1300
+ "correct_rank": 1,
1301
+ "reciprocal_rank": 1.0,
1302
+ "recall_3": 1,
1303
+ "recall_5": 1,
1304
  "hierarchy_ok": true,
1305
+ "top5_types": [
1306
  "correct",
1307
  "related",
1308
+ "irrelevant",
1309
+ "irrelevant",
1310
+ "related"
1311
  ]
1312
  },
1313
  {
1314
  "query": "Một hộp có 5 bi đỏ và 7 bi xanh. Lấy ngẫu nhiên 3 bi. Tính số cách lấy được ít nhất 2 bi đỏ.",
1315
+ "correct_rank": 5,
1316
+ "reciprocal_rank": 0.2,
1317
+ "recall_3": 0,
1318
+ "recall_5": 1,
1319
  "hierarchy_ok": false,
1320
+ "top5_types": [
1321
  "related",
1322
+ "irrelevant",
1323
+ "related",
1324
+ "irrelevant",
1325
+ "correct"
1326
  ]
1327
  },
1328
  {
1329
  "query": "Trong khai triển (x - 1)^5, hệ số của x^3 là bao nhiêu?",
1330
+ "correct_rank": 1,
1331
+ "reciprocal_rank": 1.0,
1332
+ "recall_3": 1,
1333
+ "recall_5": 1,
1334
+ "hierarchy_ok": false,
1335
+ "top5_types": [
1336
  "correct",
1337
+ "irrelevant",
1338
+ "irrelevant",
1339
  "related",
1340
  "related"
1341
  ]
1342
  },
1343
  {
1344
  "query": "Cho 10 điểm phân biệt trên mặt phẳng, trong đó không có 3 điểm nào thẳng hàng. Có thể vẽ được bao nhiêu tam giác từ 10 điểm này?",
1345
+ "correct_rank": 1,
1346
+ "reciprocal_rank": 1.0,
1347
+ "recall_3": 1,
1348
+ "recall_5": 1,
1349
+ "hierarchy_ok": true,
1350
+ "top5_types": [
1351
+ "correct",
1352
  "related",
1353
+ "irrelevant",
1354
+ "irrelevant",
1355
+ "irrelevant"
1356
  ]
1357
  },
1358
  {
1359
  "query": "Khi nào thì A_n^k = C_n^k?",
1360
+ "correct_rank": 1,
1361
+ "reciprocal_rank": 1.0,
1362
+ "recall_3": 1,
1363
+ "recall_5": 1,
1364
  "hierarchy_ok": true,
1365
+ "top5_types": [
1366
  "correct",
1367
  "related",
1368
+ "related",
1369
+ "irrelevant",
1370
+ "irrelevant"
1371
  ]
1372
  },
1373
  {
1374
  "query": "Có bao nhiêu cách xếp 5 người vào một hàng ghế sao cho hai người A và B luôn ngồi cạnh nhau?",
1375
+ "correct_rank": 3,
1376
+ "reciprocal_rank": 0.3333333333333333,
1377
+ "recall_3": 1,
1378
+ "recall_5": 1,
1379
  "hierarchy_ok": false,
1380
+ "top5_types": [
1381
+ "related",
1382
  "related",
1383
  "correct",
1384
+ "irrelevant",
1385
+ "irrelevant"
1386
  ]
1387
  },
1388
  {
1389
  "query": "Một hộp có 5 bi đỏ và 3 bi xanh. Chọn ngẫu nhiên 3 bi. Tính số cách chọn sao cho có ít nhất 2 bi đỏ.",
1390
+ "correct_rank": 2,
1391
+ "reciprocal_rank": 0.5,
1392
+ "recall_3": 1,
1393
+ "recall_5": 1,
1394
  "hierarchy_ok": false,
1395
+ "top5_types": [
1396
  "related",
1397
+ "correct",
1398
+ "irrelevant",
1399
  "related",
1400
+ "irrelevant"
1401
  ]
1402
  },
1403
  {
1404
  "query": "Một lớp có 30 học sinh. Cần chọn một ban cán sự lớp gồm 1 lớp trưởng, 1 lớp phó và 3 ủy viên. Hỏi có bao nhiêu cách chọn?",
1405
+ "correct_rank": 5,
1406
+ "reciprocal_rank": 0.2,
1407
+ "recall_3": 0,
1408
+ "recall_5": 1,
1409
  "hierarchy_ok": false,
1410
+ "top5_types": [
1411
  "related",
1412
  "related",
1413
+ "irrelevant",
1414
+ "irrelevant",
1415
  "correct"
1416
  ]
1417
  }
1418
  ],
1419
+ "mrr": 0.8443548387096775,
1420
+ "avg_recall_at_3": 0.946236559139785,
1421
+ "avg_recall_at_5": 0.967741935483871,
1422
+ "hierarchy_rate": 0.6666666666666666,
1423
+ "avg_rank": 1.184336198662846,
1424
+ "evaluation_date": "2025-06-25T04:18:57.134952",
1425
+ "note": "Final MRR evaluation on test data - used only once"
1426
  }
pytorch_model.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a7bd8bd95ebf5356425a64f8036f099c0fc6e9e12fbee4b29d4157d67da21405
3
  size 1112241766
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f7b14d29a4054633a0d2d97fb9237630015f1b60c1f50ba764792bd010b4f80f
3
  size 1112241766
usage_example.py CHANGED
@@ -3,10 +3,10 @@ from sentence_transformers import SentenceTransformer
3
  from sklearn.metrics.pairwise import cosine_similarity
4
  import numpy as np
5
 
6
- # Load hierarchical model
7
  model = SentenceTransformer('ThanhLe0125/e5-math')
8
 
9
- # Example: Find exact chunk for math question
10
  query = "query: Định nghĩa hàm số đồng biến"
11
  chunks = [
12
  "passage: Hàm số đồng biến trên khoảng (a;b) là hàm số mà với mọi x1 < x2 thì f(x1) < f(x2)",
@@ -21,23 +21,34 @@ query_emb = model.encode([query])
21
  chunk_embs = model.encode(chunks)
22
  similarities = cosine_similarity(query_emb, chunk_embs)[0]
23
 
24
- # Get top 3 and top 5 results
25
- top3_indices = similarities.argsort()[::-1][:3]
26
- top5_indices = similarities.argsort()[::-1][:5]
27
 
28
- print("Top 3 Results:")
29
- for rank, idx in enumerate(top3_indices, 1):
30
- print(f"{rank}. Score: {similarities[idx]:.4f}")
31
- print(f" {chunks[idx][:100]}...")
 
32
  print()
33
 
34
- print("Top 5 Results:")
35
- for rank, idx in enumerate(top5_indices, 1):
36
- print(f"{rank}. Score: {similarities[idx]:.4f}")
37
- print(f" {chunks[idx][:100]}...")
38
- print()
39
-
40
- # Expected:
41
- # 1. Exact definition (score ~1.0)
42
- # 2. Related example (score ~0.3)
43
- # 3. Irrelevant content (score ~0.0)
 
 
 
 
 
 
 
 
 
 
 
 
3
  from sklearn.metrics.pairwise import cosine_similarity
4
  import numpy as np
5
 
6
+ # Load MRR-optimized model
7
  model = SentenceTransformer('ThanhLe0125/e5-math')
8
 
9
+ # Example: Find exact chunk with MRR optimization
10
  query = "query: Định nghĩa hàm số đồng biến"
11
  chunks = [
12
  "passage: Hàm số đồng biến trên khoảng (a;b) là hàm số mà với mọi x1 < x2 thì f(x1) < f(x2)",
 
21
  chunk_embs = model.encode(chunks)
22
  similarities = cosine_similarity(query_emb, chunk_embs)[0]
23
 
24
+ # MRR-optimized ranking
25
+ ranked_indices = similarities.argsort()[::-1]
 
26
 
27
+ print("MRR-Optimized Rankings:")
28
+ for rank, idx in enumerate(ranked_indices, 1):
29
+ chunk_type = "CORRECT" if idx == 0 else ("RELATED" if idx == 1 else "IRRELEVANT")
30
+ print(f"Rank {rank}: {chunk_type} (Score: {similarities[idx]:.4f})")
31
+ print(f" {chunks[idx][:80]}...")
32
  print()
33
 
34
+ # Calculate MRR for this query
35
+ correct_rank = None
36
+ for rank, idx in enumerate(ranked_indices, 1):
37
+ if idx == 0: # First chunk is correct
38
+ correct_rank = rank
39
+ break
40
+
41
+ if correct_rank:
42
+ mrr_score = 1.0 / correct_rank
43
+ print(f"This query MRR: {mrr_score:.4f} (correct chunk at rank #{correct_rank})")
44
+
45
+ if mrr_score >= 0.5:
46
+ print("✅ Good! Correct chunk in top 2 positions")
47
+ else:
48
+ print("⚠️ Could be better - correct chunk should be higher")
49
+
50
+ # Efficient inference (common use case)
51
+ print("\nEfficient Inference (top 3 only):")
52
+ top_3_indices = ranked_indices[:3]
53
+ for i, idx in enumerate(top_3_indices, 1):
54
+ print(f"{i}. Score: {similarities[idx]:.4f} - {chunks[idx][:60]}...")