外观
本页尚未翻译
本页内容仍为英文原文,源自官方文档 integrations/reranking/watsonx。中文翻译正在分批进行中。
Watsonx Reranker
Rerank LanceDB search results with the IBM watsonx.ai text rerank API. Supports vector, FTS, and hybrid search with configurable models, projects, and spaces.
Watsonx Reranker
This reranker uses the IBM watsonx.ai text rerank API to reorder search results. Pass WatsonxReranker() to the rerank() method on a query. Credentials come from the WATSONX_API_KEY and WATSONX_PROJECT_ID (or WATSONX_SPACE_ID) environment variables, or can be passed explicitly as arguments.
Note: Supported query types: Hybrid, Vector, and FTS.
bash
pip install ibm-watsonx-aiReplace the credential placeholders with your provider credentials. In application code, load credentials from environment variables or a secrets manager.
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 WatsonxReranker
embedder = get_registry().get("sentence-transformers").create()
db = lancedb.connect(str(Path(tempfile.mkdtemp()) / "watsonx-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)
# Supply your API key and project ID (or use space_id instead of project_id).
reranker = WatsonxReranker(
api_key="your-api-key",
project_id="your-project-id",
)
# Run vector search with a reranker
vector_results = tbl.search("hello").rerank(reranker=reranker).to_list()
print(vector_results)
# Build the full-text index before either FTS or hybrid search.
tbl.create_fts_index("text", replace=True)
# Run FTS search with a reranker
fts_results = (
tbl.search("hello", query_type="fts").rerank(reranker=reranker).to_list()
)
print(fts_results)
# Run hybrid search with a reranker
hybrid_results = (
tbl.search("hello", query_type="hybrid").rerank(reranker=reranker).to_list()
)
print(hybrid_results)Accepted Arguments
| Argument | Type | Default | Description |
|---|---|---|---|
model_name | str | "cross-encoder/ms-marco-minilm-l-12-v2" | The rerank model ID. See supported rerank models. |
column | str | "text" | The name of the table column to use as document input. |
top_n | int | None | The number of results to return. If None, all results are returned. |
return_score | str | "relevance" | Options are "relevance" or "all". Controls which score columns are kept on the result. |
api_key | str | None | IBM Cloud API key. Falls back to the WATSONX_API_KEY environment variable. |
project_id | str | None | watsonx.ai project ID. Falls back to WATSONX_PROJECT_ID. Mutually exclusive with space_id. |
space_id | str | None | watsonx.ai deployment space ID. Falls back to WATSONX_SPACE_ID. Mutually exclusive with project_id. |
url | str | "https://us-south.ml.cloud.ibm.com" | watsonx.ai service URL. |
truncate_input_tokens | int | None | Truncate each document to this many tokens before scoring. |
说明
You must supply exactly one of project_id or space_id (either as an argument or via its environment variable). Setting both, or neither, raises a ValueError.
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). |