Embedder
Un Embedder converte il testo in vettori numerici a lunghezza fissa, chiamati embedding, che ne rappresentano il significato. I testi con significati simili tendono a produrre vettori vicini tra loro, abilitando la ricerca semantica e il confronto tra documenti.
LogicalDOC fornisce due implementazioni:
- Paragraph Embedder: un modello addestrabile basato su Doc2Vec. Questo è il modello precedentemente chiamato semplicemente Embedder.
- Mini Embedder: un modello pre-addestrato basato su MiniLM che non richiede l'addestramento all'interno di LogicalDOC.
Gli embedding risultanti vengono archiviati in un Vector Store. Un documento può essere suddiviso in blocchi di testo (chunk), generando un vettore separato per ciascun blocco.
Paragraph Embedder
Il Paragraph Embedder utilizza l'algoritmo Doc2Vec, tramite l'implementazione ParagraphVectors di DL4J, per apprendere il vocabolario e le relazioni contestuali da una raccolta di testo fornita.
Durante l'addestramento, il modello apprende quali parole e paragrafi si verificano in contesti simili. Una volta addestrato, può convertire i blocchi di documento e le query di ricerca in vettori.
Dati di Addestramento
Un Sampler fornisce il testo utilizzato per addestrare il modello. È possibile preparare i dati di addestramento in due modi:
- Paragraph Sampler: legge un file di testo preparato e crea un campione per ogni paragrafo. I paragrafi devono essere separati da righe vuote.
- Content Sampler: raccoglie il testo indicizzato dei documenti in una cartella del repository selezionata, includendo opzionalmente le sue sottocartelle. Ogni documento diventa un campione di addestramento.
Ad esempio, un file utilizzato dal Paragraph Sampler potrebbe contenere:
Le fatture registrano i prodotti o i servizi forniti a un cliente.
Di solito includono i termini di pagamento e l'importo totale dovuto.
I contratti definiscono le responsabilità delle parti coinvolte.
Possono anche specificare scadenze e condizioni di risoluzione.
La qualità degli embedding dipende dal corpus di addestramento. Utilizzare una quantità sufficiente di testo rappresentativo per coprire le lingue, gli argomenti e la terminologia dei propri documenti.
Le parole assenti dal vocabolario addestrato non possono contribuire a un embedding. Se nessuna delle parole di input viene riconosciuta, il risultato è un vettore zero privo di informazioni semantiche utili.
Proprietà
La scheda Proprietà contiene le impostazioni per l'addestramento Doc2Vec, l'inferenza e il frazionamento del testo (chunking).
- Seed: valore utilizzato per inizializzare la generazione di numeri casuali.
- Workers: numero di thread utilizzati per l'addestramento.
- Window size: numero di parole adiacenti considerate dall'algoritmo Doc2Vec durante l'apprendimento del contesto.
- Vector Size: numero di elementi in ciascun vettore. Il valore predefinito per il Paragraph Embedder è 300. Il Mini Embedder utilizza una dimensione fissa di 384.
- Min. word freq: numero minimo di occorrenze richieste affinché una parola entri nel vocabolario di addestramento. Le parole meno frequenti vengono scartate.
- Max chunks: numero massimo di blocchi di testo elaborati per ciascun documento.
- Chunk size: numero target di token in ciascun blocco.
- Min. chunk size: numero minimo di token e caratteri richiesti affinché un blocco venga elaborato.
- Alpha: tasso di apprendimento iniziale (learning rate), che controlla la dimensione degli aggiornamenti del modello. Il valore predefinito è 0,025.
- Min Alpha: tasso di apprendimento minimo. Durante l'inferenza Doc2Vec, il tasso di apprendimento diminuisce in modo lineare verso questo valore nel corso delle epoche di inferenza. Il valore predefinito è 0,0001.
Le impostazioni Doc2Vec si applicano al Paragraph Embedder. Il Mini Embedder non richiede un addestramento locale.
Mini Embedder
Il Mini Embedder utilizza un transformer MiniLM-L6-v2 pre-addestrato per convertire il testo in vettori a 384 dimensioni.
Il modello contiene già rappresentazioni linguistiche apprese da un corpus di addestramento esterno. Non costruisce il proprio vocabolario dal tuo repository, non utilizza un Sampler e non fornisce una fase di addestramento locale.
Come Funziona
Un tokenizer compatibile di Hugging Face converte il testo di input in token. Il modello MiniLM genera una rappresentazione per ciascun token, e LogicalDOC calcola la media delle rappresentazioni dei token validi per produrre un unico embedding. Le posizioni di padding sono escluse da questa media.
LogicalDOC normalizza quindi il vettore risultante alla lunghezza unitaria per i confronti di similarità.
Configurazione del Modello
Il Mini Embedder utilizza un modello pre-addestrato in formato ONNX, eseguito localmente tramite ONNX Runtime. Il testo del documento non deve essere inviato a un'API di IA esterna per l'embedding.
La dimensione del suo vettore è fissa a 384 e non deve essere configurata a 300. Le proprietà di Doc2Vec, come Alpha, Min Alpha, Window size e Minimum Word Frequency, non si applicano a questo modello.
Scegliere un Embedder
Il Paragraph Embedder utilizza Doc2Vec tramite l'implementazione ParagraphVectors di DL4J. Richiede dati di addestramento forniti da un Sampler e supporta l'addestramento all'interno di LogicalDOC. La dimensione del suo vettore è configurabile, con un valore predefinito di 300. Scegli questo modello quando disponi di un corpus rappresentativo e desideri che apprenda il vocabolario e le relazioni contestuali dal testo del tuo dominio.
Il Mini Embedder utilizza un modello MiniLM-L6-v2 pre-addestrato che puoi importare in LogicalDOC. Non richiede un Sampler né supporta l'addestramento locale, e la dimensione del suo vettore è fissa a 384. Scegli questo modello quando desideri generare embedding semantici senza preparare un corpus di addestramento locale.
Generazione degli Embedding dei Documenti
Dopo aver addestrato il Paragraph Embedder o importato il Mini Embedder, configura uno Embedding Scheme che colleghi il modello a un Vector Store.
Il task pianificato Embedder genera e archivia gli embedding per i documenti del repository. La preparazione del modello e la generazione degli embedding dei documenti sono passaggi distinti.
Se si modifica l'embedder utilizzato da un Embedding Scheme, rigenerare gli embedding dei documenti archiviati in modo che i vettori dei documenti e delle query rimangano compatibili.