Skip to main content

What is Reranking?

Reranking is a technique that refines the output of one or more vector queries by applying a secondary scoring strategy. Instead of relying solely on vector similarity scores, rerankers can:
  • Combine results from multiple vector fields
  • Apply semantic understanding using cross-encoder models
  • Merge rankings using fusion algorithms
Rerankers are used in the query() method of Collection via the reranker parameter.

When to Use Reranking

When querying multiple vector fields (e.g., title embeddings and content embeddings), reranking helps combine the results into a unified ranking:
from zvec import Collection
from zvec.extension import RrfReRanker

collection = Collection("products")
reranker = RrfReRanker(topn=10)

results = collection.query(
    vectors={"title_vec": query_title_emb, "desc_vec": query_desc_emb},
    reranker=reranker
)

Semantic Relevance

For search scenarios requiring deep semantic understanding, model-based rerankers can provide more accurate relevance scores:
from zvec.extension import QwenReRanker

reranker = QwenReRanker(
    query="machine learning algorithms",
    topn=5,
    rerank_field="content"
)

results = collection.query(
    vectors={"content_vec": query_embedding},
    reranker=reranker
)

Available Rerankers

Zvec provides several reranking strategies:

RrfReRanker

Reciprocal Rank Fusion for combining multi-vector results

WeightedReRanker

Weighted score combination with configurable field weights

QwenReRanker

Model-based semantic reranking using Qwen/DashScope API

ReRanker Base Class

RerankFunction
class
Abstract base class for all rerankers.

Constructor

RerankFunction(topn=10, rerank_field=None)
topn
int
default:"10"
Number of top documents to return after reranking.
rerank_field
str | None
default:"None"
Field name used as input for reranking (e.g., document title or body). Required for some rerankers like QwenReRanker.

Properties

topn
int
Number of top documents to return after reranking.
rerank_field
str | None
Field name used as reranking input.

Methods

rerank()

def rerank(self, query_results: dict[str, list[Doc]]) -> list[Doc]
Re-rank documents from one or more vector queries.
query_results
dict[str, list[Doc]]
Mapping from vector field name to list of retrieved documents (sorted by relevance).
returns
list[Doc]
Re-ranked list of documents (length ≤ topn), with updated score fields.
Subclasses must implement the rerank() method.

Build docs developers (and LLMs) love