/ Модель

Характеристики

Контекст
16 384 токена
Параметры
149 млн
Лицензия
Apache 2.0
Архитектура
modernbert · dense
Базовая модель
A.X-Encoder-base
Библиотека
sentence-transformers
Опубликована
4 окт 2025

splade-ko-v1

ЭмбеддингиТекст → embedding5 профессий

Корейский энкодер SPLADE, который преобразует тексты в разреженные векторы для семантического поиска документов.

1 065скачиваний за 30 дней17лайковвеса обновлены17 янв 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

yjoonjang/splade-ko-v1 — корейский разреженный энкодер SPLADE, дообученный автором на базе skt/A.X-Encoder-base с помощью Sentence Transformers. Модель преобразует предложения и абзацы в разреженные векторы размерности 50 000; сходство между ними оценивается скалярным произведением. В основе архитектуры — ModernBERT с маскированным языковым моделированием и SPLADE-пулингом. В метаданных указаны 148,7 млн параметров и контекст до 16 384 токенов, тогда как README задаёт максимальную длину последовательности 8 192 токена.

Модель предназначена для семантического поиска и разреженного поиска документов на корейском языке. В README приведены оценки на корейских наборах поиска, включая Ko-StrategyQA, AutoRAGRetrieval и MIRACLRetrieval. Модель распространяется по лицензии Apache-2.0. Она выдаёт разреженные векторы и не генерирует ответы; заявленные характеристики поиска относятся к указанным в карточке тестам.

Сценарии применения

  • поиск корейских документов по запросу
  • разреженное индексирование корейских текстов
  • поиск подтверждающих документов для корейских вопросов
  • семантический поиск по корпусу документов

Ограничения

Модель предназначена для корейского языка и выдаёт разреженные векторы, а не готовые текстовые ответы. Максимальная длина последовательности в README составляет 8 192 токена, тогда как метаданные указывают контекст до 16 384 токенов.

Для каких профессий подходит5

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

splade-ko-v1

splade-ko-v1 is a Korean-specific SPLADE Sparse Encoder model finetuned from skt/A.X-Encoder-base using the sentence-transformers library. It maps sentences & paragraphs to a 50000-dimensional sparse vector space and can be used for semantic search and sparse retrieval.

Model Details

Model Description

  • Model Type: SPLADE Sparse Encoder
  • Base model: skt/A.X-Encoder-base
  • Maximum Sequence Length: 8192 tokens
  • Output Dimensionality: 50000 dimensions
  • Similarity Function: Dot Product

Full Model Architecture

SparseEncoder(
  (0): MLMTransformer({'max_seq_length': 8192, 'do_lower_case': False, 'architecture': 'ModernBertForMaskedLM'})
  (1): SpladePooling({'pooling_strategy': 'max', 'activation_function': 'relu', 'word_embedding_dimension': 50000})
)

Usage

Direct Usage (Sentence Transformers)

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load this model and run inference.

from sentence_transformers import SparseEncoder

