michael-guenther's picture
Update README.md
e380cd2 verified
|
Raw
History Blame
4.27 kB
metadata
license: cc-by-nc-4.0
language:
  - multilingual
base_model:
  - Qwen/Qwen3-0.6B-Base
tags:
  - feature-extraction
  - mteb
  - sentence-transformers
library_name: transformers



Jina AI: Your Search Foundation, Supercharged!

jina-embeddings-v5-text-small-clustering: Clustering-Targeted Embedding Distillation

Blog | Technical Report | Jina API | EIS

Model Overview

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, 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 Qwen/Qwen3-0.6B-Base

Training and Evaluation

For training details and evaluation results, see our technical report.

Usage

Requirements

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 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.
via vLLM
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
via llama.cpp (GGUF) After installing llama.cpp one can run llama-server to host the embedding model as OpenAI API compatible HTTP server with the respective model version:
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."
    ]
  }'

License

The model is licensed under CC BY-NC 4.0. For commercial use, please contact us.

Citation

If you find jina-embeddings-v5-text-small-clustering useful in your research, please cite the following paper:

[will be published soon]