Search infrastructure

Search that adapts
to what you typed.

Fenlo expands every query into keyword and semantic variants, weights them by intent, and merges the rankings with reciprocal rank fusion. An error code surfaces as fast as a conversational question.

how do we handle retries after a 429
Searching 4 query variants
Semantic rephrase
Keyword expansion
Original query
Spell-corrected
Fused by rank, not raw score
PR #212: Add exponential backoff to gateway client
Retries a 429 with jittered exponential backoff, capped at 5 attempts, before surfacing the error upstream...
Runbook: 429 retry handling
Covers when to retry, when to fail fast, and how the gateway's rate limiter reports remaining quota...

Three engines, one ranked list. Most search tools pick keyword or semantic and live with the gap. Fenlo runs both, then fuses the rankings.

Full-text search (BM25)

Ranks by exact term frequency. An error code, a ticket number, or a variable name matches on the text itself, with no interpretation involved.

Vector similarity

Ranks by meaning. A question about password resets finds a page titled "credential recovery flow" even though the words don't overlap.

Reciprocal rank fusion

BM25 scores and cosine similarities live on different scales, so comparing them directly is unreliable. RRF fuses rank positions instead, so both engines contribute fairly.

One query becomes several

Before anything gets ranked, Fenlo expands your query into a small set of variants: a semantic rephrasing, a few keyword expansions, a spell-corrected fallback. Each one runs in parallel, weighted by how reliable that signal usually is, then fused into a single ranked list.

Semantic rephrase
Keyword expansion
Original query
Spell-corrected
RRF

Weighted by what you typed

A query that looks like an exact identifier, an error code, a ticket number, a symbol, leans toward keyword matching. A conversational question leans toward semantic matching. Fenlo reads the shape of the query and adjusts the blend automatically.

ERR_GATEWAY_TIMEOUT_504
Keyword
Semantic
why do our webhooks keep failing
Keyword
Semantic

Doesn't stop at one pass

After fusion, Fenlo checks whether the results actually answer the query. If they fall short, it rewrites the query and searches again, for a bounded number of rounds, before answering with what it found or saying plainly that nothing covers it.

Fused results
Relevance checkRewrite and retry, up to a few rounds
Answer, with sources
Every result is permission-checked before it reaches the fusion step
Keyword, vector, and fused results all inherit the native access controls of the source they came from.
See how it works

Questions and answers

Common questions about Fenlo hybrid search.

Fenlo combines BM25 keyword matching with vector similarity search. Exact terms and semantic meaning both contribute to every result, instead of picking one approach upfront.

BM25 scores and vector similarity scores sit on different scales, so averaging them directly produces unreliable rankings. Reciprocal rank fusion merges the two result lists by position instead, so a strong result from either engine surfaces fairly.

No. Fenlo reads the shape of a query. Error codes and ticket numbers lean keyword. Conversational questions lean semantic. The weighting adjusts automatically, with no configuration required.

Fenlo grades whether the retrieved results actually answer the query. If they fall short, it rewrites the query and searches again for a bounded number of rounds, then answers with what it found or says plainly that nothing covers it.

Yes. Every search query, regardless of the underlying algorithm, is filtered by Fenlo's permissions engine so you only see documents you're authorized to access.

Ready to give your team
instant answers?

See how Fenlo connects your tools and turns scattered knowledge into a single, searchable intelligence layer.

Start For Free