Reference · Snippet · typescript

Merge keyword + vector hits

Last updated

ragsearch

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);
}