MCPcopy Index your code
hub / github.com/forloopcodes/contextplus / mergeEmbeddingVectors

Function mergeEmbeddingVectors

src/core/embeddings.ts:259–280  ·  view source on GitHub ↗
(vectors: number[][], weights: number[])

Source from the content-addressed store, hash-verified

257}
258
259function mergeEmbeddingVectors(vectors: number[][], weights: number[]): number[] {
260 if (vectors.length === 0) throw new Error("Cannot merge empty embedding vectors");
261 if (vectors.length === 1) return vectors[0];
262
263 const dimension = vectors[0].length;
264 const merged = new Array<number>(dimension).fill(0);
265 let totalWeight = 0;
266
267 for (let i = 0; i < vectors.length; i++) {
268 const vector = vectors[i];
269 if (vector.length !== dimension) {
270 throw new Error(`Embedding dimension mismatch: expected ${dimension}, got ${vector.length}`);
271 }
272 const weight = Math.max(1, weights[i] ?? 1);
273 totalWeight += weight;
274 for (let d = 0; d < dimension; d++) merged[d] += vector[d] * weight;
275 }
276
277 if (totalWeight <= 0) return vectors[0];
278 for (let d = 0; d < merged.length; d++) merged[d] /= totalWeight;
279 return merged;
280}
281
282export async function fetchEmbedding(input: string | string[]): Promise<number[][]> {
283 const inputs = Array.isArray(input) ? input : [input];

Callers 1

fetchEmbeddingFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected