<!-- llms-explorer concept facts · https://llms-explorer.com/tree/ranked-and-scored-input-pipeline-eligibility/ · pack 2026-10-15 · ~2983 tokens -->

# Ranked and scored input pipeline eligibility

> Depth-first rabbithole dossier for Ranked and scored input pipeline eligibility; source-anchored research pack.

Parent: [Atlas Hybrid Fusion and BM25 Diagnostics](https://llms-explorer.com/tree/mongodb-atlas-hybrid-fusion-bm25-frontier-20261001/) · 6 facets · 25 facts · page: https://llms-explorer.com/tree/ranked-and-scored-input-pipeline-eligibility/

## Definitions

- [low] In Weaviate, keyword search is based on the BM25F scoring algorithm and is called BM25 search. Sources: https://weaviate.io/blog/hybrid-search-fusion-algorithms — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`

## Structure and components

- [low] Pipeline names must not start with a `$`, contain the ASCII null character `\0`, or contain a `.`. Sources: https://www.mongodb.com/docs/manual/reference/operator/aggregation/scoreFusion.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`

## How it works

- [low] If an input pipeline does not inherently return a score, such as when using `$geoNear` which returns distance, it must include an explicit `$score` stage. Sources: https://www.mongodb.com/docs/manual/reference/operator/aggregation/scoreFusion.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [low] In a hybrid query, `top` determines the number of results in the response, with the top 50 highest ranked matches returned by default. Sources: https://learn.microsoft.com/azure/search/hybrid-search-ranking — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [low] For `$rankFusion`, the ticket says the `StageConstraints` on DocumentSourceRankFusion are likely unreachable code because constraints() is only called after desugaring. It does not state this as a general rule for all pipeline processing. Sources: https://jira.mongodb.org/browse/SERVER-101701 — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#methodology`
- [low] When you upgrade from MongoDB 8.0, you might have to pause executing `$rankFusion` queries. The statement that no further action is required for Free (M0) and Flex clusters belongs to the Automated Embedding auto-scaling prerequisites, not to the upgrade note. (verified as of 2026-10-15) Sources: https://www.mongodb.com/docs/vector-search/hybrid-search/hybrid-search-overview.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#troubleshooting`

## Problems, failure modes and limitations

- [low] Using `$nativeVectorSearch` in a `$scoreFusion` input pipeline is rejected with error code 12108713, and these rejections occur at parse/LP time without referencing shard names. Sources: https://jira.mongodb.org/browse/SERVER-117661 — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#troubleshooting`
- [low] The `details` field in `$score` is an empty array because `$score` cannot take input pipelines. Sources: https://www.mongodb.com/docs/manual/reference/operator/aggregation/score.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [medium] When using `$geoNear` in a selection pipeline, you cannot specify `includeLocs` or `distanceField` because those fields modify documents. Sources: https://www.mongodb.com/docs/manual/reference/operator/aggregation/scoreFusion.md, https://www.mongodb.com/docs/manual/reference/operator/aggregation/rankFusion.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [low] By default, full-text search returns the top 50 highest ranking matches and is subject to a maximum limit of 1,000 matches, after which the engine stops looking for more. Sources: https://learn.microsoft.com/azure/search/hybrid-search-ranking — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [low] RRF cannot distinguish between a #1 result with a score of 0.99 and one with 0.51, and its preference for consensus may cause a document loved by one retriever but ignored by another to lose to a document both merely liked. Sources: https://redis.io/blog/reciprocal-rank-fusion/ — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#antipatterns`

## Comparisons and alternatives

- [medium] `$rankFusion` de-duplicates results so each unique document appears at most once, and sub-pipelines run serially rather than in parallel. Sources: https://www.mongodb.com/docs/manual/reference/operator/aggregation/rankFusion.md, https://www.mongodb.com/docs/vector-search/hybrid-search/hybrid-search-overview.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [low] Atlas 8.0+ (8.1+ for native fusion) with Voyage AI integration, Python 3.11+, Node 18+, and uv are required, and an extra lexical index is needed because fusion stages require sub-pipelines on the same collection. (verified as of 2026-10-15) Sources: https://github.com/adrianofratelli-glitch/atlas-search-vs-vector-marketplace — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`

## Facts and statements

- [medium] Input pipelines for `$rankFusion` and `$scoreFusion` must operate on the same collection, have unique names, and be both Selection and Ranked (or Scoring) Pipelines. Sources: https://www.mongodb.com/docs/manual/reference/operator/aggregation/scoreFusion.md, https://www.mongodb.com/docs/manual/reference/operator/aggregation/rankFusion.md, https://www.mongodb.com/docs/vector-search/hybrid-search/hybrid-search-overview.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- Fact 8 states input pipelines must be Scoring Pipelines, while Fact 15 states they must be Ranked Pipelines. Sources: https://www.mongodb.com/docs/manual/reference/operator/aggregation/scoreFusion.md, https://www.mongodb.com/docs/manual/reference/operator/aggregation/rankFusion.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#disagreements`
- [low] A Selection Pipeline retrieves documents without modifications, while a Ranked Pipeline sorts or orders documents to influence `$rankFusion` output ranking. Sources: https://www.mongodb.com/docs/manual/reference/operator/aggregation/rankFusion.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [medium] `$rankFusion` and `$scoreFusion` preserve a traceable link to the original input document and do not support certain modifications, requiring any document modifications to occur after the stage. Sources: https://www.mongodb.com/docs/manual/reference/operator/aggregation/rankFusion.md, https://www.mongodb.com/docs/vector-search/hybrid-search/hybrid-search-overview.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#patterns`
- [low] The final ranked result set is pruned to the search request's `size`, and either `query` or `retrievers` must be specified, but combining them is not supported. Sources: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrievers/linear-retriever — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#antipatterns`
- [low] Validation for `$rankFusion` being the first stage may be bypassed if the first input pipeline is a custom-sorted pipeline without `$search`, `$vectorSearch`, or `$geoNear`, making `StageConstraints` potentially unreachable code. Sources: https://jira.mongodb.org/browse/SERVER-101701 — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#troubleshooting`
- [medium] The `scoreDetails` option, which defaults to `false`, breaks down scoring factors to analyze why a document matched a query and received its score. Sources: https://www.mongodb.com/docs/search/query/score/get-details.md, https://www.mongodb.com/docs/manual/reference/operator/aggregation/score.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [low] The `scoreDetails` object includes a `value` (float) representing the contribution to the score, a `description` (string) detailing the formula, and a recursive `details` array breaking down scores for each match. Sources: https://www.mongodb.com/docs/search/query/score/get-details.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [low] The `rank_window_size` parameter defaults to 10, must be greater than or equal to `size` and `1`, and determines the number of results produced before merging based on weight and normalizer. Sources: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrievers/linear-retriever — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [low] Hybrid query execution counts include one full-text query plus vector queries: one vector query equals two executions, one vector query targeting two fields equals three, and two vector queries targeting five fields equals eleven executions. Sources: https://learn.microsoft.com/azure/search/hybrid-search-ranking — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#core`
- [low] Reciprocal Rank Fusion (RRF) combines ranked lists using only document positions, ignoring raw scores to avoid scale problems, as position #3 is consistent regardless of source. Sources: https://redis.io/blog/reciprocal-rank-fusion/ — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#methodology`
- [low] MongoDB recommends setting limits for the number of results returned by each sub-pipeline and using `$match` and `$sort` stages. Sources: https://www.mongodb.com/docs/vector-search/hybrid-search/hybrid-search-overview.md — source: `~/.global-ai-hub/research/.pipeline/mongodb-2026-10-14/frb/ranked-and-scored-input-pipeline-eligibility-a879be760f/rabbithole-synthesis.md#patterns`

## Related concepts

- and — is a part of Ranked and scored input pipeline eligibility
- pipeline — is a part of Ranked and scored input pipeline eligibility
- input — is a part of Ranked and scored input pipeline eligibility
- Ranked — is a part of Ranked and scored input pipeline eligibility
