Apache SeaTunnel, Milvus e OpenAI migliorano l’accuratezza e l’efficienza della ricerca di similitudine dei titoli dei libri.

Apache SeaTunnel, Milvus e OpenAI miglioramento dell'accuratezza e dell'efficienza nella ricerca di similitudine dei titoli dei libri.

Attualmente, le soluzioni di ricerca dei libri esistenti (come quelle utilizzate nelle biblioteche pubbliche) si basano pesantemente sulla corrispondenza delle parole chiave anziché sulla comprensione semantica del contenuto effettivo dei titoli dei libri. Di conseguenza, i risultati della ricerca potrebbero non soddisfare molto bene le nostre esigenze o addirittura essere molto diversi da quello che ci aspettiamo. Questo perché affidarsi esclusivamente alla corrispondenza delle parole chiave non è sufficiente, poiché non può raggiungere la comprensione semantica e, quindi, non può capire la vera intenzione del cercatore.

Allora, c’è un modo migliore per condurre ricerche dei libri in modo più accurato ed efficiente? La risposta è sì! In questo articolo, ti presenterò come combinare l’uso di Apache SeaTunnel, Milvus e OpenAI per la ricerca di similarità al fine di ottenere una comprensione semantica dell’intero titolo del libro e rendere i risultati della ricerca più accurati.

Usare modelli addestrati per rappresentare i dati di input viene chiamato ricerca semantica, e questo approccio può essere esteso a vari casi d’uso basati su testo, tra cui rilevamento di anomalie e ricerca di documenti. Pertanto, la tecnologia presentata in questo articolo può portare a significativi progressi e impatti nel campo della ricerca dei libri.

Successivamente, introdurrò brevemente alcuni concetti e strumenti/piattaforme correlati a questo articolo al fine di comprendere meglio l’articolo stesso.

Che cos’è Apache SeaTunnel?

Apache SeaTunnel è una piattaforma open-source di gestione e calcolo dati distribuiti ad alte prestazioni. È un progetto di alto livello supportato dalla Apache Foundation, in grado di gestire enormi quantità di dati, fornire query e calcoli di dati in tempo reale e supportare molteplici origini e formati di dati. L’obiettivo di SeaTunnel è fornire una piattaforma di gestione e integrazione dati a livello enterprise scalabile che possa soddisfare varie esigenze di elaborazione di dati su larga scala.

Che cos’è Milvus?

Milvus è un motore di ricerca di similarità vettoriale open-source che supporta l’archiviazione, il recupero e la ricerca di similarità di vettori massivi. È una soluzione ad alte prestazioni e a basso costo per dati vettoriali su larga scala. Milvus può essere utilizzato in vari scenari, come sistemi di raccomandazione, ricerca di immagini, raccomandazione musicale, ecc.

Che cos’è OpenAI?

ChatGPT è un sistema di intelligenza artificiale conversazionale basato sul modello Generative Pre-trained Transformer (GPT) sviluppato da OpenAI. Il sistema utilizza principalmente tecnologie di elaborazione del linguaggio naturale e di apprendimento profondo per generare testo in linguaggio naturale simile a una conversazione umana. ChatGPT ha una vasta gamma di applicazioni, tra cui servizio clienti intelligente, chatbot, assistenti intelligenti e ricerca e sviluppo di modelli di linguaggio. Negli ultimi anni, ChatGPT è diventato uno dei temi di ricerca più caldi nel campo dell’elaborazione del linguaggio naturale.

Che cos’è LLM?

Un Large Language Model (LLM) è un modello di elaborazione del linguaggio naturale basato sulla tecnologia di apprendimento profondo in grado di analizzare e comprendere un testo dato e generare contenuti di testo ad esso correlati. I grandi modelli di linguaggio utilizzano tipicamente reti neurali profonde per apprendere la grammatica e le regole semantiche del linguaggio naturale e convertire i dati testuali in rappresentazioni vettoriali in uno spazio vettoriale continuo. Durante l’addestramento, i grandi modelli di linguaggio utilizzano una grande quantità di dati testuali per apprendere i modelli linguistici e le regole statistiche, il che consente loro di generare contenuti di testo di alta qualità come articoli, notizie e conversazioni. I grandi modelli di linguaggio hanno una vasta gamma di applicazioni, tra cui la traduzione automatica, la generazione di testo, i sistemi di risposta a domande, il riconoscimento vocale, ecc. Attualmente, molti framework di apprendimento profondo open-source forniscono implementazioni di grandi modelli di linguaggio, come TensorFlow, PyTorch, ecc.

Tutorial

Eccoci qua! Ti mostrerò come combinare Apache SeaTunnel, l’API di Embedding di OpenAI, con il nostro database vettoriale per eseguire una ricerca semantica sull’intero titolo del libro.

Preparazione

Prima dell’esperimento, dobbiamo ottenere un token OpenAI dal loro sito ufficiale e quindi configurare un ambiente di sperimentazione Milvus. Dobbiamo anche preparare i dati che verranno utilizzati per questo esempio. Puoi scaricare i dati da qui.

