mxbai-rerank-base-v1

mixedbread-ai
Clasificación de texto

Este es el modelo base en nuestra familia de poderosos modelos reranker. Puede obtener más información sobre los modelos en nuestra publicación de blog. Hemos desarrollado tres modelos: mxbai-rerank-xsmall-v1, mxbai-rerank-base-v1 (🍞) y mxbai-rerank-large-v1. Actualmente, la mejor manera de usar nuestros modelos es con la versión más reciente de sentence-transformers. Nuestras modelos están diseñados para mejorar su búsqueda, funcionando extremadamente bien en combinación con la búsqueda por palabras clave y pudiendo incluso superar a los sistemas de búsqueda semántica en muchos casos.

Como usar

Actualmente, la mejor manera de usar nuestros modelos es con la versión más reciente de sentence-transformers.

pip install -U sentence-transformers

Supongamos que tiene una consulta y desea reordenar un conjunto de documentos. Puede hacerlo con solo una línea de código:

from sentence_transformers import CrossEncoder

# Cargar el modelo, aquí usamos nuestro modelo de tamaño base
model = CrossEncoder('mixedbread-ai/mxbai-rerank-base-v1')

# Consulta de ejemplo y documentos
query = '¿Quién escribió Matar a un ruiseñor?'
documents = [
"'Matar a un ruiseñor' es una novela de Harper Lee publicada en 1960. Fue inmediatamente exitosa, ganando el Premio Pulitzer, y se ha convertido en un clásico de la literatura americana moderna.",
"La novela 'Moby-Dick' fue escrita por Herman Melville y publicada por primera vez en 1851. Se considera una obra maestra de la literatura americana y trata temas complejos de obsesión, venganza y el conflicto entre el bien y el mal.",
"Harper Lee, una novelista americana conocida principalmente por su novela 'Matar a un ruiseñor', nació en 1926 en Monroeville, Alabama. Recibió el Premio Pulitzer de Ficción en 1961.",
"Jane Austen fue una novelista inglesa conocida principalmente por sus seis novelas principales, que interpretan, critican y comentan sobre la nobleza británica de finales del siglo XVIII.",
"La serie 'Harry Potter', que consta de siete novelas de fantasía escritas por la autora británica J.K. Rowling, está entre los libros más populares y aclamados por la crítica de la era moderna.",
"'El gran Gatsby', una novela escrita por el autor americano F. Scott Fitzgerald, se publicó en 1925. La historia está ambientada en la Era del Jazz y sigue la vida del millonario Jay Gatsby y su búsqueda por Daisy Buchanan."
]

# Obtener las puntuaciones
results = model.rank(query, documents, return_documents=True, top_k=3)

Ejemplo en JavaScript:

install transformers.js
npm i @xenova/transformers
Supongamos que tiene una consulta y desea reordenar un conjunto de documentos. En JavaScript, necesita agregar una función:
import { AutoTokenizer, AutoModelForSequenceClassification } from '@xenova/transformers';

const model_id = 'mixedbread-ai/mxbai-rerank-base-v1';
const model = await AutoModelForSequenceClassification.from_pretrained(model_id);
const tokenizer = await AutoTokenizer.from_pretrained(model_id);

/**
* Realiza una clasificación con el CrossEncoder en la consulta y documentos dados. Devuelve una lista ordenada con los índices de documentos y puntuaciones.
* @param {string} query Una sola consulta
* @param {string[]} documents Una lista de documentos
* @param {Object} options Opciones para la clasificación
* @param {number} [options.top_k=undefined] Devuelve los top-k documentos. Si es indefinido, se devuelven todos los documentos.
* @param {number} [options.return_documents=false] Si es verdadero, también devuelve los documentos. Si es falso, solo devuelve los índices y puntuaciones.
*/
async function rank(query, documents, {
top_k = undefined,
return_documents = false,
} = {}) {
const inputs = tokenizer(
new Array(documents.length).fill(query),
{
text_pair: documents,
padding: true,
truncation: true,
}
)
const { logits } = await model(inputs);
return logits
.sigmoid()
.tolist()
.map(([score], i) => ({
corpus_id: i,
score,
...(return_documents ? { text: documents[i] } : {})
}))
.sort((a, b) => b.score - a.score)
.slice(0, top_k);
}

