Skip to content

本页尚未翻译

本页内容仍为英文原文,源自官方文档 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-ai

Replace 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 ​

ArgumentTypeDefaultDescription
model_namestr"cross-encoder/ms-marco-minilm-l-12-v2"The rerank model ID. See supported rerank models.
columnstr"text"The name of the table column to use as document input.
top_nintNoneThe number of results to return. If None, all results are returned.
return_scorestr"relevance"Options are "relevance" or "all". Controls which score columns are kept on the result.
api_keystrNoneIBM Cloud API key. Falls back to the WATSONX_API_KEY environment variable.
project_idstrNonewatsonx.ai project ID. Falls back to WATSONX_PROJECT_ID. Mutually exclusive with space_id.
space_idstrNonewatsonx.ai deployment space ID. Falls back to WATSONX_SPACE_ID. Mutually exclusive with project_id.
urlstr"https://us-south.ml.cloud.ibm.com"watsonx.ai service URL.
truncate_input_tokensintNoneTruncate 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:

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).