Model reference · open weights
kanana-2-embedding is an open-weight embedding model from kakaocorp. kanana-2-1.3b-embedding (BF16) weighs 2.6 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.
Summary of the kakaocorp/kanana-2-1.3b-embedding model card, 2026-11-02
What it is
| Released by | kakaocorp |
|---|---|
| Released | 2026-05-27 |
| Parameters | 1.3B |
| VRAM | 2.6 GB for the weights |
What it runs on
| Card | Runs | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
🤗 kanana-2-3b-embedding | 🤗 kanana-2-1.3b-embedding | 📕 Blog
2026/10/29: 🤗 Released the kanana-2-3b-embedding and kanana-2-1.3b-embedding model weights.2026/07/28: 📕 Published a blog post about the development of the Kanana-2 SLM series.Kanana-2-embedding is Kakao's text embedding model series for Korean and English retrieval. This release includes 3B and 1.3B models. The models are built on Kakao's Kanana-2 SLMs, converted to bidirectional attention with mean pooling. They produce text embeddings for semantic search, retrieval-augmented generation (RAG), and text similarity.
| Model | Embedding dim | Download |
|---|---|---|
| kanana-2-3b-embedding | 2560 | 🤗 HuggingFace |
| kanana-2-1.3b-embedding | 1280 | 🤗 HuggingFace |
All models are evaluated with MTEB under the same conditions.
Every evaluation runs without any task prompt (raw input text, with no query/document prefix or instruction template).
Each cell is the average score of the benchmark, reported per Matryoshka dimension (full / 512 / 256 / 128).
Per-column best scores are bolded.
† Average over six Korean retrieval tasks: MIRACLRetrieval, Ko-StrategyQA, AutoRAGRetrieval, LawIRKo, SQuADKorV1Retrieval, and PublicHealthQA.
‡ Kanana-1 embedding models do not support Matryoshka truncation, so only the full-dim score is reported.
Library versions used for evaluation: transformers==5.8.0, sentence-transformers==5.5.1, vllm==0.20.2, torch==2.11.0+cu129.
The model supports Matryoshka truncation to 1024 / 512 / 256 / 128 dimensions.
pip install torch sentence-transformers
from sentence_transformers import SentenceTransformer
model_id = "kakaocorp/kanana-2-1.3b-embedding"
model = SentenceTransformer(model_id, trust_remote_code=True)
queries = ["What is the capital of France?"]
documents = ["Paris is the capital of France."]
q = model.encode(queries)
d = model.encode(documents)
scores = model.similarity(q, d)
print(scores)
With MRL truncation:
DIM = 256 # one of: 1024, 512, 256, 128
model = SentenceTransformer(model_id, trust_remote_code=True, truncate_dim=DIM)
embeddings = model.encode(["query text", "document text"])
pip install torch transformers
import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer
model_id = "kakaocorp/kanana-2-1.3b-embedding"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModel.from_pretrained(
model_id,
trust_remote_code=True,
dtype=torch.bfloat16,
).cuda().eval()
texts = ["query text", "document text"]
inputs = tokenizer(
texts,
padding=True,
truncation=True,
return_tensors="pt",
max_length=4096,
).to("cuda")
with torch.no_grad():
out = model(**inputs)
hidden = out.last_hidden_state
mask = inputs["attention_mask"].unsqueeze(-1).float()
pooled = (hidden * mask).sum(dim=1) / mask.sum(dim=1)
embeddings = F.normalize(pooled, dim=-1)
With MRL truncation:
DIM = 256 # one of: 1024, 512, 256, 128
embeddings = F.normalize(pooled[:, :DIM], dim=-1)
pip install vllm
import numpy as np
from vllm import LLM
model_id = "kakaocorp/kanana-2-1.3b-embedding"
llm = LLM(
model=model_id,
runner="pooling",
convert="embed",
trust_remote_code=True,
enable_prefix_caching=False,
enable_chunked_prefill=False,
)
outputs = llm.embed(["query text", "document text"])
raw = np.asarray([o.outputs.embedding for o in outputs])
embeddings = raw / np.linalg.norm(raw, axis=-1, keepdims=True)
With MRL truncation:
DIM = 256 # one of: 1024, 512, 256, 128
trunc = raw[:, :DIM]
embeddings = trunc / np.linalg.norm(trunc, axis=-1, keepdims=True)
The model weights are released under the KananaOpenLicense.
@misc{kanana2embedding2026,
title = {{kanana-2-embedding}},
author = {Doohae Jung},
year = {2026},
url = {https://huggingface.co/collections/kakaocorp/kanana-2-slm}
}
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.