// Ejemplo de uso:
const query = "¿Quién escribió 'Matar a un ruiseñor'?"
const documents = [
"'Matar a un ruiseñor' es una novela de Harper Lee publicada en 1960. Fue inmediatamente exitosa, ganando el Premio Pulitzer, y se ha convertido en un clásico de la literatura americana moderna.",
"La novela 'Moby-Dick' fue escrita por Herman Melville y publicada por primera vez en 1851. Se considera una obra maestra de la literatura americana y trata temas complejos de obsesión, venganza y el conflicto entre el bien y el mal.",
"Harper Lee, una novelista americana conocida principalmente por su novela 'Matar a un ruiseñor', nació en 1926 en Monroeville, Alabama. Recibió el Premio Pulitzer de Ficción en 1961.",
"Jane Austen fue una novelista inglesa conocida principalmente por sus seis novelas principales, que interpretan, critican y comentan sobre la nobleza británica de finales del siglo XVIII.",
"La serie 'Harry Potter', que consta de siete novelas de fantasía escritas por la autora británica J.K. Rowling, está entre los libros más populares y aclamados por la crítica de la era moderna.",
"'El gran Gatsby', una novela escrita por el autor americano F. Scott Fitzgerald, fue publicada en 1925. La historia está ambientada en la Era del Jazz y sigue la vida del millonario Jay Gatsby y su búsqueda por Daisy Buchanan."
]

const results = await rank(query, documents, { return_documents: true, top_k: 3 });
console.log(results);

Usando API:

from mixedbread_ai.client import MixedbreadAI

mxbai = MixedbreadAI(api_key='{MIXEDBREAD_API_KEY}')

res = mxbai.reranking(
model='mixedbread-ai/mxbai-rerank-large-v1',
query='¿Quién es el autor de Matar a un ruiseñor?',
input=[
"Matar a un ruiseñor es una novela de Harper Lee publicada en 1960. Fue inmediatamente exitosa, ganando el Premio Pulitzer, y se ha convertido en un clásico de la literatura americana moderna.",
"La novela 'Moby-Dick' fue escrita por Herman Melville y publicada por primera vez en 1851. Se considera una obra maestra de la literatura americana y trata temas complejos de obsesión, venganza y el conflicto entre el bien y el mal.",
"Harper Lee, una novelista americana conocida principalmente por su novela 'Matar a un ruiseñor', nació en 1926 en Monroeville, Alabama. Recibió el Premio Pulitzer de Ficción en 1961.",
"Jane Austen fue una novelista inglesa conocida principalmente por sus seis novelas principales, que interpretan, critican y comentan sobre la nobleza británica de finales del siglo XVIII.",
"La serie 'Harry Potter', que consta de siete novelas de fantasía escritas por la autora británica J.K. Rowling, está entre los libros más populares y aclamados por la crítica de la era moderna.",
"'El gran Gatsby', una novela escrita por el autor americano F. Scott Fitzgerald, fue publicada en 1925. La historia está ambientada en la Era del Jazz y sigue la vida del millonario Jay Gatsby y su búsqueda por Daisy Buchanan."
],
top_k=3,
return_input=false
)

print(res.data)

Funcionalidades

Clasificación de texto
Transformers
Compatibilidad con ONNX
Compatibilidad con Safetensors
Implementación en Transformers.js
Reranker

Casos de uso

Reordenar un conjunto de documentos dada una consulta
Mejorar la precisión de búsqueda en combinación con la búsqueda por palabras clave
Superar sistemas de búsqueda semántica en muchos casos

Recibe las últimas noticias y actualizaciones sobre el mundo de IA directamente en tu bandeja de entrada.