KURE

Models

The API serves the four models below. Other models in the KURE family can be downloaded from Hugging Face and run yourself (compare models).

Model ID (alias)SnapshotEndpointUse
kure-v3kure-v3-20261016/embeddingsDense embeddings (semantic search)
kure-sparse-nanokure-sparse-nano-20261016/sparse-embeddingsSparse embeddings (inverted index, hybrid search)
kure-sparse-basekure-sparse-base-20261016/sparse-embeddingsSparse embeddings (more accurate than nano, larger vocabulary)
kure-reranker-nanokure-reranker-nano-20261016/rerankReranking (cross-encoder)

Sending a model to the wrong endpoint returns 404 with the endpoint to use.

Model IDs and versions

A model ID is either a snapshot or an alias.

KindExamplePoints to
Snapshotkure-v3-20261016The weights deployed on that date. Never changes
Aliaskure-v3-latestThe model's latest snapshot
Aliaskure-v3Same as kure-v3-latest
  • The model field of a response is the snapshot ID that served the request. alias_for in GET /models shows which snapshot an alias points to now.
  • When we update the weights, we add a snapshot with a new date and move the aliases. We announce it before moving an alias.
  • If you store vectors for search, use a snapshot ID. When an alias moves, the same text gets a different vector, and new query vectors no longer match your stored document vectors. A snapshot keeps results the same until you switch.
  • Reranker and sparse embedding models follow the same rules (kure-reranker-nano-20261016, kure-sparse-nano-latest, kure-sparse-base, and so on).

KURE-v3

ItemValue
Model IDkure-v3-20261016 (aliases kure-v3, kure-v3-latest)
TypeDense single-vector embedding
Parameters1.1B
Output dimensions2048 (MRL: 256, 512, 768, 1024, 2048)
Maximum input length8,192 tokens
NormalizationL2 (dot product = cosine similarity)
LanguagesKorean-first, Korean↔English cross-lingual retrieval

Queries vs. documents (input_type)

KURE-v3 was trained with different prompts in front of queries and documents. With input_type, the server adds the right one for you.

input_typePrompt addedUse for
queryquery: Search queries and questions from users
documentpassage: Documents, paragraphs, and chunks being searched
omittednoneEmbedding the text as-is

For retrieval, always distinguish queries from documents. When comparing texts of the same kind (deduplication, clustering), use the same input_type on both sides.

If your text already starts with the prompt and you also set input_type, the prompt is added twice. Use one or the other.

MRL dimensions

KURE-v3 is trained with Matryoshka Representation Learning (MRL), so keeping only the leading part of a vector costs little accuracy. With dimensions, the server truncates the vector from the front and re-normalizes it.

dimensionsSize of one float32 vectorStorage vs. 2048
2048 (default)8 KB100%
10244 KB50%
7683 KB38%
5122 KB25%
2561 KB13%
  • Queries and documents must use the same dimensions to be comparable.
  • If you already stored 2048-dim vectors, truncating them and re-normalizing gives the same result as calling the API again.
  • Compare how rankings change across dimensions on the Playground.

Long documents

Each text can be up to 8,192 tokens; longer texts return 400 context_length_exceeded. Typical Korean prose is around 600 tokens per 1,000 characters, so 8,192 tokens is roughly 13,000 characters. This varies by text, so we recommend splitting long documents by paragraph. The actual count is in usage.prompt_tokens of each response.

KURE-Sparse

kure-sparse-nanokure-sparse-base
TypeLearned sparse vectors (SPLADE family)Learned sparse vectors (English + multilingual vocabulary)
Parameters149M593M
Vocabulary (dimension)36,282280,524
Max input length8,192 tokens (longer input is truncated)8,192 tokens
MTEB(kor) Retrieval nDCG@100.77160.7984
Hugging FaceKURE-Sparse-nanoKURE-Sparse-base

Queries and documents are encoded differently, so input_type is required. See the Sparse Embeddings API.

KURE-Reranker-nano

TypeCross-encoder reranker
Parameters149M
Max input length8,192 tokens for query + document (longer pairs are truncated, longest part first)
Reranking nDCG@10 (9 Korean benchmarks, BM25 top 50)0.8757 (the 1.7B base model: 0.8800)
ScoreRelevance probability 0–1 (relevance_score)
Hugging FaceKURE-Reranker-nano

See the Rerank API.

Model lifecycle

GPU capacity is limited, so when a new model ships, older models are retired after a notice period. Retirement goes through the stages below, with at least 30 days between the announcement and retirement.

StatusServedWhat the API shows
activeYesBusiness as usual
deprecatedYesDeprecation and Sunset (earliest retirement date) response headers. status, sunset, replacement in GET /models
retiredNo410 model_retired, with the replacement in the message
  • Accounts that used a deprecated model in the last 30 days see a notice at the top of the dashboard We also email them when we have an email address for the account.
  • The lifecycle applies to snapshots. Aliases are moved off a snapshot before it is retired.
  • Vectors from different snapshots are not comparable, so you need to re-embed your stored documents with the new snapshot.
  • Log a warning when you see a Sunset header or a non-active status in GET /models, so you don't miss the notice.

Weight release

The KURE-v3 weights are available on Hugging Face. kure-v3-20261016 has the same weights as revision 9e799c2 of nlpai-lab/KURE-v3, so you can mix vectors you make with sentence-transformers and vectors from the API.