> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# Hybrid search

> Combine semantic similarity with keyword matching — the best of both.

Nora's retrieval defaults to **hybrid search**: two independent ranking passes (vector and keyword) fused into one final score. This works better than either alone.

## Why hybrid

* **Vector search** finds chunks that mean similar things, even if wording differs. Great for paraphrased questions, cross-language, and conceptual matches. Weak on rare exact terms — SKUs, error codes, proper nouns.
* **Keyword (BM25) search** finds chunks with the same literal terms. Great for identifiers, jargon, exact-string lookups. Weak on synonyms and paraphrases.

Most real questions need both.

## How fusion works

Vector and keyword each produce a ranked list. Nora combines them using **Reciprocal Rank Fusion (RRF)** — a chunk in position 3 of both lists scores higher than a chunk that's #1 in one list and #100 in the other. RRF is robust to score scale differences and has no tunable magic constant.

The fused list is what the Agent sees.

## Adjusting the balance

Even with RRF, you can weight the passes. From your Retrieval preset:

* **Vector weight** — 0.0 to 1.0. Default 0.5.
* **Keyword weight** — 0.0 to 1.0. Default 0.5.

Push toward vector for conversational domains (support, legal Q\&A). Push toward keyword for code, part numbers, product names.

Setting one weight to 0 turns off that pass entirely (pure vector or pure keyword).

## Query expansion

For hard queries — short, ambiguous, or single-keyword — Nora can rewrite the query into a small set of variants and search each. Results are re-fused. Off by default because it adds latency and cost.

Turn on in your preset: **Query expansion → on**. Set expansion count (2-5). Uses a small model.

## Multilingual

Vector search works across languages when your embedding model is multilingual. Keyword search matches only the surface language. If your data is multilingual, embed with a multilingual model and lean the weight toward vector.

## Testing

Every Retrieval preset has a **Test query** panel. Type a query, see the ranked results, and toggle vector-only / keyword-only / hybrid to compare. Score breakdown is shown for every returned chunk.

## When hybrid is overkill

For very small collections (\< 1000 chunks) keyword-only is often enough and costs nothing extra. For very short, keyword-heavy queries (SKU lookups) keyword-only is faster with the same recall. Turn off vector in those presets.
