Linear Combination Reranker
Note
This is deprecated. It is recommended to use theRRFReranker
instead, if you want to use a score-based reranker.
The Linear Combination Reranker combines the results of semantic and full-text search using a linear combination of the scores. The weights for the linear combination can be specified, and defaults to 0.7, i.e, 70% weight for semantic search and 30% weight for full-text search.
Note
Supported Query Types: Hybrid
importnumpyimportlancedbfromlancedb.embeddingsimportget_registryfromlancedb.pydanticimportLanceModel,Vectorfromlancedb.rerankersimportLinearCombinationRerankerembedder=get_registry().get("sentence-transformers").create()db=lancedb.connect("~/.lancedb")classSchema(LanceModel):text:str=embedder.SourceField()vector:Vector(embedder.ndims())=embedder.VectorField()data=[{"text":"hello world"},{"text":"goodbye world"}]tbl=db.create_table("test",schema=Schema,mode="overwrite")tbl.add(data)reranker=LinearCombinationReranker()# Run hybrid search with a rerankertbl.create_fts_index("text",replace=True)result=tbl.search("hello",query_type="hybrid").rerank(reranker=reranker).to_list()
Accepted Arguments
Argument | Type | Default | Description |
---|---|---|---|
weight | float | 0.7 | The weight to use for the semantic search score. The weight for the full-text search score is1 - weights . |
return_score | str | "relevance" | Options are "relevance" or "all". The type of score to return. If "relevance", will return only the `_relevance_score. If "all", will return all scores from the vector and FTS search along with the relevance score. |
Supported Scores for each query type
You can specify the type of scores you want the reranker to return. The following are the supported scores for each query type:
Hybrid Search
return_score | Status | Description |
---|---|---|
relevance | ✅ Supported | Results only have the_relevance_score column |
all | ✅ Supported | Results have vector(_distance ) and FTS(score ) along with Hybrid Search score(_distance ) |