The pipeline
The signal set is adaptive: simple lookups donât pay for expansion and inference, broad questions do. Everything runs inside one PostgreSQL instance: vectors, full-text, and relational filters in the same database as the source of truth. No search-index sync drift, and itâs a large part of why retrieval stays sub-second.
Degrades, never hard-fails
Querying degrades gracefully when optional dependencies are missing:
A degraded answer beats an error page, and the explain output tells you when youâre getting one.
Choosing a strategy
The classifier picks automatically (auto), but API callers can force one:
Explain mode
Passexplain=true (or use the dashboardâs Query Explorer) and every result carries its attribution: which signals matched it, at what ranks, and what fusion and reranking did to its position. When someone asks âwhy did chat say that?â, the explain output is the answer. Itâs the query-side analogue of the provenance chain.
Tuning heuristics
- Start with
auto. Forcehybridonly when the classifier visibly picks wrong; check explain output first. - Queries with literal tokens (IDs, error codes, project names) lean on full-text matching. If such queries underperform, confirm the term actually appears in rule text rather than only in raw records.
topKdefaults are conservative. Raise toward 20â50 for synthesis-style consumers (an agent summarising a topic); keep low for direct Q&A.- Filter by
reviewStatusfor production integrations. Querying ranks by relevance, not by whether a human approved the rule.
Common mistakes
Related
Chat
The biggest consumer of this pipeline.
Knowledge
The substrate and indexes this pipeline searches.