sentence-transformers/all-MiniLM-L6-v2

sentence-transformers
Similitud de oraciones

Este es un modelo de transformers de oraciones: Mapea oraciones y párrafos a un espacio vectorial denso de 384 dimensiones y se puede usar para tareas como la agrupación o la búsqueda semántica. El proyecto tiene como objetivo entrenar modelos de incrustación de oraciones en conjuntos de datos de muy grande nivel de oraciones utilizando un objetivo de aprendizaje contrastivo autosupervisado. Usamos el modelo preentrenado nreimers/MiniLM-L6-H384-uncased y lo ajustamos en un conjunto de datos de 1B pares de oraciones. Desarrollamos este modelo durante la semana de la Comunidad utilizando JAX/Flax para NLP y CV, organizada por Hugging Face.

Como usar

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

pip install -U sentence-transformers

Luego puedes usar el modelo de esta manera:

from sentence_transformers import SentenceTransformer
sentences = ["Esta es una oración de ejemplo", "Cada oración es convertida"]

model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
embeddings = model.encode(sentences)
print(embeddings)

Sin sentence-transformers, puedes usar el modelo así: Primero, pasas tu entrada a través del modelo de transformers, luego debes aplicar la operación de agrupación correcta sobre las incrustaciones de palabras contextualizadas.

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

def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0]  # El primer elemento de model_output contiene todas las incrustaciones de tokens
    input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)

# Frases para las que queremos incrustaciones de oraciones
sentences = ['Esta es una oración de ejemplo', 'Cada oración es convertida']

# Cargar el modelo del Hub de HuggingFace
tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')
model = AutoModel.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')

# Tokenizar oraciones
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

# Calcular incrustaciones de tokens
with torch.no_grad():
    model_output = model(**encoded_input)

# Realizar agrupación
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

# Normalizar incrustaciones
sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)

print("Incrustaciones de oraciones:")
print(sentence_embeddings)

Funcionalidades

Transformadores de oraciones
Mapeo a un espacio vectorial denso de 384 dimensiones
Adecuado para tareas de agrupación o búsqueda semántica
Compatible con PyTorch, TensorFlow, Rust, ONNX y Safetensors
Incrustación de texto
Inferencia de incrustaciones textuales

Casos de uso

Recuperación de información
Agrupación de oraciones
Tareas de similitud de oraciones
Búsqueda semántica