La clasificación es una tarea común para los embeddings. Los embeddings de texto pueden categorizar texto en etiquetas predefinidas para detección de spam o análisis de sentimiento. Los embeddings multimodales como jina-clip-v1 pueden aplicarse al filtrado basado en contenido o anotación de etiquetas. Recientemente, la clasificación también se ha utilizado para enrutar consultas a LLMs apropiados según su complejidad y costo, por ejemplo, las consultas aritméticas simples podrían dirigirse a un modelo de lenguaje pequeño. Las tareas de razonamiento complejo podrían dirigirse a LLMs más potentes pero más costosos.
Hoy presentamos la nueva API de Clasificación de Jina AI's Search Foundation. Con soporte para clasificación zero-shot y few-shot en línea, está construida sobre nuestros últimos modelos de embedding como jina-embeddings-v3 y jina-clip-v1. La API de Clasificación se basa en el aprendizaje pasivo-agresivo en línea, permitiéndole adaptarse a nuevos datos en tiempo real. Los usuarios pueden comenzar con un clasificador zero-shot y usarlo inmediatamente. Luego pueden actualizar incrementalmente el clasificador enviando nuevos ejemplos o cuando ocurra un cambio conceptual. Esto permite una clasificación eficiente y escalable en varios tipos de contenido sin necesidad de datos etiquetados iniciales extensos. Los usuarios también pueden publicar sus clasificadores para uso público. Cuando lanzamos nuevos embeddings, como el próximo jina-clip-v2 multilingüe, los usuarios pueden acceder inmediatamente a ellos a través de la API de Clasificación, asegurando capacidades de clasificación actualizadas.

