Model reference · open weights

silver-retriever

Embeddings ipipan Embeddings 1 build Open weights 3k dl/mo

silver-retriever is an open-weight embedding model from ipipan. silver-retriever-base-v1.1 (FP32) weighs 249 MB; the smallest configuration that runs it is RTX 3060 12 GB.

For self-hosting, compare this build's requirements below with the GPU you plan to rent.

  • Silver Retriever is a 124M parameter sentence-similarity model developed by ipipan for Polish document retrieval and semantic search.
  • It encodes text into 768-dimensional vectors with a maximum context length of 514 tokens.
  • The model is released under the cc-by-sa-4.0 license.

Summary of the ipipan/silver-retriever-base-v1.1 model card, 2026-10-01

What it is

Released byipipan
Released2023-11-27
Parameters124M
VRAM249 MB for the weights

What it runs on

Memory and cards for silver-retriever-base-v1.1 (FP32)

249 MBweights, file size
1.1 GBruntime overhead
CardRunsMemory
RTX 3060 12 GBfits11.6 GB
RTX 4060 Ti 16 GBfits15.4 GB
RTX 3090 24 GBfits23.4 GB
RTX 4090 24 GBfits23.4 GB
RTX 5090 32 GBfits31.0 GB
L40S 48 GBfits44.0 GB
A100 80 GBfits78.2 GB
H100 80 GBfits78.1 GB
RTX PRO 6000 Blackwell 96 GBfits93.8 GB
DGX Spark (GB10) 128 GB unifiedfits107 GB
H200 141 GBfits138 GB
B200 180 GBfits176 GB

From the model card

What ipipan says about silver-retriever

Read the model card

Silver Retriever model encodes the Polish sentences or paragraphs into a 768-dimensional dense vector space and can be used for tasks like document retrieval or semantic search.

It was initialized from the HerBERT-base model and fine-tuned on the PolQA and MAUPQA datasets for 8,000 steps with a batch size of 8,192. Please refer to the SilverRetriever: Advancing Neural Passage Retrieval for Polish Question Answering for more details.

Evaluation

ModelAverage [Acc]Average [NDCG]PolQA [Acc]PolQA [NDCG]Allegro FAQ [Acc]Allegro FAQ [NDCG]Legal Questions [Acc]Legal Questions [NDCG]
BM2574.8751.8161.3524.5166.8948.7196.3882.21
BM25 (lemma)80.4655.4471.4931.9775.3355.7094.5778.65
MiniLM-L12-v262.6239.2137.2411.9371.6751.2578.9754.44
LaBSE64.8939.4746.2315.5367.1146.7181.3456.16
mContriever-Base86.3160.3778.6636.3084.4467.3895.8277.42
E5-Base91.5866.5686.6146.0891.8975.9096.2477.69
ST-DistilRoBERTa73.7848.2948.4316.7384.8964.3988.0263.76
ST-MPNet76.6649.9956.8021.5586.0065.4487.1962.99
HerBERT-QA84.2354.3675.8432.5285.7863.5891.0966.99
Silver Retriever v192.4566.7287.2443.4094.5679.6695.5477.10
Silver Retriever v1.193.1867.5588.6044.8894.0079.8396.9477.95

Legend:

  • Acc is the Accuracy at 10
  • NDCG is the Normalized Discounted Cumulative Gain at 10

Usage

Preparing inputs

The model was trained on question-passage pairs and works best when the input is the same format as that used during training:

  • We added the phrase Pytanie: to the beginning of the question.
  • The training passages consisted of title and text concatenated with the special token . Even if your passages don't have a `title`, it is still beneficial to prefix a passage with the token.
  • Although we used the dot product during training, the model usually works better with the cosine distance.

Inference with Sentence-Transformers

Using this model becomes easy when you have sentence-transformers installed:

pip install -U sentence-transformers

Then you can use the model like this:

from sentence_transformers import SentenceTransformer
sentences = [
    "Pytanie: W jakim mieście urodził się Zbigniew Herbert?",
    "Zbigniew HerbertZbigniew Bolesław Ryszard Herbert (ur. 29 października 1924 we Lwowie, zm. 28 lipca 1998 w Warszawie) – polski poeta, eseista i dramaturg.",
]

model = SentenceTransformer('ipipan/silver-retriever-base-v1.1')
embeddings = model.encode(sentences)
print(embeddings)

Inference with HuggingFace Transformers

Without sentence-transformers, you can use the model like this: First, you pass your input through the transformer model, then you have to apply the right pooling-operation on-top of the contextualized word embeddings.

from transformers import AutoTokenizer, AutoModel
import torch

def cls_pooling(model_output, attention_mask):
    return model_output[0][:,0]

# Sentences we want sentence embeddings for
sentences = [
    "Pytanie: W jakim mieście urodził się Zbigniew Herbert?",
    "Zbigniew HerbertZbigniew Bolesław Ryszard Herbert (ur. 29 października 1924 we Lwowie, zm. 28 lipca 1998 w Warszawie) – polski poeta, eseista i dramaturg.",
]
# Load model from HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('ipipan/silver-retriever-base-v1.1')
model = AutoModel.from_pretrained('ipipan/silver-retriever-base-v1.1')

# Tokenize sentences
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

# Compute token embeddings
with torch.no_grad():
    model_output = model(**encoded_input)

# Perform pooling. In this case, cls pooling.
sentence_embeddings = cls_pooling(model_output, encoded_input['attention_mask'])

print("Sentence embe

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms