Utilizzare i modelli di embedding per creare embedding di testo che catturino il significato di una frase o di un brano. È possibile utilizzare questi modelli con classificatori come le macchine vettoriali di supporto. L'incorporazione di modelli può essere utile anche per le attività di generazione aumentata dal reperimento.
Il diagramma seguente illustra il modello di generazione con supporto al recupero e all'incorporazione.
Il modello di generazione con supporto al recupero e all'incorporazione prevede le seguenti fasi:
- Convertire i contenuti in incorporazioni di testo e memorizzarli in un archivio di dati vettoriali.
- Utilizzare lo stesso modello di embedding per convertire l'input dell'utente in embedding di testo.
- Eseguite una ricerca per similarità o semantica nella vostra base di conoscenza per trovare i contenuti correlati alla domanda dell'utente.
- Inserite i risultati di ricerca più rilevanti nel vostro prompt come contesto e aggiungete un'istruzione, come "Rispondete alla seguente domanda utilizzando solo le informazioni contenute nei seguenti passaggi"
- Inviare il testo combinato del prompt (istruzione + risultati della ricerca + domanda) al foundation model.
- Il foundation model utilizza le informazioni contestuali del prompt per generare una risposta fattuale.
Per ulteriori informazioni, vedere:
Utilizzare le incorporazioni
Le incorporazioni USE sono dei wrapper attorno alle incorporazioni di Google Universal Sentence Encoder, disponibili in TFHub. Queste incorporazioni vengono utilizzate nell'algoritmo SVM di classificazione dei documenti. Per un elenco di embeddings USE pre-addestrati e delle loro lingue supportate, vedere Embeddings USE pre-addestrati inclusi
Quando si utilizzano le incorporazioni USE, considerare quanto segue:
Scegliere "
embedding_use_en_stock
se il compito prevede un testo in inglese.Scegliere una delle incorporazioni USE multilingue se il compito prevede un testo in una lingua diversa dall'inglese o se si desidera addestrare modelli multilingue.
Le incorporazioni USE presentano diversi compromessi tra la qualità del modello addestrato e il throughput al momento dell'inferenza, come descritto di seguito. Provate diverse incorporazioni per decidere il compromesso tra qualità del risultato e velocità di inferenza più adatto al vostro caso d'uso.
embedding_use_multi_small
ha una qualità ragionevole, ma è veloce nel momento dell'inferenzaembedding_use_en_stock
è una versione solo inglese di 'embedding_embedding_use_multi_small
, quindi è più piccola e presenta un throughput di inferenza più elevatoembedding_use_multi_large
è basato sull'architettura Transformer e quindi fornisce una qualità di risultato più elevata, con un throughput inferiore al momento dell'inferenza
Esempio di codice
import watson_nlp
syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_use_en_stock")
text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)
Output dell'esempio di codice:
{
"data": {
"data": [
-0.01909315399825573,
-0.009827353060245514,
...
0.008978910744190216,
-0.0702751949429512
],
"rows": 1,
"cols": 512,
"dtype": "float32"
},
"offsets": null,
"producer_id": null
}
Inclusi embeddings USE pretrainati
La tabella seguente elenca i blocchi preaddestrati per le incorporazioni USE disponibili e le lingue supportate. Per un elenco dei codici lingua e della lingua corrispondente, vedere Codici lingua.
Nome blocco | Nome modello | Lingue supportate |
---|---|---|
use |
embedding_use_en_stock |
Solo in lingua inglese |
use |
embedding_use_multi_small |
ar, de, el, en, es, fr, it, ja, ko, nb, nl, pl, pt, ru, th, tr, zh_tw, zh |
use |
embedding_use_multi_large |
ar, de, el, en, es, fr, it, ja, ko, nb, nl, pl, pt, ru, th, tr, zh_tw, zh |
Incorporazioni GloVe
Le incorporazioni GloVe sono utilizzate dal classificatore CNN.
Nome del blocco: " embedding_glove__stock
Lingue supportate: ar, de, en, es, fr, it, ja, ko, nl, pt, zh-cn
Esempio di codice
import watson_nlp
syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_glove_en_stock")
text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)
Output dell'esempio di codice:
{
"data": {
"data": [
-0.01909315399825573,
-0.009827353060245514,
...
0.008978910744190216,
-0.0702751949429512
],
"rows": 1,
"cols": 512,
"dtype": "float32"
},
"offsets": null,
"producer_id": null
}
Incorporazione di trasformatori
Nomi dei blocchi
embedding_transformer_en_slate.125m
embedding_transformer_en_slate.30m
Lingue supportate
Solo in lingua inglese
Esempio di codice
import watson_nlp
# embeddings_model = watson_nlp.load("embedding_transformer_en_slate.125m")
embeddings_model = watson_nlp.load("embedding_transformer_en_slate.30m")
text = "python"
embedding = embeddings_model.run(text)
print(embedding)
Output dell'esempio di codice
{
"data": {
"data": [
-0.055536773055791855,
0.008286023512482643,
...
-0.3202415108680725,
5.000295277568512e-05
],
"rows": 1,
"cols": 384,
"dtype": "float32"
},
"offsets": null,
"producer_id": {
"name": "Transformer Embeddings",
"version": "0.0.1"
}
}
Argomento principale: Catalogo delle attività di elaborazione del linguaggio naturaleWatson