Model reference · open weights

kanana-2-embedding

Embeddings kakaocorp Embeddings 1 build Its own licence terms 521 dl/mo

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.

  • kanana-2-1.3b-embedding is a 1.3B parameter text embedding model developed by Kakao for Korean and English retrieval tasks.
  • It supports a context length of 4096 tokens and uses mean pooling to generate embeddings for semantic search and retrieval-augmented generation.
  • The model is released under the KananaOpenLicense and allows for Matryoshka representation learning to truncate embeddings to 1024, 512, 256, or 128 dimensions.

Summary of the kakaocorp/kanana-2-1.3b-embedding model card, 2026-11-02

What it is

Released bykakaocorp
Released2026-05-27
Parameters1.3B
VRAM2.6 GB for the weights

What it runs on

Memory and cards for kanana-2-1.3b-embedding (BF16)

2.6 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

From the model card

What kakaocorp says about kanana-2-embedding

Read the model card

🤗 kanana-2-3b-embedding  |  🤗 kanana-2-1.3b-embedding  |  📕 Blog

kanana-2-1.3b-embedding

News 🔥

  • 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.

Introduction

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.

Highlights

  • Korean retrieval: kanana-2-3b-embedding achieves the best average score on nano-BEIR (ko) and Ko-Retrieval among the compared models at every Matryoshka dimension.
  • Matryoshka representation learning (MRL): Embeddings can be truncated to 1024 / 512 / 256 / 128 dimensions to reduce storage and search cost.
  • Long input: The models accept inputs of up to 4,096 tokens.

Model Downloads

ModelEmbedding dimDownload
kanana-2-3b-embedding2560🤗 HuggingFace
kanana-2-1.3b-embedding1280🤗 HuggingFace

Embedding Performance

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.

Deployment

The model supports Matryoshka truncation to 1024 / 512 / 256 / 128 dimensions.

sentence-transformers

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"])

transformers

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)

vLLM

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)

License

The model weights are released under the KananaOpenLicense.

Citation

@misc{kanana2embedding2026,
  title = {{kanana-2-embedding}},
  author = {Doohae Jung},
  year = {2026},
  url = {https://huggingface.co/collections/kakaocorp/kanana-2-slm}
}

Contact

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