--- license: apache-2.0 base_model: Alibaba-NLP/gte-Qwen2-1.5B-instruct tags: - sentence-transformers - sentence-similarity - feature-extraction - Korean - financial-nlp - nmixx language: - ko datasets: - nmixx-fin/NMIXX_train pipeline_tag: sentence-similarity --- # NMIXX-QWEN This repository contains a gte-Qwen2-1.5B-instruct-based SentenceTransformer model fine-tuned with a triplet-loss setup on the `nmixx-fin/NMIXX_train` dataset. It produces high-quality sentence embeddings for Korean financial text, optimized for semantic similarity tasks in the finance domain. --- ## How to Use ```python from transformers import AutoTokenizer, AutoModel import torch import torch.nn.functional as F def last_token_pool(last_hidden_states, attention_mask): """ Last token pooling for decoder-based models like GTE-Qwen """ left_padding = (attention_mask[:, -1].sum() == attention_mask.shape[0]) if left_padding: return last_hidden_states[:, -1] else: sequence_lengths = attention_mask.sum(dim=1) - 1 batch_size = last_hidden_states.shape[0] return last_hidden_states[torch.arange(batch_size, device=last_hidden_states.device), sequence_lengths] # 1. Load tokenizer & model from Hugging Face Hub repo_name = "nmixx-fin/nmixx-qwen" tokenizer = AutoTokenizer.from_pretrained(repo_name) model = AutoModel.from_pretrained(repo_name) # 2. Move to GPU if available device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model.to(device) model.eval() # 3. Prepare input sentences sentences = [ "이 모델은 한국 금융 도메인에 특화된 임베딩을 제공합니다.", "NMIXX 데이터셋으로 fine-tuning된 sentence transformer입니다." ] # 4. Tokenize encoded_input = tokenizer( sentences, padding=True, truncation=True, max_length=512, return_tensors="pt" ) input_ids = encoded_input["input_ids"].to(device) attention_mask = encoded_input["attention_mask"].to(device) # 5. Forward pass (token embeddings) with torch.no_grad(): model_output = model(input_ids=input_ids, attention_mask=attention_mask) # 6. Last Token Pooling (GTE-Qwen uses last token) sentence_embeddings = last_token_pool(model_output.last_hidden_state, attention_mask) # 7. L2 Normalization sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1) print("Sentence embeddings shape:", sentence_embeddings.shape) print(sentence_embeddings.cpu()) ```