Elastic
Jina AI
Modelli
API
keyboard_arrow_down
Lettore
Leggi gli URL e cerca sul web per ottenere LLM più approfonditi.
Incorporamenti
Incorporamenti multimodali multilingue.
Riclassificazione
Strumento di riordinamento per massimizzare la pertinenza dei risultati di ricerca.
Elastic Inference Service
Esegui i modelli Jina in modo nativo all'interno di Elasticsearch.
MCP
terminal
CLI
article
llms.txt
smart_toy
Agenti
data_object
Schema
menu_book
Documenti
Login
login
Classificazione Zero-Shot
Classificazione Few-Shot
Benchmark
Riepilogo
star
In primo piano
comunicato stampa
ottobre 22, 2024

API Jina Classifier per la Classificazione Zero-Shot e Few-Shot ad Alte Prestazioni

La nuova API di Classifier offre la classificazione zero-shot e few-shot per testo e immagini. Inizia subito a classificare i contenuti oppure addestrala con i tuoi esempi.
Abstract artistic portrait using a montage of colorful squares and scattered text.
Jina AI • 16 minuti letti

La classificazione è un'attività downstream comune per gli embedding. Gli embedding di testo possono categorizzare il testo in etichette predefinite per il rilevamento dello spam o l'analisi del sentiment. Gli embedding multimodali come jina-clip-v1 possono essere applicati al filtraggio basato sui contenuti o all'annotazione dei tag. Recentemente, la classificazione è stata utilizzata anche per instradare le query agli LLM appropriati in base alla complessità e al costo, ad esempio le query aritmetiche semplici potrebbero essere indirizzate a un modello linguistico piccolo. I compiti di ragionamento complesso potrebbero essere diretti a LLM più potenti ma più costosi.

Oggi presentiamo la nuova API Classifier di Jina AI's Search Foundation. Supportando la classificazione online zero-shot e few-shot, è basata sui nostri più recenti modelli di embedding come jina-embeddings-v3 e jina-clip-v1. L'API Classifier si basa sull'apprendimento online passivo-aggressivo, permettendole di adattarsi ai nuovi dati in tempo reale. Gli utenti possono iniziare con un classificatore zero-shot e utilizzarlo immediatamente. Possono poi aggiornare incrementalmente il classificatore inviando nuovi esempi o quando si verifica un concept drift. Ciò consente una classificazione efficiente e scalabile su vari tipi di contenuti senza un'ampia quantità iniziale di dati etichettati. Gli utenti possono anche pubblicare i loro classificatori per uso pubblico. Quando rilasciamo nuovi embedding, come il prossimo jina-clip-v2 multilingue, gli utenti possono accedervi immediatamente attraverso l'API Classifier, garantendo capacità di classificazione aggiornate.

Classifier API
High performance classifier for image and text classification.

tagClassificazione Zero-Shot

L'API Classifier offre potenti capacità di classificazione zero-shot, permettendo di categorizzare testo o immagini senza pre-addestramento su dati etichettati. Ogni classificatore inizia con capacità zero-shot, che possono essere successivamente migliorate con dati di training aggiuntivi o aggiornamenti - un argomento che esploreremo nella prossima sezione.

tagEsempio 1: Instradamento delle Richieste LLM

Ecco un esempio di utilizzo dell'API classifier per l'instradamento delle query 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."
    ]
  }'

Questo esempio dimostra l'uso di jina-embeddings-v3 per instradare le query degli utenti in più lingue (inglese, cinese, giapponese e tedesco) in tre categorie, che corrispondono a tre diverse dimensioni di LLM. Il formato della risposta API è il seguente:

{
  "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 risposta include:

  • usage: Informazioni sull'utilizzo dei token.
  • data: Un array di risultati di classificazione, uno per ogni input.
    • Ogni risultato contiene l'etichetta prevista (prediction) e un punteggio di confidenza (score). Lo score per ogni classe è calcolato tramite normalizzazione softmax - per zero-shot è basato sulle similarità coseno tra l'input e gli embedding delle etichette sotto il task-LoRA di classification; mentre per few-shot è basato su trasformazioni lineari apprese dell'embedding di input per ogni classe - risultando in probabilità che sommano a 1 tra tutte le classi.
    • L'index corrisponde alla posizione dell'input nella richiesta originale.

tagEsempio 2: Categorizzazione di Immagini e Testo

Esploriamo un esempio multimodale utilizzando jina-clip-v1. Questo modello può classificare sia testo che immagini, rendendolo ideale per la categorizzazione dei contenuti attraverso vari tipi di media. Consideriamo la seguente chiamata 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"}
    ]
  }'

Nota come carichiamo le immagini nella richiesta, puoi anche utilizzare una stringa base64 per rappresentare un'immagine. L'API restituisce i seguenti risultati di classificazione:

{
  "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}
  ]
}

tagEsempio 3: Rilevare se Jina Reader Ottiene Contenuti Genuini

Un'applicazione interessante della classificazione zero-shot è determinare l'accessibilità dei siti web attraverso Jina Reader. Sebbene questo possa sembrare un compito semplice, è sorprendentemente complesso nella pratica. I messaggi di blocco variano ampiamente da sito a sito, apparendo in diverse lingue e citando varie ragioni (paywall, limiti di velocità, interruzioni del server). Questa diversità rende difficile affidarsi a regex o regole fisse per catturare tutti gli scenari.

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)

Lo script recupera il contenuto tramite r.jina.ai e lo classifica come "Blocked" o "Accessible" utilizzando l'API Classifier. Ad esempio, https://r.jina.ai/https://www.crunchbase.com/organization/jina-ai sarebbe probabilmente "Blocked" a causa delle restrizioni di accesso, mentre https://r.jina.ai/https://jina.ai dovrebbe essere "Accessible".

{"usage":{"total_tokens":185,"prompt_tokens":185},"data":[{"object":"classification","index":0,"prediction":"Blocked","score":0.5392698049545288}]}

L'API Classifier può distinguere efficacemente tra contenuti genuini e risultati bloccati da Jina Reader.

Questo esempio sfrutta jina-embeddings-v3 e offre un modo rapido e automatizzato per monitorare l'accessibilità dei siti web, utile per sistemi di aggregazione dei contenuti o web scraping, specialmente in contesti multilingue.

tagEsempio 4: Filtrare Affermazioni da Opinioni per il Grounding

Un'altra interessante applicazione della classificazione zero-shot è il filtraggio di affermazioni simili a dichiarazioni di fatto dalle opinioni in documenti lunghi. Da notare che il classificatore stesso non può determinare se qualcosa è fattualmente vero. Piuttosto, identifica il testo che è scritto nello stile di un'affermazione di fatto, che può poi essere verificato attraverso una API di verifica, che spesso è piuttosto costosa. Questo processo in due fasi è fondamentale per un efficace fact-checking: prima filtrare tutte quelle opinioni e sentimenti, poi inviare le rimanenti affermazioni per la verifica.

Fact-Checking with New Grounding API in Jina Reader
With the new g.jina.ai, you can easily ground statements to reduce LLM hallucinations or improve the integrity of human-written content.
Google Docs

Considera questo paragrafo sulla Corsa allo Spazio degli anni '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.

Questo testo mescola intenzionalmente diversi tipi di scrittura - da affermazioni simili a dichiarazioni di fatto (come "Sputnik 1 fu lanciato il 4 ottobre 1959"), a chiare opinioni ("straordinaria testimonianza"), linguaggio emotivo ("suscitò paura nei cuori"), e affermazioni interpretative ("segnando l'innegabile inizio di una nuova era").

Il compito del classificatore zero-shot è puramente semantico - identifica se un pezzo di testo è scritto come una dichiarazione o come un'opinione/interpretazione. Per esempio, "The Soviet Union launched Sputnik 1 on October 4, 1959" è scritto come una dichiarazione, mentre "The Space Race was a breathtaking testament" è chiaramente scritto come un'opinione.

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)

E otterrai:

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']