# Download from the 🤗 Hub
model = SparseEncoder("yjoonjang/splade-ko-v1")
# Run inference
sentences = [
    '양이온 최적화 방법은 산소공공을 감소시키기 때문에 전자 농도가 증가하는 문제점을 갖고있을까?',
    '산화물 TFT 소자 신뢰성 열화기구\n그러나 이와 같은 양이온 최적화 방법은 산소공공을 감소시키기 때문에 전자농도 역시 감소하게 되어 전계 이동도가 감소하는 문제점을 않고 있다.\n이는 산화물 반도체의 전도기구가 Percolation Conduction에 따르기 때문이다. ',
    '세포대사 기능 분석을 위한 광학센서 기반 용존산소와 pH 측정 시스템의 제작 및 특성 분석\n수소이온 농도가 증가하는 경우인 \\( \\mathrm{pH} \\) 가 낮아지면 다수의 수소이온들과 충돌한 방출 광이 에너지를 잃고 짧은 검출시간을 갖는다. \n반대로 \\( \\mathrm{pH} \\)가 높아질수록 형광물질로부터 방출된 광의 수명이 길어져 긴 검출시간을 가진다.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 50000]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[ 46.0239,  57.8961,  22.8014],
#         [ 57.8961, 270.6235,  56.5666],
#         [ 22.8014,  56.5666, 275.8828]], device='cuda:0')

Evaluation

MTEB-ko-retrieval Leaderboard

Evaluated all the Korean Retrieval Benchmarks on MTEB

Korean Retrieval Benchmark

DatasetDescriptionAverage Length (characters)
Ko-StrategyQAKorean ODQA multi-hop retrieval dataset (translated from StrategyQA)305.15
AutoRAGRetrievalKorean document retrieval dataset constructed by parsing PDFs across 5 domains: finance, public sector, healthcare, legal, and commerce823.60
MIRACLRetrievalWikipedia-based Korean document retrieval dataset166.63
PublicHealthQAKorean document retrieval dataset for medical and public health domains339.00
BelebeleRetrievalFLORES-200-based Korean document retrieval dataset243.11
MrTidyRetrievalWikipedia-based Korean document retrieval dataset166.90
MultiLongDocRetrievalKorean long document retrieval dataset across various domains13,813.44
  • In our evaluation, we excluded the XPQARetrieval dataset. XPQA is a dataset designed to evaluate Cross-Lingual QA capabilities, and we determined it to be inappropriate for evaluating retrieval tasks that require finding supporting documents based on queries.
  • Examples from the XPQARetrieval dataset are as follows:
    {
    	"query": "Is it unopened?",
    	"document": "No. It is a renewed product."
    },
    {
    	"query": "Is it compatible with iPad Air 3?",
    	"document": "Yes, it is possible."
    }
    
  • Details for excluding this dataset is shown in the Github Issue

Evaluation Metrics

  • Recall@10
  • NDCG@10
  • MRR@10
  • AVG_Query_Active_Dims
  • AVG_Corpus_Active_Dims

Evaluation Code

Our evaluation uses the SparseInformationRetrievalEvaluator from the sentence-transformers library.

from sentence_transformers import SparseEncoder
from datasets import load_dataset
from sentence_transformers.sparse_encoder.evaluation import SparseInformationRetrievalEvaluator
import os
import pandas as pd
from tqdm import tqdm
import json
from multiprocessing import Process, current_process
import torch
from setproctitle import setproctitle
import traceback

# GPU별로 평가할 데이터셋 매핑
DATASET_GPU_MAPPING = {
	0: [
		"yjoonjang/markers_bm",
		"taeminlee/Ko-StrategyQA",
		"facebook/belebele",
		"xhluca/publichealth-qa",
		"Shitao/MLDR"
	],
	1: [
		"miracl/mmteb-miracl",
	],
	2: [
		"mteb/mrtidy",
	]
}

model_name = "yjoonjang/splade-ko-v1"

def evaluate_dataset(model_name, gpu_id, eval_datasets, output_dir):
	output_dir = f"{output_dir}/{model_name}"
	os.makedirs(output_dir, exist_ok=True)
	
	"""단일 GPU에서 할당된 데이터셋들을 평가하는 함수"""
	import torch
	try:
		device = torch.device(f"cuda:{str(gpu_id)}") 
		torch.cuda.set_device(device)
		
		setproctitle(f"yjoonjang splade-eval-gpu{gpu_id}")
		print(f"Running datasets: {eval_datasets} on GPU {gpu_id} in process {current_process().name}")
		
		# 모델 로드
		model = SparseEncoder(model_name, trust_remote_code=True, device=device)
		
		for eval_dataset in eval_datasets:
			short_dataset_name = eval_dataset.split("/")[-1]
			
			prediction_filepath = f"{output_dir}/{short_dataset_name}.json"
			if os.path.exists(prediction_filepath):
				print(f"Skipping evaluation for {eval_dataset} as output already exists at {prediction_filepath}")
				continue

			corpus = {}
			queries = {}
			relevant_docs = {}
			split = "dev"
			if eval_dataset == "yjoonjang/markers_bm" or eval_dataset == "yjoonjang/squad_kor_v1":
				split = "test"

			if eval_dataset in ["yjoonjang/markers_bm", "taeminlee/Ko-StrategyQA"]:
				dev_corpus = load_dataset(eval_dataset, "corpus", split="corpus")
				dev_queries = load_dataset(eval_dataset, "queries", split="queries")
				relevant_docs_data = load_dataset(eval_dataset, "default", split=split)
				
				queries = dict(zip(dev_queries["_id"], dev_queries["text"]))
				# Combine title and text if title exists (MTEB format)
				if "title" in dev_corpus.column_names and "text" in dev_corpus.column_names:
					corpus = {
						row["_id"]: (row["title"] + " " + row["text"]).strip()
						for row in dev_corpus
					}
				elif "text" in dev_corpus.column_names:
					corpus = dict(zip(dev_corpus["_id"], dev_corpus["text"]))
				else:
					raise ValueError(f"Corpus dataset must have 'text' field")
				for row in relevant_docs_data:
					qid_str = str(row["query-id"])
					corpus_ids_str = str(row["corpus-id"])
					score = row.get("score", 1)  # Default to 1 if no score field
					if score >= 1:  # Only include relevant documents (score >= 1)
						if qid_str not in relevant_docs:
							relevant_docs[qid_str] = set()
						relevant_docs[qid_str].add(corpus_ids_str)

			elif eval_dataset == "facebook/belebele":
				split = "test"
				ds = load_dataset(eval_dataset, "kor_Hang", split=split)
				
				corpus_df = pd.DataFrame(ds)
				corpus_df = corpus_df.drop_duplicates(subset=["link"])
				corpus_df["cid"] = [f"C{i}" for i in range(len(corpus_df))]
				corpus = dict(zip(corpus_df["cid"], corpus_df["flores_passage"]))
				
				link_to_cid = dict(zip(corpus_df["link"], corpus_df["cid"]))
				
				queries_df = pd.DataFrame(ds)
				queries_df = queries_df.drop_duplicates(subset=["question"])
				queries_df["qid"] = [f"Q{i}" for i in range(len(queries_df))]
				queries = dict(zip(queries_df["qid"], queries_df["question"]))
				
				question_to_qid = dict(zip(queries_df["question"], queries_df["qid"]))

				for row in tqdm(ds, desc="Processing belebele"):
					qid = question_to_qid[row["question"]]
					cid = link_to_cid[row["link"]]
					if qid not in relevant_docs:
						relevant_docs[qid] = set()
					relevant_docs[qid].add(cid)

			elif eval_dataset == "miracl/mmteb-miracl":
				split = "dev"
				corpus_ds = load_dataset(eval_dataset, "corpus-ko", split="corpus", trust_remote_code=True)
				queries_ds = load_dataset(eval_dataset, "queries-ko", split="queries", trust_remote_code=True)
				qrels_ds = load_dataset(eval_dataset, "ko", split=split, trust_remote_code=True)

				# Combine title and text if title exists (MTEB format)
				if "title" in corpus_ds.column_names:
					corpus = {
						row['docid']: (row['title'] + " " + row['text']).strip()
						for row in corpus_ds
					}
				else:
					corpus = {row['docid']: row['text'] for row in corpus_ds}
				queries = {row['query_id']: row['query'] for row in queries_ds}

				for row in qrels_ds:
					qid = row["query_id"]
					cid = row["docid"]
					score = row.get("score", 1)  # Default to 1 if no score field
					if score >= 1:  # Only include relevant documents (score >= 1)
						if qid not in relevant_docs:
							relevant_docs[qid] = set()
						relevant_docs[qid].add(cid)

			elif eval_dataset == "mteb/mrtidy":
				split = "test"
				corpus_ds = load_dataset(eval_dataset, "korean-corpus", split="train", trust_remote_code=True)
				queries_ds = load_dataset(eval_dataset, "korean-queries", split=split, trust_remote_code=True)
				qrels_ds = load_dataset(eval_dataset, "korean-qrels", split=split, trust_remote_code=True)

				# Combine title and text if title exists (MTEB format)
				if "title" in corpus_ds.column_names and "text" in corpus_ds.column_names:
					corpus = {
						row["_id"]: (row["title"] + " " + row["text"]).strip()
						for row in corpus_ds
					}
				elif "text" in corpus_ds.column_names:
					corpus = {row['_id']: row['text'] for row in corpus_ds}
				else:
					raise ValueError(f"Corpus dataset must have 'text' field")
				queries = {row['_id']: row['text'] for row in queries_ds}

				for row in qrels_ds:
					qid = str(row["query-id"])
					cid = str(row["corpus-id"])
					score = row.get("score", 1)  # Default to 1 if no score field
					if score >= 1:  # Only include relevant documents (score >= 1)
						if qid not in relevant_docs:
							relevant_docs[qid] = set()
						relevant_docs[qid].add(cid)

			elif eval_dataset == "Shitao/MLDR":
				split = "dev"
				corpus_ds = load_dataset(eval_dataset, "corpus-ko", split="corpus", trust_remote_code=True)
				lang_data = load_dataset(eval_dataset, "ko", split=split, trust_remote_code=True)
				
				# Combine title and text if title exists (MTEB format)
				if "title" in corpus_ds.column_names:
					corpus = {
						row['docid']: (row['title'] + " " + row['text']).strip()
						for row in corpus_ds
					}
				else:
					corpus = {row['docid']: row['text'] for row in corpus_ds}
				queries = {row['query_id']: row['query'] for row in lang_data}

				for row in lang_data:
					qid = row["query_id"]
					cid = row["positive_passages"][0]["docid"]
					if qid not in relevant_docs:
						relevant_docs[qid] = set()
					relevant_docs[qid].add(cid)

			elif eval_dataset == "xhluca/publichealth-qa":
				split = "test"
				ds = load_dataset(eval_dataset, "korean", split=split, trust_remote_code=True)
				
				ds = ds.filter(lambda x: x["question"] is not None and x["answer"] is not None)
				
				corpus_df = pd.DataFrame(list(ds))
				corpus_df = corpus_df.drop_duplicates(subset=["answer"])
				corpus_df["cid"] = [f"D{i}" for i in range(len(corpus_df))]
				corpus = dict(zip(corpus_df["cid"], corpus_df["answer"]))
				answer_to_cid = dict(zip(corpus_df["answer"], corpus_df["cid"]))

				queries_df = pd.DataFrame(list(ds))
				queries_df = queries_df.drop_duplicates(subset=["question"])
				queries_df["qid"] = [f"Q{i}" for i in range(len(queries_df))]
				queries = dict(zip(queries_df["qid"], queries_df["question"]))
				question_to_qid = dict(zip(queries_df["question"], queries_df["qid"]))
				
				for row in tqdm(ds, desc="Processing publichealth-qa"):
					qid = question_to_qid[row["question"]]
					cid = answer_to_cid[row["answer"]]
					if qid not in relevant_docs:
						relevant_docs[qid] = set()
					relevant_docs[qid].add(cid)

			else:
				continue
			
			if torch.cuda.get_device_name().startswith('NVIDIA A100'):
				batch_size = 16
			else:
				batch_size = 4
					
			evaluator = SparseInformationRetrievalEvaluator(
				queries=queries,
				corpus=corpus,
				relevant_docs=relevant_docs,
				write_csv=False,
				name=f"{eval_dataset}",
				show_progress_bar=True,
				batch_size=batch_size,
				write_predictions=False
			)
			short_dataset_name = eval_dataset.split("/")[-1]
			output_filepath = f"{output_dir}/{short_dataset_name}.json"
			metrics = evaluator(model)
			print(f"GPU {gpu_id} - {eval_dataset} metrics: {metrics}")
			with open(output_filepath, "w", encoding="utf-8") as f:
				json.dump(metrics, f, ensure_ascii=False, indent=2)
				
	except Exception as ex:
		print(f"Error on GPU {gpu_id}: {ex}")
		traceback.print_exc()

if __name__ == "__main__":
	torch.multiprocessing.set_start_method('spawn')
	
	print(f"Starting evaluation for model: {model_name}")
	output_dir = "./results_inference_free_new_idf"
	# output_dir = "./results_inference_free_new"
	processes = []
	
	for gpu_id, datasets in DATASET_GPU_MAPPING.items():
		p = Process(target=evaluate_dataset, args=(model_name, gpu_id, datasets, output_dir))
		p.start()
		processes.append(p)
	
	for p in processes:
		p.join()
	
	print(f"Completed evaluation for model: {model_name}")

Evaluation Results

ModelParametersRecall@10NDCG@10MRR@10AVG_Query_Active_DimsAVG_Corpus_Active_Dims
yjoonjang/splade-ko-v10.1B0.83910.73760.7260110.7664783.7026
telepix/PIXIE-Splade-Preview0.1B0.81070.71750.707230.481566.8242
opensearch-project/opensearch-neural-sparse-encoding-multilingual-v10.1B0.65700.53830.523327.8722177.5564

Comparison with Dense Embedding models (NDCG@10)

Look here for more details.

ModelParametersAverage NDCG@10
Sparse Embedding
yjoonjang/splade-ko-v10.1B0.7376
telepix/PIXIE-Splade-Preview0.1B0.7175
opensearch-project/opensearch-neural-sparse-encoding-multilingual-v10.1B0.5383
Dense Embedding
Qwen/Qwen3-Embedding-8B8B0.7635
Qwen/Qwen3-Embedding-4B4B0.7484
telepix/PIXIE-Rune-Preview0.6B0.7420
nlpai-lab/KURE-v10.6B0.7395
dragonkue/snowflake-arctic-embed-l-v2.0-ko0.6B0.7386
telepix/PIXIE-Spell-Preview-1.7B1.7B0.7342
BAAI/bge-m30.6B0.7339
dragonkue/BGE-m3-ko0.6B0.7312
Snowflake/snowflake-arctic-embed-l-v2.00.6B0.7179
telepix/PIXIE-Spell-Preview-0.6B0.6B0.7106
intfloat/multilingual-e5-large0.6B0.7075
FronyAI/frony-embed-medium-arctic-ko-v2.50.6B0.7067
nlpai-lab/KoE50.6B0.7043
google/embeddinggemma-300m0.3B0.6944
BAAI/bge-multilingual-gemma29.4B0.6931
Qwen/Qwen3-Embedding-0.6B0.6B0.6895
Alibaba-NLP/gte-multilingual-base0.3B0.6879
jinaai/jina-embeddings-v30.6B0.6872
SamilPwC-AXNode-GenAI/PwC-Embedding_expr0.6B0.6846
nomic-ai/nomic-embed-text-v2-moe0.5B0.6799
intfloat/multilingual-e5-large-instruct0.6B0.6799
intfloat/multilingual-e5-base0.3B0.6709
Alibaba-NLP/gte-Qwen2-7B-instruct7.6B0.6689
intfloat/e5-mistral-7b-instruct7.1B0.6649
openai/text-embedding-3-largeUnkown0.6513
upskyy/bge-m3-korean0.6B0.6434
Salesforce/SFR-Embedding-2_R2.6B0.6391
jhgan/ko-sroberta-multitask0.1B0.5165

Training Details

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 4
  • per_device_eval_batch_size: 2
  • learning_rate: 2e-05
  • num_train_epochs: 2
  • warmup_ratio: 0.1
  • bf16: True
  • negs_per_query: 6 (from our dataset)
  • gather_device: True (Makes samples available to be shared across devices)

All Hyperparameters

  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 4
  • per_device_eval_batch_size: 2
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 1
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 2e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 2
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.1
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: True
  • fp16: False
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: 7
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • debug: []
  • dataloader_drop_last: True
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: False
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • parallelism_config: None
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch_fused
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: None
  • hub_always_push: False
  • hub_revision: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_inputs_for_metrics: False
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • torchdynamo: None
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: False
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • eval_on_start: False
  • use_liger_kernel: False
  • liger_kernel_config: None
  • eval_use_gather_object: False
  • average_tokens_across_devices: True
  • prompts: None
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Framework Versions

  • Python: 3.10.18
  • Sentence Transformers: 5.1.1
  • Transformers: 4.56.2
  • PyTorch: 2.8.0+cu128
  • Accelerate: 1.10.1
  • Datasets: 4.1.1
  • Tokenizers: 0.22.1

Citation

BibTeX

@software{spladeko,
  author       = {Youngjoon, Jang},
  title        = {splade-ko-v1},
  subtitle     = {Independent Korean SPLADE Model for the Industry},
  publisher    = {Hugging Face},
  year         = {2025},
  version      = {1.0.0},
  url          = {https://huggingface.co/yjoonjang/splade-ko-v1}
}

Sentence Transformers

@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084",
}

SpladeLoss

@misc{formal2022distillationhardnegativesampling,
      title={From Distillation to Hard Negative Sampling: Making Sparse Neural IR Models More Effective},
      author={Thibault Formal and Carlos Lassance and Benjamin Piwowarski and Stéphane Clinchant},
      year={2022},
      eprint={2205.04733},
      archivePrefix={arXiv},
      primaryClass={cs.IR},
      url={https://arxiv.org/abs/2205.04733},
}

SparseMultipleNegativesRankingLoss

@misc{henderson2017efficient,
    title={Efficient Natural Language Response Suggestion for Smart Reply},
    author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
    year={2017},
    eprint={1705.00652},
    archivePrefix={arXiv},
    primaryClass={cs.CL}
}

FlopsLoss

@article{paria2020minimizing,
    title={Minimizing flops to learn efficient sparse representations},
    author={Paria, Biswajit and Yeh, Chih-Kuan and Yen, Ian EH and Xu, Ning and Ravikumar, Pradeep and P{'o}czos, Barnab{'a}s},
    journal={arXiv preprint arXiv:2004.05665},
    year={2020}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · sentence-transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
ModernBertForMaskedLM
Ревизия весов
2cb7059

0 моделей