Importazione dei dati in Milvus tramite SeaTunnel.

Prima, posiziona il file book.csv in /tmp/milvus_test/book, quindi configura la configurazione del task come milvus.conf e posizionala in config. Fai riferimento alla Guida rapida.

env {  # Puoi impostare la configurazione del motore qui  execution.parallelism = 1  job.mode = "BATCH"  checkpoint.interval = 5000  #execution.checkpoint.data-uri = "hdfs://localhost:9000/checkpoint"}

source {  # Questo è un plug-in di origine di esempio **solo per test e dimostrazione delle funzionalità del plug-in di origine**  LocalFile {    schema {      fields {        bookID = string        title_1 = string        title_2 = string      }    }    path = "/tmp/milvus_test/book"    file_format_type = "csv"  }}transform {}sink {  Milvus {    milvus_host = localhost    milvus_port = 19530    username = root    password = Milvus    collection_name = title_db    openai_engine = text-embedding-ada-002    openai_api_key = sk-xxxx    embeddings_fields = title_2  }}

Esegui il seguente comando:

./bin/SeaTunnel.sh --config ./config/milvus.conf -e locale

Osservando i dati nel database, puoi vedere che i dati sono stati scritti al suo interno.

Successivamente, utilizza il seguente codice per eseguire una ricerca semantica sui titoli dei libri:

import jsonimport randomimport openaiimport timefrom pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility

NOME_COLLEZIONE = 'title_db'  # Nome della collezioneDIMENSIONE = 1536  # Dimensione dei embeddingCONTATORE = 100  # Quanti titoli incorporare e inserire.SERVER_MILVUS = 'localhost'  # URI del server Milvus.PORTA_MILVUS = '19530'MOTORE_OPENAI = 'text-embedding-ada-002'  # Quale motore utilizzareopenai.api_key = 'sk-******'  # Usa la tua chiave API di Open AIconnections.connect(host=SERVER_MILVUS, port=PORTA_MILVUS)collezione = Collection(name=NOME_COLLEZIONE)collezione.load()def incorpora(testo):    return openai.Embedding.create(        input=testo,         engine=MOTORE_OPENAI)["data"][0]["embedding"]def ricerca(testo):    # Parametri di ricerca per l'indice    parametri_ricerca={        "metric_type": "L2"    }    risultati=collezione.search(        data=[incorpora(testo)],  # Valore di ricerca incorporato        anns_field="title_2",  # Ricerca attraverso gli embedding        param=parametri_ricerca,        limit=5,  # Limite a cinque risultati per ricerca        output_fields=['title_1']  # Includi il campo del titolo nel risultato    )    ret=[]    for hit in risultati[0]:        riga=[]        riga.extend([hit.id, hit.score, hit.entity.get('title_1')])  # Ottieni l'id, la distanza e il titolo dei risultati        ret.append(riga)    return rettermini_ricerca=['autocrescita', 'paesaggio']for x in termini_ricerca:    print('Termine di ricerca:', x)    for risultato in ricerca(x):        print(risultato)    print()

Ecco il risultato:

Termine di ricerca: autocrescita[96, 0.4079835116863251, "La danza dell'intimità: guida di una donna a gesti coraggiosi di cambiamento nelle relazioni chiave"][56, 0.41880303621292114, 'Etica Nicomachea'][76, 0.4309804439544678, 'Possession'][19, 0.43588975071907043, 'Vanity Fair'][7, 0.4423919916152954, 'Il sapere è potere (I fantastici giorni di Abby Hayes: #15)']

Termine di ricerca: paesaggio[9, 0.3023473024368286, 'Il mondo dipinto'][1, 0.3906732499599457, 'Le colline della collera'][78, 0.392495334148407, 'Atlante delle nuvole'][95, 0.39346450567245483, 'Alien'][94, 0.399422287940979, 'Il mondo conosciuto']

Se utilizziamo il vecchio metodo della ricerca per parola chiave, i titoli dei libri devono contenere parole chiave come “autocrescita” e “miglioramento”. Tuttavia, utilizzando modelli linguistici ampi per la comprensione semantica, possiamo recuperare titoli di libri più pertinenti alle nostre esigenze. Ad esempio, nell’esempio precedente, quando abbiamo cercato la parola chiave “autocrescita”, i titoli dei libri visualizzati come “La danza dell’intimità: guida di una donna a gesti coraggiosi di cambiamento nelle relazioni chiave” e “Etica Nicomachea” non contenevano parole chiave pertinenti, ma erano chiaramente più rilevanti alle nostre esigenze.

Pertanto, utilizzando Apache SeaTunnel, Milvus e OpenAI, possiamo ottenere ricerche più accurate sulla similarità dei titoli dei libri attraverso modelli linguistici ampi, apportando significativi progressi tecnologici nel campo della ricerca dei libri e fornendo allo stesso tempo preziose referenze per la comprensione semantica. Spero che ciò possa fornire un po’ di ispirazione a tutti.