Ricorda, il fatto che qualcosa sia scritto come una dichiarazione non significa che sia vero. Ecco perché abbiamo bisogno del secondo passaggio - inserire queste affermazioni simili a dichiarazioni in una API di verifica per l'effettiva verifica dei fatti. Per esempio, verifichiamo questa affermazione: "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 il codice sottostante.

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())

che ti darà:

{'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 un punteggio di fattualità di 1, l'API di verifica conferma che questa affermazione è ben fondata nei fatti storici. Questo approccio apre possibilità affascinanti, dall'analisi di documenti storici alla verifica dei fatti in tempo reale degli articoli di news. Combinando la classificazione zero-shot con la verifica dei fatti, creiamo una potente pipeline per l'analisi automatizzata delle informazioni - prima filtrando le opinioni, poi verificando le rimanenti affermazioni contro fonti affidabili.

tagOsservazioni sulla Classificazione Zero-Shot

Utilizzo di Etichette Semantiche

Quando si lavora con la classificazione zero-shot, è cruciale utilizzare etichette semanticamente significative piuttosto che simboli astratti o numeri. Per esempio, "Technology", "Nature", e "Food" sono molto più efficaci di "Class1", "Class2", "Class3" o "0", "1", "2". "Positive sentiment" è più efficace di "Positive" e "True". I modelli di embedding comprendono le relazioni semantiche, quindi le etichette descrittive permettono al modello di sfruttare la sua conoscenza pre-addestrata per classificazioni più accurate. Il nostro post precedente esplora come creare efficaci etichette semantiche per migliori risultati di classificazione.

Rephrased Labels Improve Zero-Shot Text Classification by 30%
When using embedding models for zero-shot classification, rephrasing the class label to "This is seriously about 'LABEL'" gives higher accuracy vs. using LABEL alone. But how, and why?

Natura Senza Stato

La classificazione zero-shot è fondamentalmente senza stato, a differenza degli approcci tradizionali di machine learning. Questo significa che dati gli stessi input e modello, i risultati saranno sempre coerenti, indipendentemente da chi usa l'API o quando. Il modello non impara né si aggiorna in base alle classificazioni che esegue; ogni compito è indipendente. Questo permette un uso immediato senza setup o training, e offre flessibilità nel cambiare categorie tra le chiamate API.

Questa natura senza stato contrasta nettamente con gli approcci few-shot e di apprendimento online, che esploreremo successivamente. In questi metodi, i modelli possono adattarsi a nuovi esempi, potenzialmente producendo risultati diversi nel tempo o tra utenti diversi.

tagClassificazione Few-Shot

La classificazione few-shot offre un approccio semplice per creare e aggiornare classificatori con dati etichettati minimi. Questo metodo fornisce due endpoint principali: train e classify.

L'endpoint train ti permette di creare o aggiornare un classificatore con un piccolo set di esempi. La tua prima chiamata a train restituirà unclassifier_id, che puoi utilizzare per l'addestramento successivo quando hai nuovi dati, noti cambiamenti nella distribuzione dei dati o hai bisogno di aggiungere nuove classi. Questo approccio flessibile permette al tuo classificatore di evolversi nel tempo, adattandosi a nuovi pattern e categorie senza ripartire da zero.

In modo simile alla classificazione zero-shot, userai l'endpoint classify per fare previsioni. La differenza principale è che dovrai includere il tuo classifier_id nella richiesta, ma non dovrai fornire etichette candidate poiché sono già parte del tuo modello addestrato.

tagEsempio: Addestra un Assegnatore di Ticket di Supporto

Esploriamo queste funzionalità attraverso un esempio di classificazione dei ticket di supporto clienti per l'assegnazione a diversi team in una startup tecnologica in rapida crescita.

Addestramento Iniziale

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
}'

Nota che nell'apprendimento few-shot, siamo liberi di usare team1 team2 come etichette di classe anche se non hanno un significato semantico intrinseco. Nella risposta, otterrai un classifier_id che rappresenta questo classificatore appena creato.

{
  "classifier_id": "918c0846-d6ae-4f34-810d-c0c7a59aee14",
  "num_samples": 3,
}

Prendi nota del classifier_id, ne avrai bisogno per riferiti a questo classificatore in seguito.