tagClasificación Zero-Shot
La API de Clasificación ofrece poderosas capacidades de clasificación zero-shot, permitiéndote categorizar texto o imagen sin entrenamiento previo con datos etiquetados. Cada clasificador comienza con capacidades zero-shot, que luego pueden mejorarse con datos de entrenamiento adicionales o actualizaciones - un tema que exploraremos en la siguiente sección.
tagEjemplo 1: Enrutamiento de Solicitudes LLM
Aquí hay un ejemplo usando la API de clasificación para el enrutamiento de consultas LLM:
curl https://api.jina.ai/v1/classify \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY_HERE" \
-d '{
"model": "jina-embeddings-v3",
"labels": [
"Simple task",
"Complex reasoning",
"Creative writing"
],
"input": [
"Calculate the compound interest on a principal of $10,000 invested for 5 years at an annual rate of 5%, compounded quarterly.",
"分析使用CRISPR基因编辑技术在人类胚胎中的伦理影响。考虑潜在的医疗益处和长期社会后果。",
"AIが自意識を持つディストピアの未来を舞台にした短編小説を書いてください。人間とAIの関係や意識の本質をテーマに探求してください。",
"Erklären Sie die Unterschiede zwischen Merge-Sort und Quicksort-Algorithmen in Bezug auf Zeitkomplexität, Platzkomplexität und Leistung in der Praxis.",
"Write a poem about the beauty of nature and its healing power on the human soul.",
"Translate the following sentence into French: The quick brown fox jumps over the lazy dog."
]
}'Este ejemplo demuestra el uso de jina-embeddings-v3 para enrutar consultas de usuarios en múltiples idiomas (inglés, chino, japonés y alemán) en tres categorías, que corresponden a tres diferentes tamaños de LLMs. El formato de respuesta de la API es el siguiente:
{
"usage": {"total_tokens": 256, "prompt_tokens": 256},
"data": [
{"object": "classification", "index": 0, "prediction": "Simple task", "score": 0.35216382145881653},
{"object": "classification", "index": 1, "prediction": "Complex reasoning", "score": 0.34310275316238403},
{"object": "classification", "index": 2, "prediction": "Creative writing", "score": 0.3487184941768646},
{"object": "classification", "index": 3, "prediction": "Complex reasoning", "score": 0.35207709670066833},
{"object": "classification", "index": 4, "prediction": "Creative writing", "score": 0.3638903796672821},
{"object": "classification", "index": 5, "prediction": "Simple task", "score": 0.3561534285545349}
]
}La respuesta incluye:
usage: Información sobre el uso de tokens.data: Un array de resultados de clasificación, uno para cada entrada.- Cada resultado contiene la etiqueta predicha (
prediction) y una puntuación de confianza (score). Elscorepara cada clase se calcula mediante normalización softmax - para zero-shot se basa en similitudes de coseno entre los embeddings de entrada y etiqueta bajo el task-LoRA declassification; mientras que para few-shot se basa en transformaciones lineales aprendidas del embedding de entrada para cada clase - resultando en probabilidades que suman 1 en todas las clases. - El
indexcorresponde a la posición de la entrada en la solicitud original.
- Cada resultado contiene la etiqueta predicha (
tagEjemplo 2: Categorizar Imagen y Texto
Exploremos un ejemplo multimodal usando jina-clip-v1. Este modelo puede clasificar tanto texto como imágenes, haciéndolo ideal para la categorización de contenido en varios tipos de medios. Considera la siguiente llamada a la API:
curl https://api.jina.ai/v1/classify \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY_HERE" \
-d '{
"model": "jina-clip-v1",
"labels": [
"Food and Dining",
"Technology and Gadgets",
"Nature and Outdoors",
"Urban and Architecture"
],
"input": [
{"text": "A sleek smartphone with a high-resolution display and multiple camera lenses"},
{"text": "Fresh sushi rolls served on a wooden board with wasabi and ginger"},
{"image": "https://picsum.photos/id/11/367/267"},
{"image": "https://picsum.photos/id/22/367/267"},
{"text": "Vibrant autumn leaves in a dense forest with sunlight filtering through"},
{"image": "https://picsum.photos/id/8/367/267"}
]
}'Observa cómo subimos imágenes en la solicitud, también puedes usar una cadena base64 para representar una imagen. La API devuelve los siguientes resultados de clasificación:
{
"usage": {"total_tokens": 12125, "prompt_tokens": 12125},
"data": [
{"object": "classification", "index": 0, "prediction": "Technology and Gadgets", "score": 0.30329811573028564},
{"object": "classification", "index": 1, "prediction": "Food and Dining", "score": 0.2765541970729828},
{"object": "classification", "index": 2, "prediction": "Nature and Outdoors", "score": 0.29503118991851807},
{"object": "classification", "index": 3, "prediction": "Urban and Architecture", "score": 0.2648046910762787},
{"object": "classification", "index": 4, "prediction": "Nature and Outdoors", "score": 0.3133063316345215},
{"object": "classification", "index": 5, "prediction": "Technology and Gadgets", "score": 0.27474141120910645}
]
}tagEjemplo 3: Detectar si Jina Reader Obtiene Contenido Genuino
Una aplicación interesante de la clasificación zero-shot es determinar la accesibilidad del sitio web a través de Jina Reader. Aunque esto podría parecer una tarea sencilla, es sorprendentemente compleja en la práctica. Los mensajes de bloqueo varían ampliamente de sitio a sitio, apareciendo en diferentes idiomas y citando varias razones (muros de pago, límites de velocidad, caídas del servidor). Esta diversidad hace que sea difícil confiar en regex o reglas fijas para capturar todos los escenarios.
import requests
import json
response1 = requests.get('https://r.jina.ai/https://jina.ai')
url = 'https://api.jina.ai/v1/classify'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer $YOUR_API_KEY_HERE'
}
data = {
'model': 'jina-embeddings-v3',
'labels': ['Blocked', 'Accessible'],
'input': [{'text': response1.text[:8000]}]
}
response2 = requests.post(url, headers=headers, data=json.dumps(data))
print(response2.text)El script obtiene contenido a través de r.jina.ai y lo clasifica como "Blocked" o "Accessible" usando la API de Clasificación. Por ejemplo, https://r.jina.ai/https://www.crunchbase.com/organization/jina-ai probablemente sería "Blocked" debido a restricciones de acceso, mientras que https://r.jina.ai/https://jina.ai debería ser "Accessible".
{"usage":{"total_tokens":185,"prompt_tokens":185},"data":[{"object":"classification","index":0,"prediction":"Blocked","score":0.5392698049545288}]}La API de Clasificación puede distinguir eficazmente entre contenido genuino y resultados bloqueados de Jina Reader.
Este ejemplo aprovecha jina-embeddings-v3 y ofrece una forma rápida y automatizada de monitorear la accesibilidad del sitio web, útil para sistemas de agregación de contenido o web scraping, especialmente en entornos multilingües.
tagEjemplo 4: Filtrado de Declaraciones y Opiniones para Fundamentación
Otra aplicación intrigante de la clasificación zero-shot es filtrar afirmaciones tipo declaración de las opiniones en documentos largos. Tenga en cuenta que el clasificador por sí mismo no puede determinar si algo es factualmente verdadero. En su lugar, identifica texto que está escrito en el estilo de una declaración factual, que luego puede verificarse a través de una API de verificación, que suele ser bastante costosa. Este proceso de dos pasos es clave para la verificación efectiva de hechos: primero filtrar todas esas opiniones y sentimientos, luego enviar las declaraciones restantes para su verificación.

