Indexing pipeline
Canonical search text
The formatter uses declared fields only:toolName and parameter descriptions from the existing
inputSchema. Missing fields are omitted, not inferred.
Retrieval
- Apply structured filters before ranking.
- Retrieve PostgreSQL full-text candidates.
- Retrieve vector candidates from the active model generation.
- Fuse candidate ranks with reciprocal-rank fusion.
- Optionally rerank the fused head.
- Apply deterministic cursor and origin-diversity tie breaks.
ts_rank_cd is not BM25, and cosine
distance is never added to it as if both were comparable scores.
The checked-in self-hosted profile uses lexical weight 0.7, semantic weight
0.3, rrf_k: 20, and candidate pools of 250. Search evaluation also
measured a tuned development configuration, but that does not silently change
the shipped profile. Operators should publish which configuration produced a
benchmark result.
Model generations
Every generation records:Xenova/bge-m3 ONNX artifact at 1024 dimensions. The Railway profile uses an
OpenAI-compatible remote embedding endpoint and does not download model files.
The checked-in model licence record is:
The facilitator validates the returned vector dimension before storage. A
provider whose terms or weights do not satisfy an operator’s redistribution
policy must stay behind the remote-provider interface or be disabled.
Degradation ladder
Use
/analytics/v1/search/status to inspect provider health, active generation,
queue depth, coverage, and the exact degraded reason.
Query safety and provenance
Queries are normalized before PostgreSQL parsing. Empty or stopword-only input becomes a guaranteed no-match query. Seller descriptions are untrusted content: they are inert metadata and never become agent instructions. Search responses carry anx-search-session-id. A later resource fetch can use
that identifier to record search-to-resource conversion. This signal is
operator analytics, not a relevance judgment.
See evaluation for measured model and retrieval results
and configuration for provider settings.