(
emb_res: EmbeddingResult[],
secs: string[],
)
| 462 | } |
| 463 | } |
| 464 | export function calc_mean_vec( |
| 465 | emb_res: EmbeddingResult[], |
| 466 | secs: string[], |
| 467 | ): number[] { |
| 468 | const dim = emb_res[0].vector.length; |
| 469 | const wsum = new Array(dim).fill(0); |
| 470 | const sec_scores = emb_res.map((r) => ({ |
| 471 | vector: r.vector, |
| 472 | confidence: sector_configs[r.sector]?.weight || 1.0, |
| 473 | })); |
| 474 | const beta = hybrid_params.beta; |
| 475 | const exp_sum = sec_scores.reduce( |
| 476 | (sum, s) => sum + Math.exp(beta * s.confidence), |
| 477 | 0, |
| 478 | ); |
| 479 | for (const result of emb_res) { |
| 480 | const sec_wt = sector_configs[result.sector]?.weight || 1.0; |
| 481 | const sm_wt = Math.exp(beta * sec_wt) / exp_sum; |
| 482 | for (let i = 0; i < dim; i++) { |
| 483 | wsum[i] += result.vector[i] * sm_wt; |
| 484 | } |
| 485 | } |
| 486 | const norm = |
| 487 | Math.sqrt(wsum.reduce((sum, v) => sum + v * v, 0)) + |
| 488 | hybrid_params.epsilon; |
| 489 | return wsum.map((v) => v / norm); |
| 490 | } |
| 491 | export async function create_single_waypoint( |
| 492 | new_id: string, |
| 493 | new_mean: number[], |
no test coverage detected