Considere este párrafo sobre la Carrera Espacial en los años 60:
The Space Race of the 1960s was a breathtaking testament to human ingenuity. When the Soviet Union launched Sputnik 1 on October 4, 1957, it sent shockwaves through American society, marking the undeniable start of a new era. The silvery beeping of that simple satellite struck fear into the hearts of millions, as if the very stars had betrayed Western dominance. NASA was founded in 1958 as America's response, and they poured an astounding $28 billion into the Apollo program between 1960 and 1973. While some cynics claimed this was a waste of resources, the technological breakthroughs were absolutely worth every penny spent. On July 20, 1969, Neil Armstrong and Buzz Aldrin achieved the most magnificent triumph in human history by walking on the moon, their footprints marking humanity's destiny among the stars. The Soviet space program, despite its early victories, ultimately couldn't match the superior American engineering and determination. The moon landing was not just a victory for America - it represented the most inspiring moment in human civilization, proving that our species was meant to reach beyond our earthly cradle.
Este texto mezcla intencionalmente diferentes tipos de escritura - desde afirmaciones tipo declaración (como "Sputnik 1 fue lanzado el 4 de octubre de 1959"), hasta opiniones claras ("testimonio impresionante"), lenguaje emocional ("infundió miedo en los corazones"), y afirmaciones interpretativas ("marcando el innegable inicio de una nueva era").
El trabajo del clasificador zero-shot es puramente semántico - identifica si un fragmento de texto está escrito como una declaración o como una opinión/interpretación. Por ejemplo, "The Soviet Union launched Sputnik 1 on October 4, 1959" está escrito como una declaración, mientras que "The Space Race was a breathtaking testament" está claramente escrito como una opinión.
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {API_KEY}'
}
# Step 1: Split text and classify
chunks = [chunk.strip() for chunk in text.split('.') if chunk.strip()]
labels = [
"subjective, opinion, feeling, personal experience, creative writing, position",
"fact"
]
# Classify chunks
classify_response = requests.post(
'https://api.jina.ai/v1/classify',
headers=headers,
json={
"model": "jina-embeddings-v3",
"input": [{"text": chunk} for chunk in chunks],
"labels": labels
}
)
# Sort chunks
subjective_chunks = []
factual_chunks = []
for chunk, classification in zip(chunks, classify_response.json()['data']):
if classification['prediction'] == labels[0]:
subjective_chunks.append(chunk)
else:
factual_chunks.append(chunk)
print("\nSubjective statements:", subjective_chunks)
print("\nFactual statements:", factual_chunks)Y obtendrás:
Subjective statements: ['The Space Race of the 1960s was a breathtaking testament to human ingenuity', 'The silvery beeping of that simple satellite struck fear into the hearts of millions, as if the very stars had betrayed Western dominance', 'While some cynics claimed this was a waste of resources, the technological breakthroughs were absolutely worth every penny spent', "The Soviet space program, despite its early victories, ultimately couldn't match the superior American engineering and determination"]
Factual statements: ['When the Soviet Union launched Sputnik 1 on October 4, 1957, it sent shockwaves through American society, marking the undeniable start of a new era', "NASA was founded in 1958 as America's response, and they poured an astounding $28 billion into the Apollo program between 1960 and 1973", "On July 20, 1969, Neil Armstrong and Buzz Aldrin achieved the most magnificent triumph in human history by walking on the moon, their footprints marking humanity's destiny among the stars", 'The moon landing was not just a victory for America - it represented the most inspiring moment in human civilization, proving that our species was meant to reach beyond our earthly cradle']Recuerda, el hecho de que algo esté escrito como una declaración no significa que sea verdadero. Por eso necesitamos el segundo paso - alimentar estas afirmaciones tipo declaración a una API de verificación para la verificación real de los hechos. Por ejemplo, verifiquemos esta declaración: "NASA was founded in 1958 as America's response, and they poured an astounding $28 billion into the Apollo program between 1960 and 1973" con el código siguiente.
ground_headers = {
'Accept': 'application/json',
'Authorization': f'Bearer {API_KEY}'
}
ground_response = requests.get(
f'https://g.jina.ai/{quote(factual_chunks[1])}',
headers=ground_headers
)
print(ground_response.json())que te da:
{'code': 200, 'status': 20000, 'data': {'factuality': 1, 'result': True, 'reason': "The statement is supported by multiple references confirming NASA's founding in 1958 and the significant financial investment in the Apollo program. The $28 billion figure aligns with the data provided in the references, which detail NASA's expenditures during the Apollo program from 1960 to 1973. Additionally, the context of NASA's budget peaking during this period further substantiates the claim. Therefore, the statement is factually correct based on the available evidence.", 'references': [{'url': 'https://en.wikipedia.org/wiki/Budget_of_NASA', 'keyQuote': "NASA's budget peaked in 1964–66 when it consumed roughly 4% of all federal spending. The agency was building up to the first Moon landing and the Apollo program was a top national priority, consuming more than half of NASA's budget.", 'isSupportive': True}, {'url': 'https://en.wikipedia.org/wiki/NASA', 'keyQuote': 'Established in 1958, it succeeded the National Advisory Committee for Aeronautics (NACA)', 'isSupportive': True}, {'url': 'https://nssdc.gsfc.nasa.gov/planetary/lunar/apollo.html', 'keyQuote': 'More details on Apollo lunar landings', 'isSupportive': True}, {'url': 'https://usafacts.org/articles/50-years-after-apollo-11-moon-landing-heres-look-nasas-budget-throughout-its-history/', 'keyQuote': 'NASA has spent its money so far.', 'isSupportive': True}, {'url': 'https://www.nasa.gov/history/', 'keyQuote': 'Discover the history of our human spaceflight, science, technology, and aeronautics programs.', 'isSupportive': True}, {'url': 'https://www.nasa.gov/the-apollo-program/', 'keyQuote': 'Commander for Apollo 11, first to step on the lunar surface.', 'isSupportive': True}, {'url': 'https://www.planetary.org/space-policy/cost-of-apollo', 'keyQuote': 'A rich data set tracking the costs of Project Apollo, free for public use. Includes unprecedented program-by-program cost breakdowns.', 'isSupportive': True}, {'url': 'https://www.statista.com/statistics/1342862/nasa-budget-project-apollo-costs/', 'keyQuote': 'NASA's monetary obligations compared to Project Apollo's total costs from 1960 to 1973 (in million U.S. dollars)', 'isSupportive': True}], 'usage': {'tokens': 10640}}}Con una puntuación de factualidad de 1, la API de verificación confirma que esta declaración está bien fundamentada en hechos históricos. Este enfoque abre posibilidades fascinantes, desde analizar documentos históricos hasta verificar artículos de noticias en tiempo real. Al combinar la clasificación zero-shot con la verificación de hechos, creamos un potente pipeline para el análisis automatizado de información - primero filtrando las opiniones, luego verificando las declaraciones restantes contra fuentes confiables.
tagObservaciones sobre la Clasificación Zero-Shot
Uso de Etiquetas Semánticas
Cuando se trabaja con clasificación zero-shot, es crucial usar etiquetas semánticamente significativas en lugar de símbolos abstractos o números. Por ejemplo, "Technology", "Nature", y "Food" son mucho más efectivas que "Class1", "Class2", "Class3" o "0", "1", "2". "Positive sentiment" es más efectivo que "Positive" y "True". Los modelos de embeddings entienden relaciones semánticas, por lo que las etiquetas descriptivas permiten al modelo aprovechar su conocimiento pre-entrenado para clasificaciones más precisas. Nuestro post anterior explora cómo crear etiquetas semánticas efectivas para mejores resultados de clasificación.

