Model reference · open weights

PolDense

Embeddings OPI-PIB Embeddings 6 builds Open, with conditions 4k dl/mo

PolDense is an open-weight embedding model from OPI-PIB. PolDense-1B (FP32) weighs 2.1 GB; 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.

  • PolDense is a family of Polish embedding models developed by OPI-PIB for dense retrieval and RAG applications.
  • The specific PolDense-400M variant contains 395M parameters, supports a context length of 7999 tokens, and is released under the gemma licence.

Summary of the OPI-PIB/PolDense-400M model card, 2026-10-01. The estimate below is for another build of the family.

What it is

Released byOPI-PIB
Released2026-07-02
Parameters395M
VRAM2.1 GB for the weights

What it runs on

Memory and cards for PolDense-1B (FP32)

2.1 GBweights, 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

Builds

Sizes, precisions & builds

BuildParamsPrecisionWeightsSmallest setup
PolDense-400M ↗ 395MFP32 790 MBRTX 3060 12 GB
PolDense-150M ↗ 149MFP32 298 MBRTX 3060 12 GB
PolDense-1B (above) ↗ 1.0BFP32 2.1 GBRTX 3060 12 GB
PolDense-17M ↗ 17MFP32 34 MBRTX 3060 12 GB
PolDense-68M ↗ 68MFP32 136 MBRTX 3060 12 GB
PolDense-32M ↗ 32MFP32 64 MBRTX 3060 12 GB

From the model card

What OPI-PIB says about PolDense

Read the model card

PolDense is a family of Polish embedding models optimized for dense retrieval. The models are built on top of the ettin-encoders, which use the ModernBERT architecture, and are designed to provide high-quality text representations for Polish search, retrieval, and RAG applications. The family consists of six models, ranging from 17M to 1B parameters. This makes it possible to choose between lightweight, low-latency deployments and larger models aimed at maximum retrieval quality.

Training

PolDense models were trained in a three-stage pipeline with two knowledge distillation stages and one fine-tuning stage. The main teacher embedding model was BGE-Multilingual-Gemma2, while the final retrieval fine-tuning stage used relevance scores produced by BGE-Reranker-v2.5-Gemma2-Lightweight.

  1. The first stage adapted the original English ettin-encoder models to Polish using multilingual knowledge distillation. This stage follows the approach introduced in Making Monolingual Sentence Embeddings Multilingual using Knowledge Distillation. The core idea is to use a strong teacher model to define a shared semantic embedding space. For each parallel sentence pair, the teacher encodes the source-language sentence, and the student is trained to produce a similar embedding for the translated sentence. In practice, this teaches the student to map Polish and English texts with the same meaning to nearby locations in the vector space, while preserving the retrieval-oriented structure learned by the teacher. In this stage, BGE-Multilingual-Gemma2 was used as the teacher model. Training was performed on a Polish-English parallel corpus containing approximately 20 million text pairs. Each model was trained for 5 epochs with a batch size of 64.

  2. The second stage used a more advanced distillation objective inspired by Jasper and Stella: distillation of SOTA embedding models. The goal of this stage was to align the student models more closely with the teacher and extract as much retrieval quality as possible from the distillation process. Unlike the first stage, this stage was performed only on Polish texts. The training objective combined three complementary losses: a) a cosine alignment loss; b) a pairwise similarity loss; c) a triplet-style ranking loss. Together, these losses train the student not only to imitate individual teacher vectors, but also to reproduce the teacher's local geometry and ranking behavior. This is particularly important for retrieval, where relative similarity between queries and passages matters more than isolated embedding values. The teacher model in this stage was again BGE-Multilingual-Gemma2. Models from 17M to 150M parameters were trained on approximately 70 million Polish texts, while the 400M and 1B models were trained on approximately 33 million Polish texts. The corpus included the 20 million Polish texts used in first stage, with additional texts taken from the Polish portion of the FineTranslations collection. Each model was trained for 5 epochs with a batch size of 128.

  3. The final stage fine-tuned the models directly for retrieval using contrastive learning. This stage used 13 retrieval training datasets containing over 4.5 million queries and more than 15 million passages. No ground-truth labels were used during this stage. Instead, the training data was constructed entirely from positive and negative examples selected with the BGE-Reranker-v2.5-Gemma2-Lightweight reranker. The models were trained for 10 epochs with a batch size of 1024.

The figure below presents an evaluation of PolDense models on the PIRB benchmark, which consists of 41 Polish retrieval tasks. As shown, each training stage contributed to the model’s final performance:

Evaluation

The PolDense models were evaluated on the PIRB benchmark. The results show that they outperform previously available retrievers for Polish, with each model achieving the best performance in its size class. The smaller 32M and 68M variants reach results comparable to much larger multilingual models with several hundred million parameters, such as Jina-Embeddings-V5, BGE-M3, and Snowflake-Arctic-Embed-2.0. The 150M model performs close to Qwen3-Embedding-8B, while the 400M model reaches a level similar to BGE-Multilingual-Gemma2 and Llama-Embed-Nemotron-8b. The largest 1B variant surpasses both of these models. The results are shown in the figure below.

Usage

The model utilizes prefixes for retrieval and semantic similarity tasks. For retrieval, queries should be prefixed with "[query]: ". For symmetric tasks such as semantic similarity, both texts should be prefixed with "[sts]: ".

We recommend using the model with sentence-transformers version 5.4.0 or newer and initializing it with the arguments dtype="float16" or "bfloat16", and attn_implementation="flash_attention_2", which enables optimal performance. You can use the model with sentence-transformers:

from sentence_transformers import SentenceTransformer
from sentence_transformers.util imp

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