HKU PNL

HKU PNL / instructor-large

Un modello ottimizzato per le istruzioni e adattato alle incorporazioni di testo; prestazioni migliori di `istruttore-base', ma peggiori di `istruttore-xl'.

Introduzione alla famiglia del Modello Istruttore

Il modello Instructor di NKU NLP è un modello di text embedding ottimizzato con istruzioni. Crea incorporazioni specifiche (per la classificazione, il reperimento, il clustering, la valutazione del testo, ecc.) in vari domini (come la scienza e la finanza) semplicemente fornendo istruzioni per l'attività, senza bisogno di ulteriori messe a punto. Ha ottenuto risultati all'avanguardia su 70 compiti di embedding!

Figura Come funziona il Modello Istruttore Figura Come funziona il Modello Istruttore

Figura: Funzionamento del modello istruttore (immagine di NKU NLP)

Il modello Istruttore è disponibile in tre varianti: [instructor-base] (istruttore-base), [instructor-xl] (https://zilliz.com/ai-models/instructor-xl) e [instructor-large] (https://zilliz.com/ai-models/instructor-large). Ogni versione offre diversi livelli di prestazioni e scalabilità per soddisfare le varie esigenze di incorporazione.

Introduzione a istruttore-grande

istruttore-grande è il modello di incorporazione del testo di medie dimensioni della famiglia di modelli Instructor. È in grado di generare incorporazioni di testo specifiche per il compito e per il dominio, fornendo istruzioni in linguaggio naturale senza ulteriori messe a punto. È ideale per qualsiasi compito (ad esempio, classificazione, recupero, clustering, valutazione del testo, ecc.) e dominio (ad esempio, scienza, finanza, ecc.). instructor-large ha ottenuto un SOTA su 70 compiti di incorporazione diversi nel benchmark MTEB.

Ha prestazioni migliori di instructor-base ma peggiori di instructor-xl.

Confronto tra instructor-base, instructor-xl e instructor-large:

Featureinstructor-baseinstructor-largeinstructor-xl
Dimensione dei parametri86 milioni335 milioni1,5 miliardi
Dimensione di incorporazione768768768768
Punteggio MTEB Avg. Punteggio MTEB55,958,458,8

Come creare le incorporazioni vettoriali con il modello instructor-large

Si consiglia di utilizzare la libreria InstructorEmbedding per creare incorporazioni vettoriali.

Una volta generate le incorporazioni vettoriali, queste possono essere archiviate in Zilliz Cloud (un servizio di database vettoriale completamente gestito da Milvus) e utilizzate per la ricerca di similarità semantica. Ecco i quattro passaggi chiave:

  1. Iscriviti per un account Zilliz Cloud gratuito.
  2. Configurare un cluster serverless e ottenere il Public Endpoint and API Key.
  3. Creare una collezione di vettori e inserire i propri embeddings vettoriali.
  4. Eseguire una ricerca semantica sugli embeddings memorizzati.

Generare embeddings vettoriali tramite la libreria InstructorEmbedding e inserirli in Zilliz Cloud per la ricerca semantica.

da InstructorEmbedding importare INSTRUCTOR
da pymilvus import MilvusClient

model = INSTRUCTOR('hkunlp/instructor-large')

docs = [["Rappresenta il documento di Wikipedia per il recupero: ", "L'intelligenza artificiale è stata fondata come disciplina accademica nel 1956."],
        ["Rappresenta il documento di Wikipedia per il recupero: ", "Alan Turing è stato il primo a condurre ricerche sostanziali nel campo dell'intelligenza artificiale."],
        ["Rappresentare il documento di Wikipedia per il recupero: ", "Nato a Maida Vale, Londra, Turing è cresciuto nel sud dell'Inghilterra"]].
# Generare embeddings per i documenti
docs_embeddings = model.encode(docs, normalize_embeddings=True)

query = [["Rappresenta la domanda di Wikipedia per recuperare i documenti di supporto: ", "Quando è stata fondata l'intelligenza artificiale"],
           ["Rappresenta la domanda di Wikipedia per il reperimento di documenti di supporto: ", "Dove è nato Alan Turing?"]]
# Generare embeddings per le query
query_embeddings = model.encode(queries, normalize_embeddings=True)

# Connettersi a Zilliz Cloud con l'endpoint pubblico e la chiave API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLEZIONE = "documenti"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(nome_raccolta=COLLEZIONE)
client.create_collection(
    nome_collezione=COLLEZIONE,
    dimensione=768,
    auto_id=True)

per doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
risultati = client.search(
    nome_collezione=COLLEZIONE,
    dati=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])