Naturaleza sin Estado
La clasificación zero-shot es fundamentalmente sin estado, a diferencia de los enfoques tradicionales de machine learning. Esto significa que dados los mismos inputs y modelo, los resultados siempre serán consistentes, independientemente de quién use la API o cuándo. El modelo no aprende ni se actualiza basado en las clasificaciones que realiza; cada tarea es independiente. Esto permite su uso inmediato sin configuración o entrenamiento, y ofrece flexibilidad para cambiar categorías entre llamadas a la API.
Esta naturaleza sin estado contrasta fuertemente con los enfoques de few-shot y aprendizaje online, que exploraremos a continuación. En esos métodos, los modelos pueden adaptarse a nuevos ejemplos, potencialmente produciendo diferentes resultados a lo largo del tiempo o entre usuarios.
tagClasificación Few-Shot
La clasificación few-shot ofrece un enfoque fácil para crear y actualizar clasificadores con datos etiquetados mínimos. Este método proporciona dos endpoints principales: train y classify.
El endpoint train te permite crear o actualizar un clasificador con un pequeño conjunto de ejemplos. Tu primera llamada a train devolverá unclassifier_id, que puedes usar para entrenamientos posteriores cuando tengas nuevos datos, notes cambios en la distribución de datos o necesites agregar nuevas clases. Este enfoque flexible permite que tu clasificador evolucione con el tiempo, adaptándose a nuevos patrones y categorías sin empezar desde cero.
Similar a la clasificación zero-shot, usarás el endpoint classify para hacer predicciones. La principal diferencia es que necesitarás incluir tu classifier_id en la solicitud, pero no necesitarás proporcionar etiquetas candidatas ya que son parte de tu modelo entrenado.
tagEjemplo: Entrenar un Asignador de Tickets de Soporte
Exploremos estas características a través de un ejemplo de clasificación de tickets de soporte al cliente para asignarlos a diferentes equipos en una startup tecnológica en rápido crecimiento.
Entrenamiento Inicial
curl -X 'POST' \
'https://api.jina.ai/v1/train' \
-H 'accept: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"model": "jina-embeddings-v3",
"access": "private",
"input": [
{
"text": "I cant log into my account after the latest app update.",
"label": "team1"
},
{
"text": "My subscription renewal failed due to an expired credit card.",
"label": "team2"
},
{
"text": "How do I export my data from the platform?",
"label": "team3"
}
],
"num_iters": 10
}'Ten en cuenta que en el aprendizaje few-shot, podemos usar team1 team2 como etiquetas de clase aunque no tengan un significado semántico inherente. En la respuesta, obtendrás un classifier_id que representa este clasificador recién creado.
{
"classifier_id": "918c0846-d6ae-4f34-810d-c0c7a59aee14",
"num_samples": 3,
}
Anota el classifier_id, lo necesitarás para referirte a este clasificador más adelante.
Actualizando el Clasificador para Adaptarse a la Reestructuración del Equipo
A medida que la empresa de ejemplo crece, surgen nuevos tipos de problemas y la estructura del equipo también cambia. La belleza de la clasificación few-shot radica en su capacidad para adaptarse rápidamente a estos cambios. Podemos actualizar fácilmente el clasificador proporcionando el classifier_id y nuevos ejemplos, introduciendo nuevas categorías de equipo (por ejemplo, team4) o reasignando tipos de problemas existentes a diferentes equipos a medida que la organización evoluciona.
curl -X 'POST' \
'https://api.jina.ai/v1/train' \
-H 'accept: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"classifier_id": "b36b7b23-a56c-4b52-a7ad-e89e8f5439b6",
"input": [
{
"text": "Im getting a 404 error when trying to access the new AI chatbot feature.",
"label": "team4"
},
{
"text": "The latest security patch is conflicting with my company firewall.",
"label": "team1"
},
{
"text": "I need help setting up SSO for my organization account.",
"label": "team5"
}
],
"num_iters": 10
}'Usando un Clasificador Entrenado
Durante la inferencia, solo necesitas proporcionar el texto de entrada y el classifier_id. La API maneja el mapeo entre tu entrada y las clases previamente entrenadas, devolviendo la etiqueta más apropiada según el estado actual del clasificador.
curl -X 'POST' \
'https://api.jina.ai/v1/classify' \
-H 'accept: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"classifier_id": "b36b7b23-a56c-4b52-a7ad-e89e8f5439b6",
"input": [
{
"text": "The new feature is causing my dashboard to load slowly."
},
{
"text": "I need to update my billing information for tax purposes."
}
]
}'El modo few-shot tiene dos parámetros únicos.
tagParámetro num_iters
El parámetro num_iters ajusta qué tan intensivamente el clasificador aprende de tus ejemplos de entrenamiento. Si bien el valor predeterminado de 10 funciona bien en la mayoría de los casos, puedes ajustar estratégicamente este valor según tu confianza en los datos de entrenamiento. Para ejemplos de alta calidad que son cruciales para la clasificación, aumenta num_iters para reforzar su importancia. Por el contrario, para ejemplos menos confiables, reduce num_iters para minimizar su impacto en el rendimiento del clasificador. Este parámetro también se puede usar para implementar aprendizaje consciente del tiempo, donde los ejemplos más recientes obtienen recuentos de iteración más altos para adaptarse a patrones en evolución mientras se mantiene el conocimiento histórico.
tagParámetro access
El parámetro access te permite controlar quién puede usar tu clasificador. Por defecto, los clasificadores son privados y solo accesibles para ti. Establecer el acceso como "public" permite que cualquiera con tu classifier_id lo use con su propia clave API y cuota de tokens. Esto permite compartir clasificadores mientras se mantiene la privacidad - los usuarios no pueden ver tus datos de entrenamiento o configuración, y tú no puedes ver sus solicitudes de clasificación. Este parámetro solo es relevante para la clasificación few-shot, ya que los clasificadores zero-shot no tienen estado. No hay necesidad de compartir clasificadores zero-shot ya que las solicitudes idénticas siempre producirán las mismas respuestas independientemente de quién las haga.
tagObservaciones sobre el Aprendizaje Few-Shot
La clasificación few-shot en nuestra API tiene algunas características únicas que vale la pena mencionar. A diferencia de los modelos tradicionales de aprendizaje automático, nuestra implementación utiliza aprendizaje en línea de una sola pasada - los ejemplos de entrenamiento se procesan para actualizar los pesos del clasificador pero no se almacenan después. Esto significa que no puedes recuperar datos históricos de entrenamiento, pero garantiza una mejor privacidad y eficiencia de recursos.
Si bien el aprendizaje few-shot es poderoso, requiere un período de calentamiento para superar la clasificación zero-shot. Nuestros puntos de referencia muestran que 200-400 ejemplos de entrenamiento típicamente proporcionan suficientes datos para ver un rendimiento superior. Sin embargo, no necesitas proporcionar ejemplos para todas las clases desde el principio - el clasificador puede escalar para acomodar nuevas clases con el tiempo. Solo ten en cuenta que las clases recién agregadas pueden experimentar un breve período de inicio en frío o desequilibrio de clases hasta que se proporcionen suficientes ejemplos.
tagEvaluación Comparativa
Para nuestro análisis comparativo, evaluamos los enfoques zero-shot y few-shot en diversos conjuntos de datos, incluyendo tareas de clasificación de texto como detección de emociones (6 clases) y detección de spam (2 clases), así como tareas de clasificación de imágenes como CIFAR10 (10 clases). El marco de evaluación utilizó divisiones estándar de entrenamiento-prueba, donde zero-shot no requería datos de entrenamiento y few-shot utilizaba porciones del conjunto de entrenamiento. Rastreamos métricas clave como el tamaño del entrenamiento y el recuento de clases objetivo, permitiendo comparaciones controladas. Para garantizar la robustez, particularmente para el aprendizaje few-shot, cada entrada pasó por múltiples iteraciones de entrenamiento. Comparamos estos enfoques modernos con líneas base tradicionales como SVM Lineal y SVM RBF para proporcionar contexto para su rendimiento.
Se muestran las puntuaciones F1. Para la configuración completa de la evaluación comparativa, consulta esta hoja de cálculo de Google.
Las gráficas F1 revelan patrones interesantes en tres tareas. Como era de esperar, la clasificación zero-shot muestra un rendimiento constante desde el inicio, independientemente del tamaño de los datos de entrenamiento. En contraste, el aprendizaje few-shot demuestra una curva de aprendizaje rápida, comenzando inicialmente más bajo pero superando rápidamente el rendimiento zero-shot a medida que aumentan los datos de entrenamiento. Ambos métodos finalmente alcanzan una precisión comparable alrededor de las 400 muestras, manteniendo few-shot una ligera ventaja. Este patrón se mantiene tanto en escenarios de clasificación multiclase como de imágenes, sugiriendo que el aprendizaje few-shot puede ser particularmente ventajoso cuando hay datos de entrenamiento disponibles, mientras que zero-shot ofrece un rendimiento confiable incluso sin ejemplos de entrenamiento. La tabla siguiente resume la diferencia entre la clasificación zero-shot y few-shot desde el punto de vista del usuario de la API.
| Feature | Zero-shot | Few-shot |
|---|---|---|
| Primary Use Case | Default solution for general classification | For data outside v3/clip-v1's domain or time-sensitive data |
| Training Data Required | No | Yes |
| Labels Required in /train | N/A | Yes |
| Labels Required in /classify | Yes | No |
| Classifier ID Required | No | Yes |
| Semantic Labels Required | Yes | No |
| State Management | Stateless | Stateful |
| Continuous Model Updates | No | Yes |
| Access Control | No | Yes |
| Maximum Classes | 256 | 16 |
| Maximum Classifiers | N/A | 16 |
| Maximum Inputs per Request | 1,024 | 1,024 |
| Maximum Token Length per Input | 8,192 tokens | 8,192 tokens |
tagResumen
La API de Classifier ofrece una potente clasificación zero-shot y few-shot tanto para contenido de texto como de imágenes, impulsada por modelos de embedding avanzados como jina-embeddings-v3 y jina-clip-v1. Nuestras pruebas de rendimiento muestran que la clasificación zero-shot proporciona un rendimiento confiable sin datos de entrenamiento, convirtiéndola en un excelente punto de partida para la mayoría de las tareas con soporte para hasta 256 clases. Si bien el aprendizaje few-shot puede lograr una precisión ligeramente mejor con datos de entrenamiento, recomendamos comenzar con la clasificación zero-shot por sus resultados inmediatos y flexibilidad.
La versatilidad de la API admite varias aplicaciones, desde el enrutamiento de consultas LLM hasta la detección de accesibilidad web y la categorización de contenido multilingüe. Ya sea que comience con zero-shot o haga la transición a few-shot learning para casos especializados, la API mantiene una interfaz consistente para una integración perfecta en su pipeline. Estamos particularmente entusiasmados por ver cómo los desarrolladores aprovecharán esta API en sus aplicaciones, y estaremos implementando soporte para nuevos modelos de embedding como jina-clip-v2 en el futuro.






