Silver Retriever Base (v1)

ipipan
Similitud de oraciones

El modelo Silver Retriever codifica las oraciones o párrafos en polaco en un espacio vectorial denso de 768 dimensiones y puede ser utilizado para tareas como recuperación de documentos o búsqueda semántica. Se inició a partir del modelo HerBERT-base y se ajustó con los conjuntos de datos PolQA y MAUPQA durante 15,000 pasos con un tamaño de lote de 1,024. Consulte el documento SilverRetriever: Advancing Neural Passage Retrieval for Polish Question Answering para obtener más detalles.

Como usar

Preparación de entradas

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

  • Agregamos 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 '.'. Incluso si sus pasajes no tienen título, es 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

pip install -U sentence-transformers

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')
embeddings = model.encode(sentences)
print(embeddings)

Inferencia con HuggingFace Transformers

from transformers import AutoTokenizer, AutoModel
import torch

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

# Oraciones para las que queremos obtener embeddings 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 modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('ipipan/silver-retriever-base-v1')
model = AutoModel.from_pretrained('ipipan/silver-retriever-base-v1')

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

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

# Realizar pooling. En este caso, cls pooling.
sentence_embeddings = cls_pooling(model_output, encoded_input['attention_mask'])

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

Funcionalidades

Codificación de oraciones y párrafos en polaco
Espacio vectorial denso de 768 dimensiones
Recuperación de documentos
Búsqueda semántica
Ajustado en los conjuntos de datos PolQA y MAUPQA
Capacidad de recuperación neuronal

Casos de uso

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