d0rj/e5-small-en-ru

d0rj
Similitud de oraciones

Esta es una versión podada del vocabulario de intfloat/multilingual-e5-small. Utiliza únicamente tokens en ruso y inglés. Utiliza la distancia del producto interno para la recuperación. Utiliza 'consulta: ' y 'pasaje: ' respectivamente para tareas asimétricas como la recuperación de pasajes en preguntas y respuestas abiertas, y recuperación de información ad-hoc. Usa el prefijo 'consulta: ' para tareas simétricas como la similitud semántica, minería de bitextos, recuperación de paráfrasis. Utiliza el prefijo 'consulta: ' si deseas usar embeddings como características, como clasificación de sondeo lineal, agrupamiento.

Como usar

import torch.nn.functional as F
from torch import Tensor
from transformers import XLMRobertaTokenizer, XLMRobertaModel

def average_pool(last_hidden_states: Tensor, attention_mask: Tensor) -> Tensor:
  last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
  return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]

input_texts = [
  'consulta: ¿Cómo se diferencia un sitio web corporativo de un sitio web de tarjeta de presentación?',
  'consulta: Где был создан первый троллейбус?',
  'pasaje: El primer trolebús fue creado en Alemania por el ingeniero Werner von Siemens, probablemente influenciado por la idea de su hermano, el Dr. Wilhelm Siemens, quien vivía en Inglaterra, expresada el 18 de mayo de 1881 en la vigésima segunda reunión de la Royal Scientific Society. El circuito eléctrico se realizaba mediante un carro de ocho ruedas (Kontaktwagen) que rodaba a lo largo de dos alambres de contacto paralelos. Los cables estaban ubicados bastante cerca uno del otro, y con vientos fuertes a menudo se superponían, lo que llevaba a cortocircuitos. Una línea experimental de trolebuses con una longitud de 540 m (591 yardas), inaugurada por Siemens & Halske en el suburbio berlinés de Halensee, operó del 29 de abril al 13 de junio de 1882.',
  'pasaje: Un sitio web corporativo contiene información completa sobre la empresa propietaria, servicios/productos, eventos en la vida de la empresa. Se diferencia de un sitio web de tarjeta de presentación y un sitio web representativo en la integridad de la información presentada, y a menudo contiene diversas herramientas funcionales para trabajar con contenido (búsqueda y filtros, calendarios de eventos, galerías de fotos, blogs corporativos, foros). Puede integrarse con sistemas de información internos de la empresa propietaria (ERP, CRM, sistemas de contabilidad). Puede contener secciones cerradas para ciertos grupos de usuarios: empleados, distribuidores, socios comerciales, etc.',
]

tokenizer = XLMRobertaTokenizer.from_pretrained('d0rj/e5-small-en-ru', use_cache=False)
model = XLMRobertaModel.from_pretrained('d0rj/e5-small-en-ru', use_cache=False)

batch_dict = tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')

outputs = model(**batch_dict)
embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])

embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())
# [[68.59542846679688, 81.75910949707031], [80.36100769042969, 64.77748107910156]]
from transformers import pipeline

pipe = pipeline('feature-extraction', model='d0rj/e5-small-en-ru')
embeddings = pipe(input_texts, return_tensors=True)
embeddings[0].size()
# torch.Size([1, 17, 1024])
from sentence_transformers import SentenceTransformer

sentences = [
  'consulta: Что такое круглые тензоры?',
  'pasaje: Resumen: presentamos un nuevo método para comprimir tensores redondos basado en su simetría radial inherente. Comenzamos generalizando PCA y descomposición eigen en tensores redondos...',
]

model = SentenceTransformer('d0rj/e5-small-en-ru')
embeddings = model.encode(sentences, convert_to_tensor=True)
embeddings.size()
# torch.Size([2, 1024])

Funcionalidades

Similitud de oraciones
Transformers
PyTorch
Safetensors
sentence-transformers
extracción de características
mteb
recuperación
pruned
e5
inferencias de embeddings de texto
endpoints compatibles

Casos de uso

Recuperación de pasajes
Recuperación de información ad-hoc
Similitud semántica
Minería de bitextos
Recuperación de paráfrasis
Clasificación de sondeo lineal
Agrupamiento