Commit f41df8e
committed
fix: share ML model instances to reduce startup time
The backend startup was slow because RetrieverTools.initialize() creates
6 retriever chains, and each one independently loaded its own copy of
the embedding model (thenlper/gte-large) and reranker model
(BAAI/bge-reranker-base). That meant 12 heavy model loads when only
2 are actually needed, since all chains use the same model config.
This fix creates both models once at the top of initialize() and passes
the shared instances down through HybridRetrieverChain,
SimilarityRetrieverChain, and FAISSVectorDatabase. Both models are
stateless (they only run encode/score inference) so sharing a single
instance across all chains is safe. Each chain still builds its own
independent FAISS index with its own documents.
Startup model loading goes from ~34s to ~7s on a local machine (4.9x).
Resolves #88
Signed-off-by: Harsh Kumar <harshkumar3446@gmail.com>1 parent decfd26 commit f41df8e
File tree
6 files changed
+134
-12
lines changed- backend
- src
- agents
- chains
- vectorstores
- tests
6 files changed
+134
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
8 | 13 | | |
9 | 14 | | |
10 | 15 | | |
| |||
39 | 44 | | |
40 | 45 | | |
41 | 46 | | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
42 | 76 | | |
43 | 77 | | |
44 | 78 | | |
45 | 79 | | |
46 | 80 | | |
47 | 81 | | |
48 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
49 | 90 | | |
50 | 91 | | |
51 | 92 | | |
| |||
100 | 141 | | |
101 | 142 | | |
102 | 143 | | |
| 144 | + | |
| 145 | + | |
103 | 146 | | |
104 | 147 | | |
105 | 148 | | |
| |||
115 | 158 | | |
116 | 159 | | |
117 | 160 | | |
| 161 | + | |
| 162 | + | |
118 | 163 | | |
119 | 164 | | |
120 | 165 | | |
| |||
131 | 176 | | |
132 | 177 | | |
133 | 178 | | |
| 179 | + | |
| 180 | + | |
134 | 181 | | |
135 | 182 | | |
136 | 183 | | |
| |||
146 | 193 | | |
147 | 194 | | |
148 | 195 | | |
| 196 | + | |
| 197 | + | |
149 | 198 | | |
150 | 199 | | |
151 | 200 | | |
| |||
161 | 210 | | |
162 | 211 | | |
163 | 212 | | |
| 213 | + | |
| 214 | + | |
164 | 215 | | |
165 | 216 | | |
166 | 217 | | |
| |||
176 | 227 | | |
177 | 228 | | |
178 | 229 | | |
| 230 | + | |
| 231 | + | |
179 | 232 | | |
180 | 233 | | |
181 | 234 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| 41 | + | |
| 42 | + | |
41 | 43 | | |
42 | 44 | | |
43 | 45 | | |
| |||
48 | 50 | | |
49 | 51 | | |
50 | 52 | | |
| 53 | + | |
| 54 | + | |
51 | 55 | | |
52 | 56 | | |
53 | 57 | | |
| |||
74 | 78 | | |
75 | 79 | | |
76 | 80 | | |
| 81 | + | |
77 | 82 | | |
78 | 83 | | |
79 | 84 | | |
| |||
121 | 126 | | |
122 | 127 | | |
123 | 128 | | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
124 | 132 | | |
125 | | - | |
| 133 | + | |
126 | 134 | | |
127 | 135 | | |
128 | 136 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
40 | 41 | | |
41 | 42 | | |
42 | 43 | | |
| 44 | + | |
43 | 45 | | |
44 | 46 | | |
45 | 47 | | |
| |||
125 | 127 | | |
126 | 128 | | |
127 | 129 | | |
| 130 | + | |
128 | 131 | | |
129 | 132 | | |
130 | 133 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
31 | 36 | | |
32 | 37 | | |
33 | 38 | | |
34 | | - | |
35 | | - | |
36 | 39 | | |
37 | 40 | | |
38 | 41 | | |
39 | 42 | | |
40 | | - | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
41 | 46 | | |
42 | 47 | | |
43 | 48 | | |
| |||
51 | 56 | | |
52 | 57 | | |
53 | 58 | | |
| 59 | + | |
54 | 60 | | |
55 | 61 | | |
56 | 62 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
| 18 | + | |
17 | 19 | | |
18 | | - | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
19 | 23 | | |
20 | 24 | | |
21 | 25 | | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
22 | 29 | | |
23 | 30 | | |
24 | 31 | | |
| |||
55 | 62 | | |
56 | 63 | | |
57 | 64 | | |
| 65 | + | |
| 66 | + | |
58 | 67 | | |
59 | | - | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
60 | 71 | | |
61 | 72 | | |
62 | 73 | | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
63 | 77 | | |
64 | 78 | | |
65 | 79 | | |
| |||
250 | 264 | | |
251 | 265 | | |
252 | 266 | | |
| 267 | + | |
| 268 | + | |
253 | 269 | | |
254 | | - | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
255 | 273 | | |
256 | 274 | | |
257 | 275 | | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
258 | 279 | | |
259 | 280 | | |
260 | 281 | | |
| |||
283 | 304 | | |
284 | 305 | | |
285 | 306 | | |
| 307 | + | |
| 308 | + | |
286 | 309 | | |
287 | | - | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
288 | 313 | | |
289 | 314 | | |
290 | 315 | | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
291 | 319 | | |
292 | 320 | | |
293 | 321 | | |
| |||
323 | 351 | | |
324 | 352 | | |
325 | 353 | | |
| 354 | + | |
| 355 | + | |
326 | 356 | | |
327 | | - | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
328 | 360 | | |
329 | 361 | | |
330 | 362 | | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
331 | 366 | | |
332 | 367 | | |
333 | 368 | | |
| |||
369 | 404 | | |
370 | 405 | | |
371 | 406 | | |
| 407 | + | |
| 408 | + | |
372 | 409 | | |
373 | | - | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
374 | 413 | | |
375 | 414 | | |
376 | 415 | | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
377 | 419 | | |
378 | 420 | | |
379 | 421 | | |
| |||
426 | 468 | | |
427 | 469 | | |
428 | 470 | | |
| 471 | + | |
| 472 | + | |
429 | 473 | | |
430 | | - | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
431 | 477 | | |
432 | 478 | | |
433 | 479 | | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
434 | 483 | | |
435 | 484 | | |
436 | 485 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
238 | 238 | | |
239 | 239 | | |
240 | 240 | | |
241 | | - | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
242 | 245 | | |
243 | 246 | | |
244 | 247 | | |
| |||
0 commit comments