6dfc13be1d
Implements five of the six enhancements from docs/kb-enhancements-proposal.htm, closing the retrieval-quality gap identified in the qmd review. - Cross-encoder reranking: new kb/reranker.py loads an optional reranking model at startup (KB_RERANK_ENABLED, KB_RERANKER_MODEL, KB_RERANK_CANDIDATES). Search degrades gracefully to plain hybrid retrieval when the model is absent. Exposed via a "rerank" block in /status, a rerank flag on search, and --no-rerank in the CLI. - RRF rank fusion: FTS and vector lists now merge by reciprocal rank fusion with a top-rank bonus, replacing the old score blend. Scores are comparable across queries. - Bench harness and explain traces: kb bench runs a query fixture against each backend and reports precision@k, recall and MRR. --explain returns a per-result score breakdown. - Tag context descriptions: tags carry an optional one-line description (kb tag-describe), returned as tag_contexts with search results. Adds a tags.description column migration. - Structured data ingestion: .json/.yaml/.toml files ingest as text via the new "data" doc type, pretty-printing minified JSON before chunking. Query expansion (proposal item 5) is deliberately left out pending bench results. Requires engine v3.3.0. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
34 lines
1022 B
JSON
34 lines
1022 B
JSON
{
|
|
"description": "Example search-quality fixture — copy and adapt against your own corpus",
|
|
"top": 10,
|
|
"queries": [
|
|
{
|
|
"id": "manual-lookup",
|
|
"query": "how do I check the oil level",
|
|
"doc_type": "pdf",
|
|
"relevant": [
|
|
{"document_id": 2077},
|
|
{"title_contains": "owner's manual"}
|
|
],
|
|
"notes": "Selectors are OR-matched; each counts as one relevant document. Exactly one of document_id / source_path / title_contains per selector."
|
|
},
|
|
{
|
|
"id": "infra-runbook",
|
|
"query": "restart the reverse proxy after certificate renewal",
|
|
"tags": ["ops"],
|
|
"relevant": [
|
|
{"source_path": "/data/notes/proxy-runbook.md"}
|
|
]
|
|
},
|
|
{
|
|
"id": "note-recall",
|
|
"query": "what did we decide about the backup retention window",
|
|
"top": 5,
|
|
"relevant": [
|
|
{"title_contains": "backup retention"}
|
|
],
|
|
"notes": "Per-query top overrides the fixture-level default; the --top flag overrides both."
|
|
}
|
|
]
|
|
}
|