gte-large

thenlper
Similitud de oraciones

Modelo de Embeddings Generales de Texto (General Text Embeddings - GTE). Hacia Embeddings Generales de Texto con Aprendizaje Contrastivo Multi-etapa. Los modelos GTE son entrenados por la Academia DAMO de Alibaba. Están principalmente basados en el marco de trabajo BERT y actualmente ofrecen tres tamaños diferentes de modelos, incluyendo GTE-large, GTE-base y GTE-small. Los modelos GTE se entrenan en un corpus a gran escala de pares de textos relevantes, cubriendo una amplia gama de dominios y escenarios. Esto permite que los modelos GTE se apliquen a varias tareas de texto en downstream, incluyendo recuperación de información, similitud textual semántica, reordenación de textos, etc.

Como usar

Ejemplo de código

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

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 = [
    'what is the capital of China?',
    'how to implement quick sort in python?',
    'Beijing',
    'sorting algorithms'
]

tokenizer = AutoTokenizer.from_pretrained('thenlper/gte-large')
model = AutoModel.from_pretrained('thenlper/gte-large')

# Tokenizar los textos de entrada
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'])

# (Opcional) normalizar embeddings
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:1] @ embeddings[1:].T) * 100
print(scores.tolist())

Uso con sentence-transformers

from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim

sentences = ['That is a happy person', 'That is a very happy person']

model = SentenceTransformer('thenlper/gte-large')
embeddings = model.encode(sentences)
print(cos_sim(embeddings[0], embeddings[1]))

Funcionalidades

Basado en BERT
Entrenado por Alibaba DAMO Academy
Disponible en tamaños large, base y small
Entrenado en un corpus a gran escala de pares de textos relevantes
Aplicable a múltiples tareas de texto downstream

Casos de uso

Recuperación de información
Similitud textual semántica
Reordenación de textos