zvec_db.rerankers.utils.pipeline
PipelineReranker for zvec-db.
This module contains the PipelineReranker class that allows chaining multiple rerankers sequentially.
Example Usage
from zvec import create_and_open, VectorQuery
from zvec_db.rerankers import (
RrfReranker,
OpenAICrossEncoderReranker,
PipelineReranker,
)
collection = create_and_open(...)
# Pipeline: RRF then Cross-Encoder
pipeline = PipelineReranker(
rerankers=[
RrfReranker(topn=50, rank_constant=60),
OpenAICrossEncoderReranker(
topn=10,
model="gpt-4o-mini",
query="machine learning"
)
]
)
results = collection.query(
vectors=[
VectorQuery(field_name="bm25", vector=bm25_vec),
VectorQuery(field_name="dense", vector=dense_vec),
],
topk=10,
reranker=pipeline
)
Classes
|
Chain multiple rerankers sequentially. |
- class zvec_db.rerankers.utils.pipeline.PipelineReranker(rerankers, topn=10, rerank_field=None)[source]
Chain multiple rerankers sequentially.
This reranker applies a list of rerankers in sequence, passing the output of one as the input to the next. This is useful for combining different reranking strategies (e.g., RRF followed by cross-encoder).
- Parameters:
Example
>>> pipeline = PipelineReranker([ ... RrfReranker(topn=50, rank_constant=60), ... SentenceTransformerReranker(model_name="ms-marco-MiniLM-L-6-v2", topn=10) ... ]) >>> results = collection.query(..., reranker=pipeline)
- __init__(rerankers, topn=10, rerank_field=None)[source]
Initialize PipelineReranker with a list of rerankers.
- Parameters:
Example
>>> pipeline = PipelineReranker([ ... RrfReranker(topn=50, rank_constant=60), ... SentenceTransformerReranker(model_name="ms-marco-MiniLM-L-6-v2", topn=10) ... ]) >>> results = collection.query(..., reranker=pipeline)