sentence-transformers/all-MiniLM-L6-v2
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