Hey folks,
I’m building a search pipeline using Elasticsearch + Vector Search + LTR, and I’ve hit a conceptual conflict.
Classic pipeline:
-
Recall (BM25 / Vector / Hybrid)
-
LTR (rerank top-K)
-
Pagination
All good. But here’s where things get messy:
1. Recall doesn’t know what “good” means.
It only fetches candidates.
It doesn’t understand price, discount, margin, conversion but LTR does.
So the fear is:
“What if the good products never make it into the top-K? LTR will never see them.”
How is this measured in practice? Recall@K?
2. Where does business logic belong? Query or LTR?
If I add price/popularity boosting in Recall:
-
feels like I’m duplicating model logic
-
feels like I’m biasing the Recall artificially
-
feels like LTR becomes useless
If I don’t add anything:
-
Recall becomes “blind”
-
good products fall outside top-K
-
meaning LTR becomes pointless
How do you balance this?
3. What’s the real boundary between Recall and Rerank?
The theory says:
-
Recall = don’t miss anything potentially relevant
-
LTR = choose the best among them
But how does this translate into Elasticsearch best practices?
Short version of my questions
-
How do you ensure good items aren’t lost in Recall?
-
How do you measure/tune Recall@K realistically?
-
How much logic should live in the query vs the model?
-
Any recommended pattern from Elastic for hybrid pipelines?
Thanks!