Skip to content

本页尚未翻译

本页内容仍为英文原文,源自官方文档 integrations/reranking/colbert。中文翻译正在分批进行中。

ColBERT Reranker ​

Enhance search results with ColBERT's contextual reranking in LanceDB. Features efficient model deployment, device optimization, and flexible scoring options for vector, FTS, and hybrid search.

ColBERT Reranker ​

This reranker uses ColBERT model to rerank the search results. You can use this reranker by passing ColbertReranker() to the rerank() method.

Note: Supported query types: Hybrid, Vector, and FTS.

python
import tempfile
from pathlib import Path

import lancedb
from lancedb.embeddings import get_registry
from lancedb.pydantic import LanceModel, Vector
from lancedb.rerankers import ColbertReranker

embedder = get_registry().get("sentence-transformers").create()
db = lancedb.connect(str(Path(tempfile.mkdtemp()) / "colbert-rerank"))

class Schema(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)
tbl.add(data)
reranker = ColbertReranker()

# Run vector search with a reranker
result = tbl.search("hello").rerank(reranker=reranker).to_list()

# Build the full-text index before either FTS or hybrid search.
tbl.create_fts_index("text", replace=True)

# Run FTS search with a reranker
result = tbl.search("hello", query_type="fts").rerank(reranker=reranker).to_list()

# Run hybrid search with a reranker
result = (
    tbl.search("hello", query_type="hybrid").rerank(reranker=reranker).to_list()
)

Accepted Arguments ​

ArgumentTypeDefaultDescription
model_namestr"colbert-ir/colbertv2.0"The name of the reranker model to use.
columnstr"text"The name of the column to use as input to the cross encoder model.
devicestrNoneThe device to use for the cross encoder model. If None, will use "cuda" if available, otherwise "cpu".
return_scorestr"relevance"Options are "relevance" or "all". The type of score to return. If "relevance", will return only the _relevance_score column. 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:

return_scoreStatusDescription
relevance✅ SupportedResults only have the _relevance_score column.
all❌ Not SupportedResults have vector(_distance) and FTS(score) along with Hybrid Search score(_relevance_score).
return_scoreStatusDescription
relevance✅ SupportedResults only have the _relevance_score column.
all✅ SupportedResults have vector(_distance) along with Hybrid Search score(_relevance_score).
return_scoreStatusDescription
relevance✅ SupportedResults only have the _relevance_score column.
all✅ SupportedResults have FTS(score) along with Hybrid Search score(_relevance_score).