ColBERT Reranker
This reranker uses ColBERT model to rerank the search results. You can use this reranker by passingColbertReranker()
to thererank()
method.
Note
Supported Query Types: Hybrid, Vector, FTS
importnumpyimportlancedbfromlancedb.embeddingsimportget_registryfromlancedb.pydanticimportLanceModel,Vectorfromlancedb.rerankersimportColbertRerankerembedder=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=ColbertReranker()# Run vector search with a rerankerresult=tbl.search("hello").rerank(reranker=reranker).to_list()# Run FTS search with a rerankerresult=tbl.search("hello",query_type="fts").rerank(reranker=reranker).to_list()# 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 |
---|---|---|---|
model_name | str | "colbert-ir/colbertv2.0" | The name of the reranker model to use. |
column | str | "text" | The name of the column to use as input to the cross encoder model. |
device | str | None | The device to use for the cross encoder model. If None, will use "cuda" if available, otherwise "cpu". |
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" is supported, will return relevance score along with the vector and/or fts scores depending on query type. |
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 | ❌ Not Supported | Results have vector(_distance ) and FTS(score ) along with Hybrid Search score(_relevance_score ). |
Vector Search
return_score | Status | Description |
---|---|---|
relevance | ✅ Supported | Results only have the_relevance_score column. |
all | ✅ Supported | Results have vector(_distance ) along with Hybrid Search score(_relevance_score ). |
FTS Search
return_score | Status | Description |
---|---|---|
relevance | ✅ Supported | Results only have the_relevance_score column. |
all | ✅ Supported | Results have FTS(score ) along with Hybrid Search score(_relevance_score ). |