Addestramento degli embedding testuali con Jina AI
Recentemente, abbiamo ascoltato Bo Wang al Berlin Unstructured Data Meetup parlare dell’addestramento di embedding testuali generali all’avanguardia. Gli embedding testuali alimentano già la moderna ricerca vettoriale e i sistemi di Retrieval-Augmented Generation (RAG). Wang ci aiuta a comprendere le complessità dello sviluppo di embedding testuali all’avanguardia, con un focus principale sugli embedding Jina.
Guarda la registrazione dell’intervento di Bo Wang su Youtube
Perché dovresti interessarti agli embedding testuali Jina?
Il rilascio di Jina-Embeddings-V2 ha fatto scalpore nella comunità dell’AI, ottenendo oltre 3 milioni di download su Hugging Face. Questo modello è stato integrato in numerosi framework AI come LangChain e LlamaIndex, e in database vettoriali come Milvus e Zilliz Cloud. Il clamore attorno agli embedding Jina è arrivato persino in cima a Hacker News, suscitando ampi dibattiti e discussioni sugli encoder a lungo contesto. Gli embedding Jina competono da vicino con gli embedding OpenAI, tra i migliori del settore.
Con questo in mente, approfondiamo l’intervento di Wang sulle complessità dello sviluppo degli embedding testuali Jina.
Evoluzione dal fine-tuning all’addestramento di modelli di embedding su larga scala
Jina AI non ha iniziato addestrando il proprio modello di embedding. Invece, ha cominciato effettuando il fine-tuning di modelli già esistenti come BERT. I modelli sottoposti a fine-tuning hanno ottenuto risultati migliori rispetto a quelli esistenti. Diamo un’occhiata alle statistiche. Il valore delta alla fine rappresenta quanto bene si comporta il modello sottoposto a fine-tuning rispetto al modello pre-addestrato originale.
Confronto delle prestazioni tra modelli pre-addestrati e sottoposti a fine-tuning
Come puoi vedere, tutti i modelli sottoposti a fine-tuning sono migliorati significativamente, il che implica che l’algoritmo ha funzionato bene. Ma il prodotto è stato ben accolto dall’industria tecnologica? La risposta semplice è no.
Questo avveniva quando l’industria, persino quella della ricerca, si stava lentamente spostando verso i vettori e aveva appena iniziato a usare modelli di embedding pre-addestrati. Tuttavia, non era pronta per il fine-tuning dei modelli di embedding. I modelli di embedding non erano ampiamente adottati nemmeno in altri settori, poiché non esistevano LLM o sistemi RAG.
Quindi, sebbene il fine-tuning abbia permesso a Jina AI di ottenere miglioramenti incrementali, si sono presto resi conto che l’industria non era preparata per le tecniche di fine-tuning. Questa consapevolezza li ha spinti a intraprendere un’impresa ambiziosa: addestrare da zero il proprio modello di embedding. Credevano che sviluppare una soluzione interna avrebbe consentito loro di superare i limiti di ciò che era possibile.
Creazione di Jina-Embeddings-V1
La creazione di Jina-Embeddings-V1 ha comportato l’adozione di un approccio completo. Wang ci illustra l’approccio utilizzato:
Ricerca dei modelli all’avanguardia: Il primo passo consiste nello studiare modelli di embedding all’avanguardia, tra cui minilm, mpnet, sentence-t5, GTR e instructors di giganti tecnologici come Microsoft e Google. Questo approccio aiuta a comprendere i punti di forza e i limiti delle soluzioni esistenti e a individuare le aree che necessitano di miglioramento.
Raccolta di un enorme dataset di addestramento: Il passo successivo consiste nell’assemblare un enorme dataset. Jina AI ha utilizzato 2 miliardi di record di dati di addestramento in inglese. Questo corpus massiccio è essenziale per addestrare un modello di embedding general-purpose di alta qualità, capace di gestire un’ampia gamma di attività e domini.
Ampia pulizia e curatela dei dati: Per garantire la qualità dei dati di addestramento, vengono eseguiti ampi processi di pulizia e curatela dei dati, tra cui deduplicazione, rilevamento della lingua e filtraggio della qualità. Dopo questo processo rigoroso, Jina AI è rimasta con 400 milioni di record di dati di pre-addestramento di alta qualità e 5 milioni di righe di dati di fine-tuning annotati da esseri umani.
Refactoring per l'addestramento distribuito: Jina AI ha rifattorizzato la sua codebase Finetuner per consentire un addestramento efficiente di modelli su larga scala a supporto dell'addestramento distribuito su più nodi e GPU. Questa infrastruttura scalabile è cruciale per addestrare modelli su un dataset così enorme.
Il modello è stato un successo ma non si è distinto da tutti gli altri modelli del settore, poiché aveva una lunghezza di contesto limitata. Per risolvere questa limitazione, Jina AI ha addestrato Jina-Embeddings-V2.
Presentazione di Jina-Embeddings-V2: Addestramento breve, inferenza lunga
Per superare la barriera dei 512 token e raggiungere il loro obiettivo di gestire sequenze più lunghe, Jina AI introduce Jina-Embeddings-V2, un modello di embedding in grado di gestire sequenze fino a 8.192 token durante l'inferenza, pur addestrandosi su sequenze più brevi. Questo è ottenuto attraverso diverse modifiche chiave. Wang passa rapidamente in rassegna queste modifiche. Facciamo un approfondimento:
Rimozione del Position Embedding
I modelli transformer tradizionali, incluso BERT, si basano sui position embeddings per codificare l'ordine dei token all'interno di una sequenza. Questi position embeddings sono vettori fissi che rappresentano la posizione di ciascun token rispetto agli altri. Tuttavia, presentano delle limitazioni:
- Lunghezza del contesto: I position embeddings limitano la finestra di contesto a una dimensione fissa (ad es., 512 token in BERT). Documenti o sequenze più lunghi superano questo limite, portando a una perdita di informazioni. Osserva come la perplexity aumenti vertiginosamente per i modelli BERT quando si superano i 512 token, il che significa che c'è una perdita di informazioni. La perplexity misura quanto il modello riesce a comprendere la semantica del testo. Più bassa è la perplexity, meglio è.
Lunghezza della sequenza di inferenza vs perplexity su BERT
- Vincoli posizionali: I token in posizioni distanti ricevono embedding simili, ignorando il loro contesto.
Jina-Embeddings-V2 rimuove completamente i position embeddings, permettendogli di gestire sequenze più lunghe senza vincoli posizionali. Il modello cattura il contesto attraverso documenti estesi, rendendolo adatto alla sintesi di documenti, all'analisi legale e alla comprensione di contenuti long-form.
Attention with Linear Biases (ALiBi)
ALiBi è una tecnica sviluppata per i modelli linguistici di grandi dimensioni. Invece di basarsi su position embeddings fissi, ALiBi cattura dinamicamente le informazioni sull'ordine delle parole durante i calcoli dell'attenzione. Si adatta quindi al contesto di ciascun token, consentendogli di considerare sia i token precedenti sia quelli successivi senza vincoli posizionali.
Effetto sugli Embeddings: ALiBi migliora la comprensione del contesto, anche in testi lunghi. Consente a Jina-Embeddings-V2 di catturare ricche relazioni semantiche tra token, indipendentemente dalla loro posizione.
Adattamento di ALiBi per Transformer bidirezionali
La comprensione bidirezionale è cruciale per attività come question answering, sintesi e ricerca semantica. Ecco come Jina-Embeddings-V2 la ottiene:
Concetto: ALiBi è stato originariamente progettato per modelli decoder-only. Jina AI lo estende ad architetture bidirezionali come BERT.
Contesto bidirezionale: Jina-Embeddings-V2 considera sia il contesto a sinistra sia quello a destra, catturando dipendenze lungo l'intera sequenza.
Effetto sugli Embeddings: Il modello eccelle nelle attività in cui comprendere il contesto in entrambe le direzioni è importante. Ad esempio, la ricerca semantica trae beneficio dagli embedding bidirezionali, poiché richiede di analizzare simultaneamente le query degli utenti e il contenuto dei documenti.
Riaddestrare BERT da zero
Jina AI ha riaddestrato BERT con tecniche avanzate, dando origine a JinaBERT, che funge da backbone per Jina-Embeddings-V2:
Concetto: Jina AI applica vari trucchi, tra cui whole word masking, recipe RoBERTa, attivazioni GeGLU e masking aggressivo.
Supporto ALiBi: JinaBERT è addestrato in ALiBi, il che garantisce una modellazione dinamica del contesto.
Effetto sugli embedding: Jina-Embeddings-V2 beneficia di un backbone robusto, capace di gestire attività diverse. Riassume articoli lunghi, estrae informazioni essenziali e mantiene l’integrità del contesto.
La perplexity mantenuta da JinaBERT rimane bassa anche quando viene superato il limite di 512 token. Grazie alla rimozione degli embedding posizionali e all’adattamento di AliBi. Dai un’occhiata al nuovo grafico con il confronto tra BERT e JinaBERT:
Lunghezza della sequenza di inferenza vs perplexity su JinaBERT e BERT
Collegare le lingue: embedding bilingui
Riconoscendo i limiti dei modelli di embedding multilingue esistenti, che spesso dipendono fortemente da dati di addestramento in inglese, Jina AI ha iniziato a sviluppare embedding bilingui. Il loro obiettivo è creare modelli in grado di gestire più lingue e le relazioni cross-lingual tra di esse.
L’approccio di Jina AI agli embedding bilingui si discosta dalla norma. La maggior parte dei modelli multilingue, come Multilingual BERT e Multilingual E5, soffre di una significativa distorsione nella distribuzione dei dati di addestramento. Ad esempio, il popolare modello Multilingual E5 ha il 91,5% dei suoi dati di addestramento in inglese, con solo il 4,2% in cinese e il 4,3% in altre lingue complessivamente.
Multilingual E5 vs Jina Embedding v2 su dati multilingue pre-addestrati
Al contrario, il modello Jina-Embeddings-V2-Based-German di Jina AI presenta una distribuzione bilanciata dei dati di addestramento: 50% inglese e 50% tedesco. Questi dati cross-lingual sono progettati specificamente per migliorare la comprensione da parte del modello delle somiglianze e delle relazioni tra le due lingue.
Pur essendo più piccolo dei modelli multilingue, Jina-Embeddings-V2-Based-German supera costantemente i suoi concorrenti, ottenendo punteggi più elevati nelle attività di ricerca tedesco-tedesco, tedesco-inglese e inglese-tedesco.
Confronto delle prestazioni di ricerca tra diversi modelli di embedding
I risultati mostrano la superiorità degli embedding bilingui di Jina AI rispetto a modelli multilingue popolari come Multilingual E5 e Cohere Embed V3, sia nelle attività di ricerca monolingue sia in quelle cross-lingual.
Cosa considerare quando si creano applicazioni RAG con Jina-Embeddings-V2
Quando si sviluppano applicazioni di Retrieval-Augmented Generation (RAG) utilizzando Jina-Embeddings-V2, è essenziale capire come il modello gestisce documenti di lunghezza variabile e il posizionamento delle informazioni rilevanti all’interno di questi documenti. Bo Wang ha evidenziato diverse considerazioni chiave:
Documenti brevi: Se i tuoi documenti sono sempre inferiori a 512 token, Jina-Embeddings-V2 offre prestazioni paragonabili ad altri encoder medi come E5 o BGE.
Documenti lunghi (informazioni iniziali): Se i tuoi documenti sono più lunghi di 512 token, ma le informazioni rilevanti si trovano all’inizio, Jina-Embeddings-V2 potrebbe offrire prestazioni peggiori.
Documenti lunghi (informazioni successive): Se i tuoi documenti sono più lunghi di 512 token e le informazioni rilevanti si trovano al centro o alla fine, Jina-Embeddings-V2 migliora significativamente le prestazioni di ricerca.
Integrazione di Jina AI con il database vettoriale Milvus
Sia i database vettoriali sia i modelli di embedding sono indispensabili per creare sistemi efficienti di recupero delle informazioni e applicazioni RAG. Questi componenti sono spesso integrati per condurre attività di ricerca per similarità vettoriale e recupero.
Milvus è un database vettoriale open-source progettato per archiviare e recuperare in modo efficiente embedding vettoriali su scala di miliardi. Recentemente, gli embedding Jina sono stati integrati nella libreria di modelli PyMilvus, semplificando lo sviluppo di applicazioni RAG o di altre applicazioni GenAI eliminando la necessità di componenti di embedding aggiuntivi.
La recente introduzione di Milvus Lite, una versione leggera di Milvus, ha ulteriormente semplificato questo processo. Milvus Lite condivide la stessa API della versione completa di Milvus distribuita su Docker o Kubernetes, ma può essere installato facilmente tramite un comando pip di una sola riga senza configurare un server. È ideale per la prototipazione e può passare senza soluzione di continuità a varie distribuzioni Milvus man mano che le tue esigenze crescono.
Per saperne di più su questa integrazione, consulta le seguenti risorse:
Documentazione Milvus: Integrare Milvus con Jina Embeddings
Blog: Implementare una cronologia chat RAG con Jina AI e Milvus Lite
Guardando al futuro: Jina-Embeddings-V3
Il team di Jina AI sta già lavorando a Jina-Embeddings-V3, che promette di apportare ulteriori progressi:
Velocità ed efficienza: Jina-Embeddings-V3 sarà più veloce e più efficiente in termini di memoria, in particolare per sequenze più lunghe.
Supporto multilingue: La nuova versione offrirà una distribuzione linguistica ottimizzata e una migliore gestione dei dati multilingue.
Risoluzione di problemi reali: Jina-Embeddings-V3 affronterà problemi reali con l’analisi dei fallimenti compressivi su V2 e altri modelli di embedding.
Miglioramenti specifici per attività: Includerà istruzioni per attività e task heads progettati con cura, insieme a un instradamento intelligente per gestire meglio attività diverse.
Consapevolezza di chunk e schema: Il modello sarà consapevole dei chunk e dello schema, migliorando la sua comprensione dei dati semi-strutturati e degli embedding gerarchici.
Riepilogo
I modelli di embedding Jina vantano prestazioni elevate, con una finestra di input di 8192 token che eccelle nella rappresentazione completa dei dati. Con supporto multilingue e integrazione senza soluzione di continuità con piattaforme leader come OpenAI, questi embedding sono ideali per applicazioni cross-lingual.
I modelli di embedding e i database vettoriali sono essenziali per una ricerca di similarità e un recupero delle informazioni efficienti. Integrando i modelli di embedding Jina con PyMilvus, l’SDK Python per Milvus, lo sviluppo di applicazioni RAG e di varie applicazioni GenAI diventa più efficiente e semplice.
In un recente intervento di Bo Wang, ha discusso la creazione di embedding testuali Jina per la ricerca vettoriale moderna e i sistemi RAG. Ha inoltre condiviso metodologie per addestrare modelli di embedding che codificano efficacemente grandi quantità di informazioni, insieme a indicazioni sulla selezione dei modelli di embedding più appropriati per diverse esigenze aziendali.
Per maggiori dettagli, guarda la registrazione dell’intervento di Bo Wang su Youtube.
Continua a leggere

How to Install and Run OpenClaw (Previously Clawdbot/Moltbot) on Mac
Turn your Mac into an AI gateway for WhatsApp, Telegram, Discord, iMessage, and more — in under 5 minutes.

Cosmos World Foundation Model Platform for Physical AI
NVIDIA's Cosmos platform enables safe, digital twin training of GenAI models for physical applications, overcoming data scarcity and safety challenges.

Vector Databases vs. Key-Value Databases
Use a vector database for AI-powered similarity search; use a key-value database for high-throughput, low-latency simple data lookups.


