all-MiniLM-L12-v2

sentence-transformers
Similitud de oraciones

Este es un modelo de sentence-transformers: mapea oraciones y párrafos a un espacio vectorial denso de 384 dimensiones y se puede usar para tareas como el agrupamiento o la búsqueda semántica.

Como usar

Uso (Sentence-Transformers)

Instalar sentence-transformers facilita el uso de este modelo:

pip install -U sentence-transformers

Entonces puedes usar el modelo de esta manera:

from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]

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

Uso (HuggingFace Transformers)

Sin sentence-transformers, puedes usar el modelo de esta manera: Primero, pasas tu entrada a través del modelo transformer, luego tienes que aplicar la operación de pooling adecuada sobre las incrustaciones de palabras contextualizadas.

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

# Media del Pooling - Toma en cuenta la máscara de atención para un promediado correcto
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)

# Oraciones para las que queremos obtener incrustaciones
sentences = ['This is an example sentence', 'Each sentence is converted']

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

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

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

# Realizar pooling
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

Similaridad de oraciones
PyTorch
Rust
Safetensors
Transformers
Extracción de características BERT
Inferencia de incrustaciones de texto
Puntos de Inferencia

Casos de uso

Recuperación de información
Agrupamiento
Tareas de similitud de oraciones