Silver Retriever Base (v1.1)

ipipan
Similitud de oraciones

El modelo Silver Retriever codifica oraciones o párrafos en polaco en un espacio vectorial denso de 768 dimensiones y puede usarse para tareas como la recuperación de documentos o la búsqueda semántica. Se inicializó a partir del modelo HerBERT-base y se ajustó con los conjuntos de datos PolQA y MAUPQA durante 8,000 pasos con un tamaño de lote de 8,192.

Como usar

Preparar entradas

El modelo se entrenó en pares de preguntas y pasajes y funciona mejor cuando la entrada tiene el mismo formato que el utilizado durante el entrenamiento:

  • Añadimos la frase Pytanie: al comienzo de la pregunta.
  • Los pasajes de entrenamiento consistían en el título y el texto concatenados con el token especial. Aunque tus pasajes no tengan un título, sigue siendo beneficioso prefijar un pasaje con el token.
  • Aunque usamos el producto punto durante el entrenamiento, el modelo generalmente funciona mejor con la distancia coseno.

Inferencia con Sentence-Transformers

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

pip install -U sentence-transformers

Después puedes usar el modelo así:

from sentence_transformers import SentenceTransformer
sentences = [
    "Pytanie: W jakim mieście urodził się Zbigniew Herbert?",
    "Zbigniew HerbertZbigniew Bolesław Ryszard Herbert (ur. 29 października 1924 we Lwowie, zm. 28 lipca 1998 w Warszawie) – polski poeta, eseista i dramaturg.",
]

model = SentenceTransformer('ipipan/silver-retriever-base-v1.1')
embeddings = model.encode(sentences)
print(embeddings)

Inferencia con HuggingFace Transformers

Sin sentence-transformers, puedes usar el modelo así: primero, pasas tu entrada a través del modelo transformer, luego debes aplicar la operación de agrupamiento correcta en la parte superior de las incrustaciones de palabras contextualizadas.

from transformers import AutoTokenizer, AutoModel
import torch

def cls_pooling(model_output, attention_mask):
    return model_output[0][:,0]

# Frases para las que queremos las incrustaciones de oraciones
sentences = [
    "Pytanie: W jakim mieście urodził się Zbigniew Herbert?",
    "Zbigniew HerbertZbigniew Bolesław Ryszard Herbert (ur. 29 października 1924 we Lwowie, zm. 28 lipca 1998 w Warszawie) – polski poeta, eseista i dramaturg.",
]
# Cargar el modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('ipipan/silver-retriever-base-v1.1')
model = AutoModel.from_pretrained('ipipan/silver-retriever-base-v1.1')

# Tokenizar frases
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 agrupamiento. En este caso, agrupamiento cls.
sentence_embeddings = cls_pooling(model_output, encoded_input['attention_mask'])

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

Funcionalidades

Codificación de oraciones o párrafos en polaco
Espacio vectorial denso de 768 dimensiones
Adecuado para tareas de recuperación de documentos y búsqueda semántica
Inicializado a partir del modelo HerBERT-base
Ajustado en los conjuntos de datos PolQA y MAUPQA
Entrenado durante 8,000 pasos
Tamaño de lote de 8,192

Casos de uso

Recuperación de documentos
Búsqueda semántica
Respuesta a preguntas en polaco