Reference · Snippet · typescript
Merge keyword + vector hits
Last updated
function mergeHits(keyword: ChunkHit[], vector: ChunkHit[], limit = 20) {
const byId = new Map<string, ChunkHit>();
for (const hit of [...keyword, ...vector]) {
const prev = byId.get(hit.id);
byId.set(hit.id, prev ? { ...hit, score: Math.max(prev.score, hit.score) } : hit);
}
return [...byId.values()].sort((a, b) => b.score - a.score).slice(0, limit);
}