Instructions to use jinaai/jina-embeddings-v5-text-small-classification with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use jinaai/jina-embeddings-v5-text-small-classification with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("jinaai/jina-embeddings-v5-text-small-classification") sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use jinaai/jina-embeddings-v5-text-small-classification with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M # Run inference directly in the terminal: llama cli -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M # Run inference directly in the terminal: llama cli -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
Use Docker
docker model run hf.co/jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
- LM Studio
- Jan
- Ollama
How to use jinaai/jina-embeddings-v5-text-small-classification with Ollama:
ollama run hf.co/jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
- Unsloth Studio
How to use jinaai/jina-embeddings-v5-text-small-classification with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for jinaai/jina-embeddings-v5-text-small-classification to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for jinaai/jina-embeddings-v5-text-small-classification to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for jinaai/jina-embeddings-v5-text-small-classification to start chatting
- Pi
How to use jinaai/jina-embeddings-v5-text-small-classification with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- OpenClaw new
How to use jinaai/jina-embeddings-v5-text-small-classification with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- Docker Model Runner
How to use jinaai/jina-embeddings-v5-text-small-classification with Docker Model Runner:
docker model run hf.co/jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
- Lemonade
How to use jinaai/jina-embeddings-v5-text-small-classification with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
Run and chat with the model
lemonade run user.jina-embeddings-v5-text-small-classification-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use jinaai/jina-embeddings-v5-text-small-classification with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default jinaai/jina-embeddings-v5-text-small-classification:Q4_K_M
Run Hermes
hermes
- Atomic Chat
Add Sentence Transformers compatibility
Hello!
Pull Request overview
- Add Sentence Transformers compatibility
- Add ST snippet to README
Details
I noticed that because this model doesn't use the adapter work like the main model, this model can actually be implemented without any trust_remote_code in Sentence Transformers. That might be pretty valuable for users. I just loaded the model with SentenceTransformer, saved it with save_pretrained("tmp"), updated the default pooling config with lasttoken pooling instead, and added a Normalize to the modules.json.
Try it out
from sentence_transformers import SentenceTransformer
import torch
model = SentenceTransformer(
"jinaai/jina-embeddings-v5-text-small-classification",
model_kwargs={"dtype": torch.bfloat16}, # Recommended for GPUs
config_kwargs={"_attn_implementation": "flash_attention_2"}, # Recommended but optional
revision="refs/pr/1",
)
# Optional: set truncate_dim in encode() to control embedding size
texts = [
"My order hasn't arrived yet and it's been two weeks.",
"How do I reset my password?",
"I'd like a refund for my recent purchase.",
"Your product exceeded my expectations. Great job!",
]
# Encode texts
embeddings = model.encode(texts)
print(embeddings.shape)
# (4, 1024)
similarity = model.similarity(embeddings, embeddings)
print(similarity)
# tensor([[1.0000, 0.6262, 0.7605, 0.6213],
# [0.6262, 1.0000, 0.6365, 0.5854],
# [0.7605, 0.6365, 1.0000, 0.6423],
# [0.6213, 0.5854, 0.6423, 1.0000]])
Note the revision argument. I got this result with the script:
# tensor([[1.0000, 0.6262, 0.7605, 0.6213],
# [0.6262, 1.0000, 0.6365, 0.5854],
# [0.7605, 0.6365, 1.0000, 0.6423],
# [0.6213, 0.5854, 0.6423, 1.0000]])
Compared to this output when using the original model with the classification task:
tensor([[1.0000, 0.6254, 0.7624, 0.6206],
[0.6254, 1.0000, 0.6369, 0.5841],
[0.7624, 0.6369, 1.0000, 0.6413],
[0.6206, 0.5841, 0.6413, 1.0000]])
I believe the small difference is likely due to the adapter loading vs already being merged into the model.
- Tom Aarsen
I ran some more tests following my findings from https://huggingface.co/jinaai/jina-embeddings-v5-text-small/discussions/7. Here are the new results using fp32:
Main model using Transformers (fp32):
tensor([[1.0000, 0.7346, 0.7993, 0.7534],
[0.7346, 1.0000, 0.7444, 0.7236],
[0.7993, 0.7444, 1.0000, 0.7334],
[0.7534, 0.7236, 0.7334, 1.0000]])
Main model using Sentence Transformers (fp32, after https://huggingface.co/jinaai/jina-embeddings-v5-text-small/discussions/7):
tensor([[1.0000, 0.7346, 0.7993, 0.7534],
[0.7346, 1.0000, 0.7444, 0.7236],
[0.7993, 0.7444, 1.0000, 0.7334],
[0.7534, 0.7236, 0.7334, 1.0000]])
This PR (fp32, before updating default_prompt_name)
tensor([[1.0000, 0.6255, 0.7605, 0.6199],
[0.6255, 1.0000, 0.6355, 0.5841],
[0.7605, 0.6355, 1.0000, 0.6413],
[0.6199, 0.5841, 0.6413, 1.0000]])
This PR (fp32, after updating default_prompt_name)
tensor([[1.0000, 0.7345, 0.7988, 0.7531],
[0.7345, 1.0000, 0.7443, 0.7235],
[0.7988, 0.7443, 1.0000, 0.7333],
[0.7531, 0.7235, 0.7333, 1.0000]])
In short, the results after updating the default_prompt_name are very close, and I think this PR is now correct & ready.
- Tom Aarsen