Aggiornamento del Classificatore per Adattarsi alla Ristrutturazione del Team

Man mano che l'azienda di esempio cresce, emergono nuovi tipi di problemi e anche la struttura del team cambia. La bellezza della classificazione few-shot sta nella sua capacità di adattarsi rapidamente a questi cambiamenti. Possiamo facilmente aggiornare il classificatore fornendo il classifier_id e nuovi esempi, introducendo nuove categorie di team (es. team4) o riassegnando i tipi di problemi esistenti a diversi team mentre l'organizzazione si evolve.

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
}'

Utilizzo di un Classificatore Addestrato

Durante l'inferenza, devi solo fornire il testo di input e il classifier_id. L'API gestisce il mapping tra il tuo input e le classi precedentemente addestrate, restituendo l'etichetta più appropriata basata sullo stato attuale del classificatore.

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."
    }
  ]
}'

La modalità few-shot ha due parametri unici.

tagParametro num_iters

Il parametro num_iters regola quanto intensamente il classificatore apprende dagli esempi di addestramento. Mentre il valore predefinito di 10 funziona bene nella maggior parte dei casi, puoi regolare strategicamente questo valore in base alla tua fiducia nei dati di addestramento. Per esempi di alta qualità cruciali per la classificazione, aumenta num_iters per rafforzare la loro importanza. Al contrario, per esempi meno affidabili, abbassa num_iters per minimizzare il loro impatto sulle prestazioni del classificatore. Questo parametro può anche essere usato per implementare l'apprendimento sensibile al tempo, dove gli esempi più recenti ottengono conteggi di iterazioni più alti per adattarsi ai pattern in evoluzione mantenendo la conoscenza storica.

tagParametro access

Il parametro access ti permette di controllare chi può utilizzare il tuo classificatore. Per impostazione predefinita, i classificatori sono privati e accessibili solo a te. Impostando l'accesso su "public" permetti a chiunque abbia il tuo classifier_id di usarlo con la propria chiave API e quota di token. Questo permette la condivisione dei classificatori mantenendo la privacy - gli utenti non possono vedere i tuoi dati di addestramento o la configurazione, e tu non puoi vedere le loro richieste di classificazione. Questo parametro è rilevante solo per la classificazione few-shot, poiché i classificatori zero-shot sono stateless. Non c'è bisogno di condividere i classificatori zero-shot poiché richieste identiche produrranno sempre le stesse risposte indipendentemente da chi le effettua.

tagOsservazioni sull'Apprendimento Few-Shot

La classificazione few-shot nella nostra API ha alcune caratteristiche uniche degne di nota. A differenza dei modelli di machine learning tradizionali, la nostra implementazione utilizza l'apprendimento online a passaggio singolo - gli esempi di addestramento vengono elaborati per aggiornare i pesi del classificatore ma non vengono memorizzati successivamente. Questo significa che non puoi recuperare i dati di addestramento storici, ma garantisce una migliore privacy ed efficienza delle risorse.

Mentre l'apprendimento few-shot è potente, richiede un periodo di riscaldamento per superare le prestazioni della classificazione zero-shot. I nostri benchmark mostrano che 200-400 esempi di addestramento tipicamente forniscono dati sufficienti per vedere prestazioni superiori. Tuttavia, non è necessario fornire esempi per tutte le classi fin dall'inizio - il classificatore può scalare per accogliere nuove classi nel tempo. Tieni presente che le classi appena aggiunte potrebbero sperimentare un breve periodo di avvio a freddo o uno sbilanciamento delle classi fino a quando non vengono forniti esempi sufficienti.

tagBenchmark

