Skip to main content
For the complete documentation index for agents and LLMs, see llms.txt.

TransformersSimilarityRanker

Rank documents based on their semantic similarity to the query.

Legacy Component

This component is considered legacy and will no longer receive updates. It may be deprecated in a future release, with removal following after a deprecation period. Consider using SentenceTransformersSimilarityRanker instead, which provides the same functionality along with additional features.

Key Features

  • Uses a pre-trained cross-encoder model from Hugging Face to rank documents by semantic similarity to the query.
  • Configurable number of results returned via top_k.
  • Supports score scaling via Sigmoid activation for normalized similarity scores.
  • Supports calibration of probabilities via calibration_factor.
  • Supports filtering by score threshold.

Configuration

  1. Drag the TransformersSimilarityRanker component onto the canvas from the Component Library.
  2. Click on the component to open the configuration panel.
  3. On the General tab:
    • Set the ranking model. Pass a local path or the Hugging Face model name of a cross-encoder model.
    • Set top_k to control how many documents to return.
  4. Go to the Advanced tab to configure scale_score, calibration_factor, score_threshold, and batch_size.

Connections

TransformersSimilarityRanker accepts a query string and a list of documents as inputs. Connect it after a retriever or DocumentJoiner in a query pipeline.

It outputs a ranked list of documents sorted from most to least relevant to the query. Connect its documents output to ChatPromptBuilder, AnswerBuilder, or another downstream component.

Source Code

To check this component's source code, open transformers_similarity.py in the Haystack repository.

Usage Examples

Basic Configuration

  TransformersSimilarityRanker:
type: components.rankers.transformers_similarity.TransformersSimilarityRanker
init_parameters: {}
components:
TransformersSimilarityRanker:
type: components.rankers.transformers_similarity.TransformersSimilarityRanker
init_parameters:

Parameters

Inputs

ParameterTypeDefaultDescription
querystrThe input query to compare the documents to.
documentsList[Document]A list of documents to be ranked.
top_kOptional[int]NoneThe maximum number of documents to return.
scale_scoreOptional[bool]NoneIf True, scales the raw logit predictions using a Sigmoid activation function. If False, disables scaling.
calibration_factorOptional[float]NoneUse this factor to calibrate probabilities with sigmoid(logits * calibration_factor). Used only if scale_score is True.
score_thresholdOptional[float]NoneReturn documents only with a score above this threshold.

Outputs

ParameterTypeDefaultDescription
documentsList[Document]A list of documents closest to the query, sorted from most similar to least similar.

Init Parameters

These are the parameters you can configure in Pipeline Builder:

ParameterTypeDefaultDescription
modelUnion[str, Path]cross-encoder/ms-marco-MiniLM-L-6-v2The ranking model. Pass a local path or the Hugging Face model name of a cross-encoder model.
deviceOptional[ComponentDevice]NoneThe device on which the model is loaded. If None, overrides the default device.
tokenOptional[Secret]Secret.from_env_var(['HF_API_TOKEN', 'HF_TOKEN'], strict=False)The API token to download private models from Hugging Face.
top_kint10The maximum number of documents to return per query.
query_prefixstrA string to add at the beginning of the query text before ranking. Use it to prepend the text with an instruction, as required by reranking models like bge.
document_prefixstrA string to add at the beginning of each document before ranking.
meta_fields_to_embedOptional[List[str]]NoneList of metadata fields to embed with the document.
embedding_separatorstr\nSeparator to concatenate metadata fields to the document.
scale_scoreboolTrueIf True, scales the raw logit predictions using a Sigmoid activation function.
calibration_factorOptional[float]1.0Use this factor to calibrate probabilities with sigmoid(logits * calibration_factor). Used only if scale_score is True.
score_thresholdOptional[float]NoneReturn documents with a score above this threshold only.
model_kwargsOptional[Dict[str, Any]]NoneAdditional keyword arguments for AutoModelForSequenceClassification.from_pretrained when loading the model.
tokenizer_kwargsOptional[Dict[str, Any]]NoneAdditional keyword arguments for AutoTokenizer.from_pretrained when loading the tokenizer.
batch_sizeint16The batch size to use for inference. The higher the batch size, the more memory is required.

Run Method Parameters

These are the parameters you can configure for the component's run() method. This means you can pass these parameters at query time through the API, in Playground, or when running a job. For details, see Modify Pipeline Parameters at Query Time.

ParameterTypeDefaultDescription
querystrThe input query to compare the documents to.
documentsList[Document]A list of documents to be ranked.
top_kOptional[int]NoneThe maximum number of documents to return.
scale_scoreOptional[bool]NoneIf True, scales the raw logit predictions using a Sigmoid activation function. If False, disables scaling.
calibration_factorOptional[float]NoneUse this factor to calibrate probabilities with sigmoid(logits * calibration_factor). Used only if scale_score is True.
score_thresholdOptional[float]NoneReturn documents only with a score above this threshold.