Skip to content

v4.3.1 — Hybrid Search Fixes

Choose a tag to compare

@lyonzin lyonzin released this 22 Jun 17:44
696a12e

PATCH release: hybrid search bug fixes from external contributor @Hohlas, anti-regression tests pinning the contracts, and a CI unblocker.

Fixed

  • search_knowledge(category="general") no longer rejected on custom configs. The parser hardcodes "general" as the fallback in ingestion.py:_detect_category, but the validator only accepted what was in config.keyword_routes + config.category_mappings.values(). Users who customized config.yaml and dropped the default "general": "general" mapping hit Invalid category even though the index contained general documents. Validator now always tolerates "general". (#98)
  • Stale BM25 chunk IDs no longer leak empty results. When BM25 returned a chunk_id that Chroma could no longer resolve (right after remove_document, or in the window between async reindex and BM25 rebuild), the previous fallback injected a record with empty document / metadata into the reranker. Pipeline now continues past stale IDs cleanly. (#98)

Internal

  • 4 anti-regression tests pin both contracts (tests/test_pr98_regression.py). Test count baseline: 227 → 231. (#99)
  • [tool.mypy] python_version bumped 3.11 → 3.12 to accept PEP 695 type syntax in the numpy stub. Static-analysis only; runtime support still >=3.11. (#100)

Compatibility

  • 13 MCP tools frozen — all parameter signatures identical to v4.3.0
  • No breaking changes (verified by check_api_surface.py)
  • Atomic version sync across pyproject.toml, mcp_server/__init__.py, npm/package.json

Install

```bash
pip install knowledge-rag==4.3.1

or

npx -y knowledge-rag@4.3.1

or

docker pull ghcr.io/lyonzin/knowledge-rag:4.3.1
```

Thanks to @Hohlas for the contribution.