hanxiao's picture
update top links: EIS first, ArXiv, Blog
7d84143 verified
|
Raw
History Blame
9.36 kB
---
pipeline_tag: feature-extraction
tags:
- gguf
- embedding
- qwen3
- llama-cpp
- jina-embeddings-v5
- feature-extraction
- mteb
- vllm
- sentence-transformers
language:
- multilingual
base_model: jinaai/jina-embeddings-v5-text-small
base_model_relation: quantized
inference: false
license: cc-by-nc-4.0
library_name: llama.cpp
---
<br><br>
<p align="center">
<img src="https://huggingface.co/datasets/jinaai/documentation-images/resolve/main/logo.webp" alt="Jina AI: Your Search Foundation, Supercharged!" width="150px">
</p>
### **jina-embeddings-v5-text-small-clustering**: Clustering-Targeted Embedding Distillation
[Blog](https://jina.ai/news/jina-embeddings-v5-text-distilling-4b-quality-into-sub-1b-multilingual-embeddings) | [Elastic Inference Service](https://www.elastic.co/docs/explore-analyze/elastic-inference/eis) | [ArXiv](https://arxiv.org/abs/2602.15547) | [Blog](https://jina.ai/news/jina-embeddings-v5-text-distilling-4b-quality-into-sub-1b-multilingual-embeddings)
### Model Overview
<p align="center">
<img src="https://jina-ai-gmbh.ghost.io/content/images/2026/02/v5_architecture_1771470917.png" alt="jina-embeddings-v5-text Architecture" width="600px">
</p>
`jina-embeddings-v5-text-small-clustering` is a compact, high-performance text embedding model designed for clustering.
It is part of the **jina-embeddings-v5-text** model family, which also includes [jina-embeddings-v5-text-nano](https://huggingface.co/jinaai/jina-embeddings-v5-text-nano), a smaller model for more resource-constrained use cases.
Trained using a novel approach that combines distillation with task-specific contrastive losses, `jina-embeddings-v5-text-small-clustering` outperforms existing state-of-the-art models of similar size across diverse embedding benchmarks.
| Feature | Value |
| --- | --- |
| Parameters | 677M |
| Supported Tasks | `clustering`|
| Max Sequence Length | 32768 |
| Embedding Dimension | 1024 |
| Matryoshka Dimensions | 32, 64, 128, 256, 512, 768, 1024 |
| Pooling Strategy | Last-token pooling |
| Base Model | jinaai/jina-embeddings-v5-text-small |
<p align="center">
<img src="https://jina-ai-gmbh.ghost.io/content/images/2026/02/v5_mmteb-4.png" alt="MMTEB Multilingual Benchmark" width="500px">
</p>
<p align="center">
<img src="https://jina-ai-gmbh.ghost.io/content/images/2026/02/v5_mteb_en-4.png" alt="MTEB English Benchmark" width="500px">
</p>
<p align="center">
<img src="https://jina-ai-gmbh.ghost.io/content/images/2026/02/v5_retrieval-4.png" alt="Retrieval Benchmark Results" width="500px">
</p>
### Training and Evaluation
For training details and evaluation results, see our [technical report](https://arxiv.org/abs/2602.15547).
### Usage
<details>
<summary>Requirements</a></summary>
The following Python packages are required:
- `transformers>=5.1.0`
- `torch>=2.8.0`
- `peft>=0.15.2`
- `vllm>=0.15.1`
### Optional / Recommended
- **flash-attention**: Installing [flash-attention](https://github.com/Dao-AILab/flash-attention) is recommended for improved inference speed and efficiency, but not mandatory.
- **sentence-transformers**: If you want to use the model via the `sentence-transformers` interface, install this package as well.
</details>
<details open>
<summary>via <a href="https://www.elastic.co/docs/explore-analyze/elastic-inference/eis">Elastic Inference Service</a></summary>
The fastest way to use v5-text in production. Elastic Inference Service (EIS) provides managed embedding inference with built-in scaling, so you can generate embeddings directly within your Elastic deployment.
```bash
PUT _inference/text_embedding/jina-v5
{
"service": "elastic",
"service_settings": {
"model_id": "jina-embeddings-v5-text-small"
}
}
```
See the [Elastic Inference Service documentation](https://www.elastic.co/docs/explore-analyze/elastic-inference/eis) for setup details.
</details>
<details>
<summary>via <a href="https://sbert.net/">sentence-transformers</a></summary>
```python
from sentence_transformers import SentenceTransformer
import torch
model = SentenceTransformer(
"jinaai/jina-embeddings-v5-text-small-clustering",
model_kwargs={"dtype": torch.bfloat16}, # Recommended for GPUs
config_kwargs={"_attn_implementation": "flash_attention_2"}, # Recommended but optional
)
# Optional: set truncate_dim in encode() to control embedding size
texts = [
"We propose a novel neural network architecture for image segmentation.",
"This paper analyzes the effects of monetary policy on inflation.",
"Our method achieves state-of-the-art results on object detection benchmarks.",
"We study the relationship between interest rates and housing prices.",
"A new attention mechanism is introduced for visual recognition tasks.",
]
# Encode texts
embeddings = model.encode(texts)
print(embeddings.shape)
# (5, 1024)
similarity = model.similarity(embeddings, embeddings)
print(similarity)
# tensor([[1.0000, 0.2983, 0.8631, 0.3098, 0.9106],
# [0.2983, 1.0000, 0.3257, 0.8041, 0.3201],
# [0.8631, 0.3257, 1.0000, 0.3263, 0.9007],
# [0.3098, 0.8041, 0.3263, 1.0000, 0.3122],
# [0.9106, 0.3201, 0.9007, 0.3122, 1.0000]])
```
</details>
<details>
<summary>via <a href="https://github.com/vllm-project/vllm">vLLM</a></summary>
```python
from vllm import LLM
# Initialize model
name = "jinaai/jina-embeddings-v5-text-small-clustering"
model = LLM(
model=name,
dtype="float16",
runner="pooling",
pooler_config=PoolerConfig(seq_pooling_type="LAST", normalize=True)
)
# Create text prompts
document1 = "Overview of climate change impacts on coastal cities"
document1_prompt = f"Document: {document1}"
document2 = "The impacts of climate change on large cities"
document2_prompt = f"Document: {document2}"
# Encode all prompts
prompts = [document1_prompt, document2_prompt]
outputs = model.encode(prompts, pooling_task="embed")
embed_document1 = outputs[0].outputs.data
embed_document2 = outputs[1].outputs.data
```
</details>
<details>
<summary>via <a href="https://github.com/huggingface/text-embeddings-inference">Text Embeddings Inference</a></summary>
- Via Docker on CPU:
```bash
docker run -p 8080:80 \
ghcr.io/huggingface/text-embeddings-inference:cpu-1.9 \
--model-id jinaai/jina-embeddings-v5-text-small-clustering \
--dtype float32 --pooling last-token
```
- Via Docker on NVIDIA GPU (Turing, Ampere, Ada Lovelace, Hopper or Blackwell):
```bash
docker run --gpus all --shm-size 1g -p 8080:80 \
ghcr.io/huggingface/text-embeddings-inference:cuda-1.9 \
--model-id jinaai/jina-embeddings-v5-text-small-clustering \
--dtype float16 --pooling last-token
```
> Alternatively, you can also run with `cargo`, more information can be found in the [Text Embeddings Inference documentation](https://hf.co/docs/text-embeddings-inference).
Send a request to `/v1/embeddings` to generate embeddings via the [OpenAI Embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create):
```bash
curl -X POST http://127.0.0.1:8080/v1/embeddings \
-H "Content-Type: application/json" \
-d '{
"model": "jinaai/jina-embeddings-v5-text-small-clustering",
"input": [
"Document: The impacts of climate change on coastal cities are significant...",
]
}'
```
Or rather via the [Text Embeddings Inference API specification](https://huggingface.github.io/text-embeddings-inference/) instead, to prevent from manually formatting the inputs:
```bash
curl -X POST http://127.0.0.1:8080/embed \
-H "Content-Type: application/json" \
-d '{
"inputs": "Overview of climate change impacts on coastal cities",
"prompt_name": "document",
}'
```
</details>
<details>
<summary> via <a href="https://github.com/ggml-org/llama.cpp">llama.cpp (GGUF)</a></summary>
After installing <a href="https://github.com/ggml-org/llama.cpp">llama.cpp</a> one can run llama-server to host the embedding model as OpenAI API compatible HTTP server with the respective model version:
```sh
llama-server -hf jinaai/jina-embeddings-v5-text-small-clustering:F16 --embedding --pooling last -ub 32768
```
Client:
```
curl -X POST "http://127.0.0.1:8080/v1/embeddings" \
-H "Content-Type: application/json" \
-d '{
"input": [
"Document: A beautiful sunset over the beach",
"Document: Un beau coucher de soleil sur la plage",
"Document: 海滩上美丽的日落",
"Document: 浜辺に沈む美しい夕日",
"Document: Golden sunlight melts into the horizon, painting waves in warm amber and rose, while the sky whispers goodnight to the quiet, endless sea."
]
}'
```
</details>
### License
The model is licensed under CC BY-NC 4.0. For commercial use, please [contact us](sales@jina.ai).
### Citation
If you find `jina-embeddings-v5-text-small-clustering` useful in your research, please cite the following paper:
```
@misc{akram2026jinaembeddingsv5texttasktargetedembeddingdistillation,
title={jina-embeddings-v5-text: Task-Targeted Embedding Distillation},
author={Mohammad Kalim Akram and Saba Sturua and Nastia Havriushenko and Quentin Herreros and Michael Günther and Maximilian Werk and Han Xiao},
year={2026},
eprint={2602.15547},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2602.15547},
}
```