gte-base-en-v1.5

Alibaba-NLP
Similitud de oraciones

Presentamos la serie gte-v1.5, mejoras de las incrustaciones gte que soportan una longitud de contexto de hasta 8192, mientras se mejora el rendimiento del modelo. Los modelos están construidos sobre la columna vertebral del codificador transformer++ (BERT + RoPE + GLU). La serie gte-v1.5 logra puntuaciones de última generación en el punto de referencia MTEB dentro de la misma categoría de tamaño de modelo y proporciona resultados competitivos en las pruebas de recuperación de contextos largos de LoCo. También presentamos el gte-Qwen1.5-7B-instruct, un modelo de instrucción multilingüe ajustado de última generación que ocupó el segundo lugar en MTEB y el primero en C-MTEB.

Como usar

# Requiere transformers>=4.36.0
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer

input_texts = [
"¿Cuál es la capital de China?",
"¿Cómo implementar quick sort en python?",
"Beijing",
"algoritmos de clasificación"
]

model_path = 'Alibaba-NLP/gte-base-en-v1.5'
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True)

# Tokenizar los textos de entrada
batch_dict = tokenizer(input_texts, max_length=8192, padding=True, truncation=True, return_tensors='pt')

outputs = model(**batch_dict)
embeddings = outputs.last_hidden_state[:, 0]

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

Es recomendable instalar xformers y habilitar unpadding para la aceleración, consulte enable-unpadding-and-xformers.

# Requiere sentence_transformers>=2.7.0
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim

sentences = ['Esa es una persona feliz', 'Esa es una persona muy feliz']

model = SentenceTransformer('Alibaba-NLP/gte-base-en-v1.5', trust_remote_code=True)
embeddings = model.encode(sentences)
print(cos_sim(embeddings[0], embeddings[1]))
// npm i @xenova/transformers
import { pipeline, dot } from '@xenova/transformers';

// Crear tubería de extracción de características
const extractor = await pipeline('feature-extraction', 'Alibaba-NLP/gte-base-en-v1.5', {
quantized: false, // Comente esta línea para usar la versión cuantizada
});

// Generar incrustaciones de oraciones
const sentences = [
"¿Cuál es la capital de China?",
"¿Cómo implementar quick sort en python?",
"Beijing",
"algoritmos de clasificación"
]
const output = await extractor(sentences, { normalize: true, pooling: 'cls' });

// Calcular puntuaciones de similitud
const [source_embeddings, ...document_embeddings ] = output.tolist();
const similarities = document_embeddings.map(x => 100 * dot(source_embeddings, x));
console.log(similarities); // [34.504930869007296, 64.03973265120138, 19.520042686034362]

Funcionalidades

Incrustaciones mejoradas que soportan una longitud de contexto de hasta 8192
Construido sobre la columna vertebral del codificador transformer++ (BERT + RoPE + GLU)
Puntuaciones de última generación en el punto de referencia MTEB
Competitivo en las pruebas de recuperación de contextos largos de LoCo

Casos de uso

Clasificación de texto
Recuperación de información de contextos largos
Representación y reordenamiento de texto multilingüe
Mejorar aplicaciones basadas en procesamiento de lenguaje natural