deepvk/USER-bge-m3

deepvk
Similitud de oraciones

El Universal Sentence Encoder para Ruso (USER) es un modelo sentence-transformer para extraer embeddings exclusivamente para el idioma ruso. Mapea oraciones y párrafos a un espacio vectorial denso de 1024 dimensiones y puede usarse para tareas como la agrupación o búsqueda semántica. Este modelo se inicializa desde TatonkaHF/bge-m3_en_ru, que es una versión reducida del modelo baai/bge-m3 y está entrenado principalmente para trabajar con el idioma ruso. No se evaluó su calidad en otros idiomas.

Como usar

Usar este modelo es fácil cuando tienes sentence-transformers instalado:

pip install -U sentence-transformers

Luego puedes usar el modelo así:

from sentence_transformers import SentenceTransformer

input_texts = [
    "Когда был спущен на воду первый миноносец «Спокойный»?",
    "Есть ли нефть в Удмуртии?",
    "Спокойный (эсминец)
Зачислен в списки ВМФ СССР 19 августа 1952 года.",
    "Нефтепоисковые работы в Удмуртии были начаты сразу после Второй мировой войны в 1945 году и продолжаются по сей день. Добыча нефти началась в 1967 году."
]

model = SentenceTransformer("deepvk/USER-bge-m3")
embeddings = model.encode(input_texts, normalize_embeddings=True)

Sin embargo, puedes usar el modelo directamente con transformers:

import torch.nn.functional as F
from torch import Tensor, inference_mode
from transformers import AutoTokenizer, AutoModel

input_texts = [
    "Когда был спущен на воду первый миноносец «Спокойный»?",
    "Есть ли нефть в Удмуртии?",
    "Спокойный (эсминец)
Зачислен в списки ВМФ СССР 19 августа 1952 года.",
    "Нефтепоисковые работы в Удмуртии были начаты сразу после Второй мировой войны в 1945 году и продолжаются по сей день. Добыча нефти началась в 1967 году."
]

tokenizer = AutoTokenizer.from_pretrained("deepvk/USER-bge-m3")
model = AutoModel.from_pretrained("deepvk/USER-bge-m3")
model.eval()

encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
    model_output = model(**encoded_input)
    # Realizar pooling. En este caso, cls pooling.
    sentence_embeddings = model_output[0][:, 0]
    # Normalizar embeddings
    sentence_embeddings = torch.nn.functional.normalize(sentence_embeddings, p=2, dim=1)
    # [[0.5567, 0.3014],
    #  [0.1701, 0.7122]]
    scores = (sentence_embeddings[:2] @ sentence_embeddings[2:].T)

Además, puedes usar la biblioteca nativa FlagEmbedding para la evaluación. El uso se describe en la tarjeta de modelo bge-m3.

Funcionalidades

Modelo sentence-transformer
Extrae embeddings para el idioma ruso
Espacio vectorial denso de 1024 dimensiones
Entrenado a partir de TatonkaHF/bge-m3_en_ru
Compatible con AutoTrain
Compatible con Inference Endpoints

Casos de uso

Clustering de oraciones y párrafos
Búsqueda semántica
Extracción de características de texto