What you’ll take away
- Raw keyword and vector scores can have different meanings and scales; a direct sum needs an explicit justification.
- RRF combines positions and discards original score gaps; its constant, candidate windows and list count still matter.
- A document absent from every input shortlist cannot be recovered by fusion alone.
- Normalized scores retain different information but are not automatically probabilities of relevance.
- Check the final order against the actual information need and evaluate downstream answers separately.
Begin with the question the result must answer
Imagine looking for the pairing instructions for a fictional AX-17 keyboard. A page that discusses wireless keyboards in general may sound relevant while failing to provide those instructions. A parts catalogue may repeat AX-17 many times without answering the question either. These are invented documents, not observations from a real search engine. They show why a useful result needs both the right subject and the information the reader requested. Neither a shared product name nor a related meaning settles the question alone.
Hybrid search combines different ways of finding candidates. Microsoft's Azure documentation describes full-text and vector searches running together, with their results merged into one ranking. It identifies product codes and other exact terms as cases where keyword matching can be useful, while vector search can find conceptually related content without the same wording [1]. That combination creates an opportunity, not a certificate of correctness. The practical question is how to combine the two lists without pretending their original scores mean the same thing. We will use small, fully invented lists to make that decision visible.
A hybrid retrieval design begins with an information requirement, not a preferred fusion algorithm. In the hypothetical AX-17 keyboard case, the target is a pairing procedure for that specific model. Identifier overlap and topical similarity are useful retrieval signals, but the requirement includes a relationship between the model and the requested procedure. An exact-code parts catalogue or a general wireless-keyboard explanation can satisfy one signal without satisfying the complete need.
Azure AI Search documents a hybrid request that executes full-text and vector queries and merges their result sets. Its overview distinguishes exact-term strengths, including product codes, from vector retrieval's ability to find conceptual matches without shared keywords [1]. Those are complementary candidate-generation behaviors. They do not establish that a particular fusion will place the required document first. The following examples therefore hold document identities and input rankings explicit, then inspect the transformation between them. This separates a reproducible ranking mechanism from a broader claim about answer quality, and provides a concrete way to locate a failure when the combined result is disappointing.
Keep the two lists visible before merging them
Think of each search method as producing an ordered shortlist. The same document can appear in both, at different positions, and some documents may appear in only one. Azure and Elastic describe fusion over these separately ranked result sets [2][3]. Before looking at the final list, keep a record of each document's identifier and its position in each shortlist. Otherwise, a change in the combined order can be difficult to explain: you cannot tell whether a document was found differently or merely combined differently.
For our invented collection, document A contains the AX-17 pairing procedure. B explains why wireless keyboards disconnect, without that procedure. C gives pairing instructions for a different keyboard, and D is an AX-17 keycap catalogue. Define the keyword shortlist as A, B, D and the vector shortlist as B, C, A. These orders are stipulated for the exercise, not calculated embeddings or measured engine output. All later arithmetic uses those same identities. Keeping identity stable matters because two snippets from one source and two independent documents are different objects; decide what your system is ranking before interpreting agreement.
The fusion input is a collection of ranked candidate lists with a consistent identity scheme. Elastic's RRF description combines the top documents returned by child retrievers; Azure similarly merges previously ranked result sets [2][3]. Preserve the original ranks, query configuration and document identifiers alongside the fused result. A failure in candidate generation and a failure in ordering are different events, even if both produce the same missing answer on the screen.
Our synthetic input contains four defined documents. A supplies the requested AX-17 pairing procedure; B supplies general disconnection background; C supplies another model's procedure; D supplies an AX-17 keycap catalogue. The lexical list is [A, B, D], and the vector list is [B, C, A]. The lists have depth three, ranks start at one, and the same identifier denotes the same document in both. No embedding model, corpus or live service produced these lists. They are a deliberately bounded fixture for examining fusion. In a real implementation, also declare whether the ranked identity is a passage, a complete document or another unit, so duplicate fragments are not silently interpreted as distinct corroborating sources.
A raw score sum can change when only the scale changes
The numbers attached to the two lists may be on different scales. Azure's documentation shows that its text and vector scoring methods have different score ranges and magnitudes [2]. A text score of twelve is not automatically stronger evidence than a vector score below one. Adding them directly can give one method most of the influence simply because its numbers are larger. That influence has not been chosen through a meaningful comparison of what the methods found.
Use a separate invented two-document example. Suppose A has a keyword score of 12 and a vector score of 0.80, while B has 8 and 0.85. Raw addition selects A: 12.80 beats 8.85. Now express the keyword scores at one hundredth of their previous size, leaving their order unchanged. The sums become 0.92 for A and 0.93 for B, selecting B. Both individual rankings stayed the same. Only the score scale changed. This is arithmetic, not an experiment showing that either document is better. It explains why a fusion rule needs an explicit treatment of score meaning.
Score comparability cannot be inferred from two fields both being called a relevance score. Azure documents distinct ranges and magnitudes for BM25, vector retrieval and fused results [2]. A direct weighted sum has an implicit dependence on each input scale. If those scales have not been made comparable or intentionally calibrated, the numerical dominance of one component is not evidence that its relevance signal deserves that influence.
Consider the independent hypothetical pairs A = (12, 0.80) and B = (8, 0.85), with lexical score first. Equal raw addition yields 12.80 and 8.85. Multiplying only the lexical scores by 0.01 preserves their ordering but changes the totals to 0.92 and 0.93, reversing the fused order. The example holds both within-list rankings constant and changes only one representation scale. It demonstrates scale sensitivity rather than a preferred outcome. Rank fusion avoids this particular dependence by consuming positions; score normalization addresses it through a different transformation. Neither choice makes the original relevance signal infallible, and the chosen transformation should remain part of the experiment record rather than an invisible preprocessing detail.
Follow one reciprocal-rank calculation all the way through
Reciprocal rank fusion, usually shortened to RRF, assigns a contribution from each document's position in each list, then adds those contributions. The documented basic rule is one divided by the rank plus a constant [2][3]. For this exercise, choose a constant of 10, start ranks at one, and give the two lists equal weight. Ten is an invented teaching choice, not a recommended production setting. A document missing from one shortlist receives no contribution from that shortlist.
Return to keyword order A, B, D and vector order B, C, A. A receives 1/11 plus 1/13, about 0.16783. B receives 1/12 plus 1/11, about 0.17424. C receives only 1/12, about 0.08333, and D only 1/13, about 0.07692. The fused order is B, A, C, D. B wins because of its positions across both lists, even though our fictional description says A contains the requested procedure. The computation worked as specified. The result illustrates why agreement between retrieval signals and satisfaction of the reader's need must be checked separately.
For equal-weight RRF, define S(d) as the sum of 1/(c + r_i(d)) over input lists containing document d. Use c = 10 and one-based ranks in this fixture; an absent document contributes zero for that list. This is the basic rank-based mechanism described in the Azure and Elastic references [2][3]. The symbol c is chosen to avoid confusing the fusion constant with a nearest-neighbor count or a final response length.
The stipulated lists produce S(A) = 1/11 + 1/13 = 0.167832…, S(B) = 1/12 + 1/11 = 0.174242…, S(C) = 1/12 = 0.083333…, and S(D) = 1/13 = 0.076923…. Sorting descending yields [B, A, C, D], with no tie in this example. The relevant-procedure document remains second because the formula observes ranks, not our content descriptions. No relevance probability has been estimated. This separates implementation correctness from task success: reproducing the formula establishes the former for the fixture, while the latter requires checking the result against the declared information requirement.
The constant changes how strongly positions differ
The constant is not just decoration. Adding a larger constant makes the contributions from nearby positions more alike. Elastic describes its rank constant as controlling the influence of lower-ranked items [3]. Using our teaching value of 10, first place contributes 1/11 and third place 1/13. The first-place contribution is about 1.18 times the third-place contribution. With a constant of 60, that ratio becomes 63/61, about 1.03. These ratios describe the formula; they do not identify the best constant for your collection.
RRF also discards the original score gaps. A narrow victory and an overwhelming victory both become first place if the resulting order is identical. Weaviate explicitly contrasts rank-based fusion with a method that retains information about score differences [4]. That is a useful tradeoff to recognize. Rank fusion can combine methods without making their raw magnitudes match, but it cannot use a gap it has thrown away. If an exact-code result is far ahead within one method, examine whether ignoring that margin helps or harms the queries your readers actually ask.
For a fixed list, increasing c reduces the contrast between nearby reciprocal-rank contributions. With one-based ranks, the ratio between contributions at ranks one and three is (c + 3)/(c + 1). It is 13/11 at c = 10 and 63/61 at c = 60. Elastic describes the corresponding increased influence of lower-ranked results as the constant grows [3]. These are algebraic properties, not evidence that either value maximizes effectiveness on a particular workload.
The transformation also removes score spacing. Any strictly order-preserving change to one list's scores leaves its RRF contribution unchanged, provided the selected candidates and tie handling remain unchanged. Weaviate identifies this loss of score information when contrasting ranked and relative-score fusion [4]. The trade is therefore explicit: rank positions avoid direct raw-scale comparison while abandoning within-list margins. A large lexical lead for an identifier match and a nearly tied semantic ordering become sequences of positions. Decide whether that abstraction suits the task through labeled cases, rather than describing the removal of information as an unconditional improvement.
Candidate depth changes what fusion is allowed to see
A final screen showing two results does not mean each search method should find only two candidates. Elastic distinguishes the size of each input ranking from the number returned after fusion [3]. These are different stages. A document can earn contributions from both methods only if it survives into both lists being fused. A useful document missing from every input list cannot be promoted by rearranging those lists; it never reaches that decision.
Trim our invented input lists from three positions to two. Keyword search now supplies A and B, while vector search supplies B and C. A loses its third-place vector contribution, so its fused score falls from about 0.16783 to 0.09091. D disappears completely. B keeps both contributions. This change says nothing about the documents becoming more or less useful; it changes the evidence available to the merger. When tuning a system, record candidate depth separately from the displayed result count. Otherwise, an apparent change in ranking quality may actually come from changing which documents were eligible to be ranked.
Candidate-window size and final response size govern different boundaries. Elastic documents a rank window for the individual child result sets and subsequent pruning to the requested response size [3]. Fusion only operates on the union of candidates provided to it. It cannot recover a document absent from that union, and a document present in only one truncated list lacks any contribution it might have received beyond another list's cutoff.
In the fixture, reducing each depth from three to two gives [A, B] and [B, C]. At c = 10, A's score becomes 1/11 = 0.090909… because its vector rank of three is no longer visible. D is absent from the union. B still receives 1/12 + 1/11, and C receives 1/12. This is a change to candidate exposure, not to underlying document content. A controlled comparison should therefore retain the window, query and corpus configuration alongside the fusion parameters. Increasing the final displayed count alone is not equivalent to widening the upstream candidate pools.
Normalized scores preserve a different kind of information
Another approach rescales each method's scores before combining them. Weaviate documents relative-score fusion that maps the highest score to one, the lowest to zero and intermediate values between them [4]. This can retain a large or small gap between results that rank fusion would discard. It is a different rule for using the available evidence, with its own dependence on which scores are included.
Consider a separate invented list with scores 12, 11 and 2. Subtract two and divide by ten to obtain 1, 0.9 and 0. The first two results remain close. If the list instead contained 12, 3 and 2, the same operation gives 1, 0.1 and 0, preserving a much larger lead. This calculation assumes different minimum and maximum values; it does not define what a product should do when all scores tie. Normalization also does not turn these values into chances of correctness. A score of 0.9 here means a position within this score range, not a ninety-percent probability that the document answers the question.
Weaviate's documented relative-score approach normalizes each component's values before combining them, while its rank-based alternative uses ordering alone [4]. For an original nondegenerate min–max example, define z = (s − s_min)/(s_max − s_min). Scores [12, 11, 2] become [1, 0.9, 0], whereas [12, 3, 2] become [1, 0.1, 0]. The order is the same, but the normalized margin is different, retaining information that a position-only transformation omits.
This example does not specify handling for equal extrema, missing candidates or ties; those require the selected implementation's documented behavior. It also exposes a dependency: the extrema belong to a selected result set, so changing that set can change the scale. Normalization makes values numerically comparable according to a chosen rule, not statistically calibrated probabilities. Weaviate's weighting parameter then changes the balance between components [4]. Treat normalization and weighting as distinct decisions, and retain their exact settings when comparing results. A familiar zero-to-one range is insufficient reason to interpret a fused score as confidence.
Weights, filters and later reranking answer different questions
A search system may let you give one component more influence. Azure documents vector weighting, and Weaviate documents an alpha setting for balancing keyword and vector results [2][4]. The controls belong to those products and should be read with their current documentation. A larger weight changes the merger's preference; it does not create missing evidence or prove the favored method is better for every query. Our earlier arithmetic used equal contributions so that this extra choice stayed visible rather than being hidden in the example.
Keep other controls separate. A filter can restrict which records qualify, while a later reranker can reconsider the candidates that reached it. Azure describes semantic ranking as a step after RRF, with a separately reported score [1][2]. In an original catalogue scenario, restricting results to a required product family is a different operation from raising the keyword weight. Record both choices. Also avoid carrying one fused-score threshold blindly into another configuration: Azure notes that the number of combined queries affects the RRF score range [2]. The number has meaning only alongside the system that produced it.
Fusion weights encode relative contribution, not an independent relevance judgment. Azure describes vector-query weighting, and Weaviate exposes alpha to balance its hybrid components [2][4]. Their precise API behavior and defaults are implementation-specific. The equal-weight fixture deliberately does not claim to reproduce either product's complete request pipeline. A comparison needs explicit settings, including any client behavior that supplies a value when an application leaves it unset.
Distinguish candidate eligibility, fusion and subsequent reranking. Azure's overview describes filters alongside hybrid querying, while its ranking documentation places semantic reranking after RRF and reports a separate reranker score [1][2]. Restricting an invented catalogue query to an applicable product family changes eligibility; changing a fusion weight changes ordering among eligible candidates. Neither action is equivalent to examining the final document's actual answer. Score thresholds also require context: Azure notes that adding result lists changes the bound and magnitude of RRF scores [2]. A threshold copied across different list counts or weighting choices can therefore describe a different selection rule even when its written number is unchanged.
Study the disagreements instead of celebrating the merge
Our fictional B appears near the top of both input lists and becomes the fused winner. Yet the fixture says A contains the requested AX-17 procedure and B does not. That is a useful failure to inspect. Fusion has combined the signals correctly while still putting a background page ahead of the needed instructions. The example is not evidence that hybrid search is generally worse. It demonstrates a possible mismatch between the rule being optimized and the reader's specific task.
Build a small review set with the kinds of questions that matter to your site: exact model names, paraphrased requests, ambiguous terms and questions whose answer is absent. These are proposed test categories, not a claim about their frequency in a particular business. For each case, record the separate lists, their union and the final order. Ask whether the needed document was missing, present but ranked low, or correctly retrieved but then used badly in an answer. Azure's separation of retrieval, fusion and optional semantic ranking helps keep those stages distinct [1][2]. Fix the stage that the evidence actually implicates.
The fixture provides a counterexample to treating multi-list agreement as proof of task fulfillment. B receives the highest RRF score, while only A satisfies the stated pairing-procedure requirement. The outcome follows directly from the constructed ranks and content descriptions; it is not a measured comparison of retrievers. Its value is diagnostic: formula correctness and relevance effectiveness are separately testable properties.
Evaluate lexical-only, vector-only and fused outputs against the same defined cases before attributing an improvement to fusion. Proposed slices might include identifiers, semantic paraphrases, ambiguous wording and absent-answer requests. Preserve candidate membership as well as rank so an error can be assigned to retrieval coverage, fusion ordering or a later stage. Azure documents retrieval and optional semantic reranking as distinct parts of the process [1][2]; a generated answer would introduce another output to assess. A correct retrieval list does not logically establish that downstream prose quotes, interprets or cites it correctly. Keep that inference boundary explicit rather than using one retrieval metric as certification for the whole application.
Save enough detail to explain the next change
A useful hybrid-search record includes the query, the collection version, the input document identifiers, both original rankings, candidate depths and the fusion settings. Add the final order and the reason a reviewer considered a document useful. For our example, anyone can recompute B's 1/12 plus 1/11 contribution and see why it outranks A. That transparency is more informative than saying the combined search felt smarter. It also makes a changed result easier to investigate after an index or configuration update.
Change one relevant choice at a time when you are trying to understand its effect. Compare a rank-based rule with a documented normalized-score rule, or adjust a candidate window, while keeping the rest of the case visible [3][4]. Record what improved and what became worse. The goal is a defensible choice for a defined set of needs, with known limits. Hybrid search gives different signals a way to contribute; careful evaluation determines whether the way you combined them helps the people using your search.
Retain a reproducible configuration record: corpus and index version, query, retrieved unit, candidate windows, identity mapping, component ranks and scores, fusion formula, constant, weights, tie policy and output length. Store the resulting order beside the relevance rationale. These fields make the distinction between a changed input and a changed merger inspectable. They also expose whether an apparent improvement follows from deeper retrieval rather than from the fusion rule itself.
For an interpretable experiment, vary a declared component and compare the same cases under the same evaluation definitions. Elastic's candidate-window controls and Weaviate's alternative fusion strategies illustrate different knobs whose effects should not be conflated [3][4]. Keep parameter selection separate from claims about broad effectiveness, and inspect regressions as well as aggregate gains. The worked arithmetic establishes only what our specified transformation does to our specified lists. That narrow, checkable result is the foundation for a useful implementation decision: choose a method because its documented behavior and observed outcomes fit the task, then retain enough evidence to revisit that choice when the collection or workload changes.
Sources & further reading
Explore the references behind this guide. External pages may change after our review.
- Hybrid Search Overview - Azure AI Search | Microsoft LearnMicrosoft · Accessed 6 Nov 2026
- Hybrid Search Scoring (RRF) - Azure AI Search | Microsoft LearnMicrosoft · Accessed 6 Nov 2026
- Reciprocal rank fusionElastic · Accessed 6 Nov 2026
- Hybrid search | Weaviate DocumentationWeaviate · Accessed 6 Nov 2026
Article updated 6 Nov 2026.
Found something we should revisit?
Good explanations get better with thoughtful feedback.