Optional cost reporter. When set, the reranker invokes it after each successful
Rerank call with the actual cents charged. The SearchEngine wires this from the
RerankerBudgetGuard to the scope-level spend tracker — see Phase 2D.6.
The DriverClass key used by @RegisterClass(BaseReRanker, 'DriverClassName') so
the SearchEngine can resolve this subclass via ClassFactory from the scope's
ScopeConfig.reRanker.driverClass value.
Human-friendly display name. Defaults to DriverClass so subclasses don't have to
override unless they want a different label in UI dropdowns / cost reports.
Reranker semantic version (independent of the package version). Bump this on a
subclass when the prompt, scoring formula, or upstream model identifier changes
in a way that invalidates cached scores. Defaults to '1'.
ProtectedbuildBuild the text representation of a SearchResultItem for the rerank model.
Default concatenates Title and Snippet separated by newline. Override to
customize (e.g. include tags or entity context).
Pre-call cost estimate in cents for reranking the given candidate count. Used by
the budget guard to short-circuit BEFORE making the call when the projected cost
exceeds SearchScope.RerankerBudgetCents.
Default: 0 (free / local). Real-provider subclasses override based on their pricing.
The number of candidates to be reranked.
Estimated cost in cents (whole + fractional, e.g. 0.25 for ¼¢).
ProtectedgetReturn the underlying @memberjunction/ai BaseReranker instance to use.
Provider-specific subclasses (Cohere, BGE, Voyage) override this to return a
configured AI reranker. Returning null (the default) tells ReRank() to
skip the AI layer and fall back to a simple top-N slice — useful for Noop
and test implementations.
Provider-specific config from ScopeConfig.reRanker.config.
The calling user (for auth / tenant propagation).
Maximum number of candidates a single Rerank call can score. Real providers cap
this (Cohere: 1000, Voyage: 1000, OpenAI: varies). The SearchEngine should respect
this cap by chunking large candidate lists. Defaults to Number.MAX_SAFE_INTEGER
(no cap) — subclasses should override.
ProtectedreportHelper for subclasses: report a cost AND record it on the optional callback. Always safe to call even when no callback is set.
Score and re-order candidates against the query.
Default implementation:
topN <= 0 or candidates is empty.getAIReranker(). If none, slices to topN.SearchResultItem[] to RerankDocument[] (preserving each original item
in metadata.__mjSearchItem).Rerank() — inherits validation, timing, error handling.RerankResult[] back to SearchResultItem[], replacing
Score with relevanceScore and augmenting ScoreBreakdown with a ReRank key.Subclasses that bypass the AI layer (e.g. NoopReRanker) may override this method.
The original query text.
The fused candidate list (post-RRF, pre-dedup).
Maximum number of candidates to return after re-ranking.
The calling user (for auth / tenant propagation).
Optional_config: Record<string, unknown>Optional provider-specific config from ScopeConfig.reRanker.config.
StaticGetEnumerate every reranker currently registered with ClassFactory under
BaseReRanker. Designed for the SearchScope form's reranker dropdown (P2D.7) —
the form populates the dropdown from this single call rather than hardcoding
a list, so any ClassFactory-registered reranker (including third-party ones
published as separate packages) shows up automatically.
Each entry includes the driver-class registration key, the friendly Name,
Version, and a HasCost flag (true when EstimateCostCents(1) > 0). Sorted
by Name for stable UI ordering.
Pass-through re-ranker. Slices to
topNand returns the candidate order untouched.