mirror of
https://github.com/lancedb/lancedb.git
synced 2026-01-16 00:33:01 +00:00
52 lines
2.1 KiB
Markdown
52 lines
2.1 KiB
Markdown
# Linear Combination Reranker
|
|
|
|
This is the default re-ranker used by LanceDB hybrid search. It 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. It defaults to 0.7, i.e, 70% weight for semantic search and 30% weight for full-text search.
|
|
|
|
!!! note
|
|
Supported Query Types: Hybrid
|
|
|
|
|
|
```python
|
|
import numpy
|
|
import lancedb
|
|
from lancedb.embeddings import get_registry
|
|
from lancedb.pydantic import LanceModel, Vector
|
|
from lancedb.rerankers import LinearCombinationReranker
|
|
|
|
embedder = get_registry().get("sentence-transformers").create()
|
|
db = lancedb.connect("~/.lancedb")
|
|
|
|
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, mode="overwrite")
|
|
tbl.add(data)
|
|
reranker = LinearCombinationReranker()
|
|
|
|
# Run hybrid search with a reranker
|
|
tbl.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 is `1 - 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 | Returns only have the `_relevance_score` column |
|
|
| `all` | ✅ Supported | Returns have vector(`_distance`) and FTS(`score`) along with Hybrid Search score(`_distance`) | |