Skip to content

refactor(search): unify lexical-only and vector read paths ('hybrid with empty vector list') #438

Description

@HumanBean17

Tracks deferred work from #431 (fork B). Design ref: docs/superpowers/specs/active/2026-07-12-hybrid-bm25-rrf-design.md.

Why

#431 treats the macOS-Intel lexical-only path conceptually as "hybrid with an empty vector list," but does not physically unify the two code paths. After #431, both paths speak the same RRF vocabulary, so unification is now tractable.

Scope

  • Collapse search_lexical.py and the lexical branch of search_lancedb.py into one read path where the vector list is simply empty when the vector stack is absent (macOS Intel).
  • One ranking code path, not two. Removes the lexical/backend split.

Why deferred from #431

Scope/risk control — #431 ships the ranking improvement without restructuring the backend boundary.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions