[[re-ranking-overview]] = Re-ranking Many search systems are built on multi-stage retrieval pipelines. Earlier stages use cheap, fast algorithms to find a broad set of possible matches. Later stages use more powerful models, often machine learning-based, to reorder the documents. This step is called re-ranking. Because the resource-intensive model is only applied to the smaller set of pre-filtered results, this approach returns more relevant results while still optimizing for search performance and computational costs. {es} supports various ranking and re-ranking techniques to optimize search relevance and performance. [float] [[re-ranking-two-stage-pipeline]] == Two-stage retrieval pipelines [float] [[re-ranking-first-stage-pipeline]] === Initial retrieval [float] [[re-ranking-ranking-overview-bm25]] ==== Full-text search: BM25 scoring {es} ranks documents based on term frequency and inverse document frequency, adjusted for document length. https://en.wikipedia.org/wiki/Okapi_BM25[BM25] is the default statistical scoring algorithm in {es}. [float] [[re-ranking-ranking-overview-vector]] ==== Vector search: similarity scoring Vector search involves transforming data into dense or sparse vector embeddings to capture semantic meanings, and computing similarity scores for query vectors. Store vectors using `semantic_text` fields for automatic inference and vectorization or `dense_vector` and `sparse_vector` fields when you need more control over the underlying embedding model. Query vector fields with `semantic`, `knn` or `sparse_vector` queries to compute similarity scores. Refer to <> for more information. [float] [[re-ranking-ranking-overview-hybrid]] ==== Hybrid techniques Hybrid search techniques combine results from full-text and vector search pipelines. {es} enables combining lexical matching (BM25) and vector search scores using the <> algorithm. [float] [[re-ranking-overview-second-stage]] === Re-ranking When using the following advanced re-ranking pipelines, first-stage retrieval mechanisms effectively generate a set of candidates. These candidates are funneled into the re-ranker to perform more computationally expensive re-ranking tasks. [float] [[re-ranking-overview-semantic]] ==== Semantic re-ranking <> uses machine learning models to reorder search results based on their semantic similarity to a query. Models can be hosted directly in your {es} cluster, or you can use <> to call models provided by third-party services. Semantic re-ranking enables out-of-the-box semantic search capabilities on existing full-text search indices. [float] [[re-ranking-overview-ltr]] ==== Learning to Rank (LTR) <> is for advanced users. Learning To Rank involves training a machine learning model to build a ranking function for your search experience that updates over time. LTR is best suited for when you have ample training data and need highly customized relevance tuning. include::semantic-reranking.asciidoc[] include::learning-to-rank.asciidoc[]