Summary
When lore_appraise runs with the RRF fusion arm active, results that match a single common keyword via BM25 can dominate the fused ranking even when their semantic score is weak. The output then surfaces entries that are textually adjacent but topically irrelevant to the query.
Affected files
internal/lore/appraise.go / appraise_cmd.go
internal/lore/embed_wiring.go (RRF integration point)
Reproduction
Query lore_appraise with a query containing a common keyword that several unrelated entries also mention (e.g. "the database"); observe that top results include hits whose semantic score is materially lower than the BM25 score would suggest.
Acceptance
- RRF weighting rebalances so semantic-weak hits do not dominate purely on a shared common keyword.
- Existing appraise tests pass; new test covers the regression case.
- Document the chosen weighting heuristic in the appraise comment header.
Summary
When
lore_appraiseruns with the RRF fusion arm active, results that match a single common keyword via BM25 can dominate the fused ranking even when their semantic score is weak. The output then surfaces entries that are textually adjacent but topically irrelevant to the query.Affected files
internal/lore/appraise.go/appraise_cmd.gointernal/lore/embed_wiring.go(RRF integration point)Reproduction
Query
lore_appraisewith a query containing a common keyword that several unrelated entries also mention (e.g. "the database"); observe that top results include hits whose semantic score is materially lower than the BM25 score would suggest.Acceptance