Per la nostra analisi di benchmark, abbiamo valutato gli approcci zero-shot e few-shot su diversi dataset, inclusi compiti di classificazione del testo come il rilevamento delle emozioni (6 classi) e il rilevamento dello spam (2 classi), così come compiti di classificazione delle immagini come CIFAR10 (10 classi). Il framework di valutazione ha utilizzato divisioni standard train-test, con lo zero-shot che non richiede dati di addestramento e il few-shot che utilizza porzioni del set di addestramento. Abbiamo tracciato metriche chiave come la dimensione dell'addestramento e il conteggio delle classi target, permettendo confronti controllati. Per garantire robustezza, in particolare per l'apprendimento few-shot, ogni input è passato attraverso multiple iterazioni di addestramento. Abbiamo confrontato questi approcci moderni con baseline tradizionali come SVM Lineare e SVM RBF per fornire contesto alle loro prestazioni.

Sono mostrati i punteggi F1. Per le impostazioni complete del benchmark, consulta questo foglio Google.

I grafici F1 rivelano pattern interessanti tra tre attività. Non sorprendentemente, la classificazione zero-shot mostra prestazioni costanti fin dall'inizio, indipendentemente dalla dimensione dei dati di training. Al contrario, l'apprendimento few-shot dimostra una curva di apprendimento rapida, partendo inizialmente più bassa ma superando rapidamente le prestazioni zero-shot con l'aumentare dei dati di training. Entrambi i metodi alla fine raggiungono un'accuratezza comparabile intorno al campione 400, con il few-shot che mantiene un leggero vantaggio. Questo pattern è valido sia per scenari di classificazione multi-classe che per la classificazione delle immagini, suggerendo che l'apprendimento few-shot può essere particolarmente vantaggioso quando sono disponibili alcuni dati di training, mentre lo zero-shot offre prestazioni affidabili anche senza esempi di training. La tabella seguente riassume la differenza tra classificazione zero-shot e few-shot dal punto di vista dell'utente 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

tagRiepilogo

L'API Classifier offre potenti funzionalità di classificazione zero-shot e few-shot sia per contenuti testuali che per immagini, basata su modelli di embedding avanzati come jina-embeddings-v3 e jina-clip-v1. I nostri benchmark mostrano che la classificazione zero-shot fornisce prestazioni affidabili senza dati di training, rendendola un eccellente punto di partenza per la maggior parte delle attività con supporto fino a 256 classi. Mentre l'apprendimento few-shot può raggiungere un'accuratezza leggermente migliore con i dati di training, consigliamo di iniziare con la classificazione zero-shot per i suoi risultati immediati e la sua flessibilità.

La versatilità dell'API supporta varie applicazioni, dal routing delle query LLM al rilevamento dell'accessibilità dei siti web e alla categorizzazione di contenuti multilingue. Che tu stia iniziando con zero-shot o passando all'apprendimento few-shot per casi specializzati, l'API mantiene un'interfaccia coerente per un'integrazione perfetta nella tua pipeline. Siamo particolarmente entusiasti di vedere come gli sviluppatori sfrutteranno questa API nelle loro applicazioni, e implementeremo il supporto per nuovi modelli di embedding come jina-clip-v2 in futuro.

Categorie:
star
In primo piano
comunicato stampa
rss_feed

Per saperne di più
agosto 03, 2026 • 11 minuti letti
jina-reranker-v3.5: Faster Listwise Reranking with Hybrid Attention and Self-Distillation
Jina AI
maggio 12, 2026 • 7 minuti letti
jina-embeddings-v5-omni: Embeddings for Text, Image, Audio and Video
Han Xiao
febbraio 19, 2026 • 7 minuti letti
jina-embeddings-v5-text: New SOTA Small Multilingual Embeddings
Han Xiao
Abstract digital artwork in black and white, featuring scattered dots forming letters in a halftone effect. The central lette
Lingua / tema attuale
Search Foundation
Lettore
Incorporamenti
Riclassificazione
Ottieni la chiave API Jina
Limite di velocità
Chi siamo
Notizia
Scarica il logo Jina
open_in_new
Scarica il logo Elastic
open_in_new
Stato dell'API
Elastic © 2026.SicurezzaTermini & CondizioniPrivacyGestisci i cookieNon vendere né condividere le mie informazioni personali
Questo sito web e tutti i contenuti, software, prodotti e servizi ad esso associati sono destinati esclusivamente all'uso professionale. Non è previsto né raccomandato alcun utilizzo da parte dei consumatori.