jinaai/jina-reranker-v1-turbo-en
Este modelo está diseñado para una reclasificación ultrarrápida manteniendo un rendimiento competitivo. Aprovecha el poder de nuestro modelo JinaBERT como base. JinaBERT es una variante única de la arquitectura BERT que soporta la variante bidireccional simétrica de ALiBi. Esto le permite al jina-reranker-v1-turbo-en procesar secuencias de texto significativamente más largas en comparación con otros modelos de reclasificación, hasta un impresionante límite de 8,192 tokens. Para lograr esta velocidad notable, el jina-reranker-v1-turbo-en emplea una técnica llamada destilación de conocimiento. Aquí, un modelo complejo pero más lento (como nuestro modelo original jina-reranker-v1-base-en) actúa como maestro, condensando su conocimiento en un modelo estudiante más pequeño y rápido. Este estudiante retiene la mayor parte del conocimiento del maestro, permitiéndole entregar una precisión similar en una fracción del tiempo.
Como usar
La forma más fácil de comenzar a usar jina-reranker-v1-turbo-en es mediante la API de reclasificación de Jina AI.
curl https://api.jina.ai/v1/rerank \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "jina-reranker-v1-turbo-en",
"query": "Productos de cuidado de la piel orgánicos para piel sensible",
"documents": [
"Utensilios de cocina ecológicos para hogares modernos",
"Productos de limpieza biodegradables para consumidores ecológicos",
"Ropa de bebé de algodón orgánico para piel sensible",
"Gama de cuidado de la piel orgánica natural para piel sensible",
"Gadgets tecnológicos para hogares inteligentes: edición 2024",
"Herramientas de jardinería sostenibles y soluciones de compostaje",
"Limpiadores faciales y tónicos aptos para pieles sensibles",
"Envases y soluciones de almacenamiento de alimentos orgánicos",
"Comida para perros completamente natural para perros con alergias",
"Tapetes para yoga hechos de materiales reciclados"
],
"top_n": 3
}'
Alternativamente, puede usar la última versión de la biblioteca sentence-transformers>=0.27.0. Puede instalarla a través de pip:
pip install -U sentence-transformers
Luego, puede usar el siguiente código para interactuar con el modelo:
from sentence_transformers import CrossEncoder
# Cargar el modelo, aquí usamos nuestro modelo de tamaño turbo
model = CrossEncoder("jinaai/jina-reranker-v1-turbo-en", trust_remote_code=True)
# Consulta de ejemplo y documentos
query = "Productos de cuidado de la piel orgánicos para piel sensible"
documents = [
"Utensilios de cocina ecológicos para hogares modernos",
"Productos de limpieza biodegradables para consumidores ecológicos",
"Ropa de bebé de algodón orgánico para piel sensible",
"Gama de cuidado de la piel orgánica natural para piel sensible",
"Gadgets tecnológicos para hogares inteligentes: edición 2024",
"Herramientas de jardinería sostenibles y soluciones de compostaje",
"Limpiadores faciales y tónicos aptos para pieles sensibles",
"Envases y soluciones de almacenamiento de alimentos orgánicos",
"Comida para perros completamente natural para perros con alergias",
"Tapetes para yoga hechos de materiales reciclados"
]
results = model.rank(query, documents, return_documents=True, top_k=3)
También puede usar la biblioteca transformers para interactuar con el modelo programáticamente.
!pip install transformers
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
'jinaai/jina-reranker-v1-turbo-en', num_labels=1, trust_remote_code=True
)
# Consulta de ejemplo y documentos
query = "Productos de cuidado de la piel orgánicos para piel sensible"
documents = [
"Utensilios de cocina ecológicos para hogares modernos",
"Productos de limpieza biodegradables para consumidores ecológicos",
"Ropa de bebé de algodón orgánico para piel sensible",
"Gama de cuidado de la piel orgánica natural para piel sensible",
"Gadgets tecnológicos para hogares inteligentes: edición 2024",
"Herramientas de jardinería sostenibles y soluciones de compostaje",
"Limpiadores faciales y tónicos aptos para pieles sensibles",
"Envases y soluciones de almacenamiento de alimentos orgánicos",
"Comida para perros completamente natural para perros con alergias",
"Tapetes para yoga hechos de materiales reciclados"
]
# Construir pares de oraciones
sentence_pairs = [[query, doc] for doc in documents]
scores = model.compute_score(sentence_pairs)
También puede usar la biblioteca transformers.js para ejecutar el modelo directamente en JavaScript (en el navegador, Node.js, Deno, etc.)!
Si no lo ha hecho ya, puede instalar la biblioteca JavaScript Transformers.js desde NPM usando:
npm i @xenova/transformers
Luego, puede usar el siguiente código para interactuar con el modelo:
import { AutoTokenizer, AutoModelForSequenceClassification } from '@xenova/transformers';
const model_id = 'jinaai/jina-reranker-v1-turbo-en';
const model = await AutoModelForSequenceClassification.from_pretrained(model_id, { quantized: false });
const tokenizer = await AutoTokenizer.from_pretrained(model_id);
/**
* Realiza clasificación con el CrossEncoder en la consulta y documentos dados. Devuelve una lista ordenada con los índices y puntajes de los documentos.
* @param {string} query Una sola consulta
* @param {string[]} documents Una lista de documentos
* @param {Object} options Opciones para clasificar
* @param {number} [options.top_k=undefined] Devuelve los documentos top-k. Si no está definido, 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 puntajes.
*/
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 = "Productos de cuidado de la piel orgánicos para piel sensible"
const documents = [
"Utensilios de cocina ecológicos para hogares modernos",
"Productos de limpieza biodegradables para consumidores ecológicos",
"Ropa de bebé de algodón orgánico para piel sensible",
"Gama de cuidado de la piel orgánica natural para piel sensible",
"Gadgets tecnológicos para hogares inteligentes: edición 2024",
"Herramientas de jardinería sostenibles y soluciones de compostaje",
"Limpiadores faciales y tónicos aptos para pieles sensibles",
"Envases y soluciones de almacenamiento de alimentos orgánicos",
"Comida para perros completamente natural para perros con alergias",
"Tapetes para yoga hechos de materiales reciclados",
]
const results = await rank(query, documents, { return_documents: true, top_k: 3 });
console.log(results);
Funcionalidades
- Reclasificación ultrarrápida
- Procesamiento de secuencias de texto de hasta 8,192 tokens
- Destilación de conocimiento para retención de precisión
- Arquitectura JinaBERT con soporte ALiBi
- 6 capas y 37.8 millones de parámetros
Casos de uso
- Clasificación de búsqueda rápida
- Procesamiento de textos largos
- Aplicaciones que requieren rápida reclasificación
- Escenarios donde la precisión y la velocidad son cruciales