Come i database vettoriali plasmano il futuro delle soluzioni di intelligenza artificiale generativa?

Il futuro delle soluzioni di intelligenza artificiale generativa plasmato dai database vettoriali

Introduzione

Nell’evoluzione rapida del panorama dell’IA generativa, il ruolo cruciale dei database vettoriali è diventato sempre più evidente. Questo articolo si addentra nella sinergia dinamica tra i database vettoriali e le soluzioni di intelligenza artificiale generativa, esplorando come queste fondamenta tecnologiche stiano plasmando il futuro della creatività dell’intelligenza artificiale. Unisciti a noi in un viaggio attraverso le complessità di questa potente alleanza, scoprendo l’impatto trasformativo che i database vettoriali portano in primo piano nelle innovative soluzioni di intelligenza artificiale.

Obiettivi di Apprendimento

Questo articolo ti aiuta a comprendere gli aspetti del Database Vettoriale di seguito.

  • Significato dei Database Vettoriali e dei loro componenti chiave
  • Studio dettagliato del confronto tra Database Vettoriale e Database Tradizionale
  • Esplorazione degli Embedding Vettoriali da un punto di vista applicativo
  • Creazione di un database vettoriale utilizzando Pincone
  • Implementazione di un database vettoriale di Pincone utilizzando il modello langchain LLM

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Cos’è un Database Vettoriale?

Un database vettoriale è una forma di raccolta dati memorizzata nello spazio. Tuttavia, qui è memorizzata in rappresentazioni matematiche poiché il formato memorizzato nei database facilita la memorizzazione degli input per i modelli AI aperti e consente all’applicazione di AI aperta di utilizzare la ricerca cognitiva, le raccomandazioni e la generazione di testo per vari casi d’uso nelle industrie trasformate digitalmente. La memorizzazione e il recupero dei dati sono chiamati “Embedding Vettoriali” o “Embedding”. Inoltre, questi sono rappresentati in un formato di matrice numerica. La ricerca è molto più facile rispetto ai database tradizionali usati per prospettive di AI con capacità indicizzate e di grandi dimensioni.

Caratteristiche dei Database Vettoriali

  • Sfrutta la potenza di questi embedding vettoriali, consentendo l’indicizzazione e la ricerca in un enorme dataset.
  • Compatibile con tutti i formati di dati (immagini, testo o dati).
  • Poiché adatta tecniche di embedding e funzionalità altamente indicizzate, può offrire una soluzione completa per la gestione dei dati e l’input per il problema specifico.
  • Un database vettoriale organizza i dati tramite vettori ad alta dimensionalità contenenti centinaia di dimensioni. Possiamo configurarli molto rapidamente.
  • Ogni dimensione corrisponde a una specifica caratteristica o proprietà dell’oggetto dati che rappresenta.

Database Tradizionale Vs. Database Vettoriale

  • L’immagine mostra il flusso di lavoro tradizionale e vettoriale del database a un livello elevato
  • Le interazioni formali con il database avvengono tramite dichiarazioni SQL e i dati sono memorizzati in formato riga o tabella.
  • Nel database vettoriale, le interazioni avvengono tramite testo semplice (ad esempio, inglese) e i dati sono memorizzati in rappresentazioni matematiche.

Somiglianza tra Database Tradizionali e Vettoriali

Dobbiamo considerare come i database vettoriali differiscano da quelli tradizionali. Discutiamone qui. Una differenza rapida che posso dare è che nei database convenzionali i dati sono memorizzati esattamente così come sono; possiamo aggiungere una logica aziendale per ottimizzare i dati e unire o dividere i dati in base alle esigenze o alle richieste aziendali. Tuttavia, il database vettoriale subisce una trasformazione massiccia e i dati diventano una rappresentazione vettoriale complessa.

Ecco una mappa per la tua comprensione e chiarezza con i database relazionali rispetto ai database vettoriali. L’immagine sottostante è autoesplicativa per comprendere i database vettoriali rispetto ai database tradizionali. In breve, è possibile eseguire inserimenti e cancellazioni in database vettoriali, ma non istruzioni di aggiornamento.

Semplice Analogia per Comprendere i Database Vettoriali

Il contenuto dei dati viene automaticamente organizzato nello spazio in base alla similarità dei contenuti nelle informazioni archiviate. Quindi, consideriamo il negozio di dipartimento come analogia al database vettoriale; tutti i prodotti sono disposti sugli scaffali in base alla natura, allo scopo, alla produzione, all’uso e alla quantità. In un comportamento simile, i dati vengono automaticamente organizzati nel database vettoriale tramite una simile classificazione, anche se il genere non era ben definito durante l’archiviazione o l’accesso ai dati.

I database vettoriali consentono una granularità e dimensioni prominenti sulle somiglianze specifiche, così il cliente cerca il prodotto desiderato, il produttore e la quantità e tiene l’articolo nel carrello. Il database vettoriale memorizza tutti i dati in una struttura di archiviazione perfetta; qui, gli ingegneri di Machine Learning e AI non devono etichettare o contrassegnare manualmente i contenuti archiviati.

Teorie essenziali dietro i database vettoriali

  • Introduzione al concetto di Vector Embedding
  • Requisiti di indicizzazione
  • Comprensione della ricerca semantica e di similarità

Introduzione al concetto di Vector Embedding

Un vector embedding è una rappresentazione vettoriale in termini di valori numerici. In un formato compresso, gli embedding catturano le proprietà intrinseche e le associazioni dei dati originali, rendendoli una caratteristica fondamentale nei casi d’uso di Intelligenza Artificiale e Machine Learning. Progettare embedding per codificare informazioni pertinenti sui dati originali in uno spazio a dimensione ridotta garantisce una velocità di recupero elevata, efficienza computazionale ed una conservazione efficiente.

Catturare l’essenza dei dati in modo strutturato in modo identico è il processo di vector embedding, che forma un ‘Modello di Embedding’. In definitiva, questi modelli considerano tutti gli oggetti dei dati, estraggono pattern significativi e relazioni all’interno della fonte dati e li trasformano in vector embeddings. Successivamente, gli algoritmi sfruttano questi vector embeddings per eseguire varie attività. Numerosi modelli di embedding altamente sviluppati, disponibili online gratuitamente o a pagamento, facilitano il raggiungimento del vector embedding.

Ambito degli embedding vettoriali dal punto di vista delle applicazioni

Questi embedding sono compatti, contengono informazioni complesse, ereditano le relazioni tra i dati archiviati in un database vettoriale, consentono un’analisi di elaborazione dati efficiente per facilitare la comprensione e la presa di decisioni, ed elaborano dinamicamente vari prodotti dati innovativi in qualsiasi organizzazione.

Le tecniche di vector embedding sono essenziali per colmare il divario tra i dati leggibili e gli algoritmi complessi. Con i tipi di dati che sono vettori numerici, siamo stati in grado di sbloccare il potenziale per una vasta varietà di applicazioni di Intelligenza Artificiale generativa insieme a modelli Open AI disponibili.

Svolgimento di attività multiple con il vector embedding

Questo vector embedding ci aiuta a svolgere varie attività:

  • Recupero delle informazioni: Con l’aiuto di queste potenti tecniche, possiamo creare motori di ricerca influenti che ci permettono di trovare risposte in base alle query degli utenti dai file, documenti o media archiviati
  • Ricerca di similarità: Essendo ben organizzata e indicizzata, ci aiuta a trovare la similarità tra diverse occorrenze nei dati vettoriali.
  • Classificazione e clustering: Utilizzando queste tecniche di embedding, possiamo eseguire modelli per addestrare algoritmi di Machine Learning rilevanti e raggruppare e classificare i dati.
  • Sistemi di raccomandazione: Poiché le tecniche di embedding sono organizzate correttamente, conducono a sistemi di raccomandazione che collegano accuratamente prodotti, media e articoli in base ai dati storici.
  • Analisi dei sentimenti: Questo modello di embedding ci aiuta a categorizzare e derivare soluzioni di sentimenti.

Requisiti di indicizzazione

Come sappiamo, l’indicizzazione migliorerà la ricerca dei dati dalla tabella nei database tradizionali, simile ai database vettoriali, e fornisce le funzionalità di indicizzazione.

I database vettoriali forniscono “indici piatti”, che sono la rappresentazione diretta del vector embedding. La capacità di ricerca è completa e non utilizza cluster pre-addestrati. La ricerca del vettore di query viene effettuata su ogni singolo vector embedding e vengono calcolate le distanze K per ogni coppia.

  • A causa della facilità di questo indice, è richiesto un minimo di calcolo per creare i nuovi indici.
  • Infatti, un indice piatto può gestire le query in modo efficace e fornire tempi di recupero rapidi.

Eseguiamo due diversi tipi di ricerche nei database vettoriali: ricerca semantica e ricerca di similarità.

  • Ricerca semantica: Durante la ricerca di informazioni, anziché cercare per parole chiave, puoi trovarle basandoti sulla metodologia della conversazione significativa. L’ingegneria prompt svolge un ruolo fondamentale nel passaggio degli input al sistema. Questa ricerca permette indubbiamente una ricerca di qualità superiore e dei risultati che possono essere utilizzati per applicazioni innovative, SEO, generazione di testo e riassunto.
  • Ricerca di similarità: Sempre nell’analisi dei dati, la ricerca di similarità consente una migliore strutturazione dei dataset non strutturati. Per quanto riguarda i database vettoriali, dobbiamo verificare la vicinanza tra due vettori e come si somigliano tra di loro: tabelle, testi, documenti, immagini, parole e file audio. Nel processo di comprensione, la similarità tra i vettori si manifesta come la similitudine tra gli oggetti dati nel dataset fornito. Questo esercizio ci aiuta a capire le interazioni, identificare i modelli, estrarre intuizioni e prendere decisioni dal punto di vista delle applicazioni. La ricerca semantica e di similarità ci aiuterà a costruire le seguenti applicazioni per i vantaggi nell’industria.
  • Recupero delle informazioni: Utilizzando Open AI e i database vettoriali, costruiremo motori di ricerca per il recupero delle informazioni utilizzando le query degli utenti aziendali o degli utenti finali e i documenti indicizzati all’interno del database vettoriale.
  • Classificazione e clustering: Classificare o raggruppare punti di dati simili o gruppi di oggetti comporta l’assegnazione a più categorie in base alle caratteristiche comuni.
  • Rilevamento delle anomalie: Scoprire anomalie dai modelli usuali misurando la similarità dei punti di dati e individuando irregolarità.

Tipi di misurazioni di similarità nei database vettoriali

I metodi di misurazione dipendono dalla natura dei dati e dall’applicazione specifica. Comunemente, tre metodi vengono utilizzati per misurare la similarità e la familiarità con l’apprendimento automatico.

Distanza euclidea

In termini semplici, la distanza tra due vettori è la distanza in linea retta tra i due punti vettoriali che ne misura la magnit.

Prodotto scalare

Questo ci aiuta a capire l’allineamento tra due vettori, indicando se puntano nella stessa direzione, in direzioni opposte o sono perpendicolari tra loro.

Similarità coseno

Valuta la similarità tra due vettori utilizzando l’angolo tra di loro, come mostrato nella figura. In questo caso, i valori e la magnitudine dei vettori sono insignificanti e non influiscono sui risultati; viene considerato solo l’angolo nel calcolo.

I database tradizionali cercano corrispondenze esatte di istruzioni SQL e recuperano i dati in formato tabellare. Allo stesso tempo, nei database vettoriali, cerchiamo il vettore più simile alla query di input in lingua semplice utilizzando tecniche di ingegnerizzazione dei prompt. Il database utilizza l’algoritmo di ricerca del vicino approssimato (ANN) per trovare dati simili. Fornisce sempre risultati ragionevolmente accurati con elevate prestazioni, precisione e tempo di risposta.

Meccanismo di funzionamento

  • I database vettoriali convertono prima i dati in vettori di embedding, li memorizzano nei database vettoriali e creano un’indicizzazione per una ricerca più veloce.
  • Una query dall’applicazione interagirà con il vettore di embedding, cercando il vicino più prossimo o dati simili nel database vettoriale utilizzando un indice e recuperando i risultati da passare all’applicazione.
  • In base alle esigenze aziendali, i dati recuperati devono essere perfezionati, formattati e visualizzati sul lato dell’utente finale o inviati come query o azioni.

Creazione di un database vettoriale

Collegati a Pinecone.

https://app.pinecone.io/

Puoi connetterti a Pinecone utilizzando Google, GitHub o Microsoft ID.

Crea un nuovo account utente per il tuo utilizzo.

Dopo aver effettuato l’accesso, verrai indirizzato alla pagina di indice; puoi creare un indice per le tue finalità di database Vector. Clicca sul pulsante Crea Indice.

Crea il tuo nuovo indice fornendo Nome e Dimensioni.

Pagina di elenco degli indici,

Dettagli dell’indice – Nome, Regione e Ambiente – Abbiamo bisogno di tutti questi dettagli per connettere il nostro database Vector dal codice di creazione del modello.

Dettagli delle impostazioni di progetto,

Puoi aggiornare le tue preferenze per più indici e chiavi per scopi di progetto.

Fino ad ora, abbiamo discusso della creazione dell’indice del database Vector e delle impostazioni in Pinecone.

Implementazione del database Vector utilizzando Python

Facciamo un po’ di codice ora.

Importazione delle librerie

from langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain.llms import OpenAIfrom langchain.vectorstores import Pineconefrom langchain.document_loaders import TextLoaderfrom langchain.chains.question_answering import load_qa_chainfrom langchain.chat_models import ChatOpenAI

Fornire la chiave API per OpenAI e il database Vector

import osos.environ["OPENAI_API_KEY"] = "xxxxxxxx"PINECONE_API_KEY = os.environ.get('PINECONE_API_KEY', 'xxxxxxxxxxxxxxxxxxxxxxx')PINECONE_API_ENV = os.environ.get('PINECONE_API_ENV', 'gcp-starter')api_keys="xxxxxxxxxxxxxxxxxxxxxx"llm = OpenAI(OpenAI=api_keys, temperature=0.1)

Inizializzare il LLM

llm=OpenAI(openai_api_key=os.environ["OPENAI_API_KEY"],temperature=0.6)

Inizializzare Pinecone

import pineconepinecone.init(    api_key=PINECONE_API_KEY,      environment=PINECONE_API_ENVindex_name = "demoindex" 

Caricamento del file .csv per la costruzione del database vettoriale

from langchain.document_loaders.csv_loader import CSVLoaderloader = CSVLoader(file_path="/content/drive/My Drive/Colab_Notebooks/cereal.csv",source_column="name")data = loader.load()

Dividere il testo in parti

text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=20)text_chunks = text_splitter.split_documents(data)

Trovare il testo in text_chunk

text_chunks

Output

[Document(page_content=‘name: 100% Bran\nmfr: N\ntype: C\ncalories: 70\nprotein: 4\nfat: 1\nsodium: 130\nfiber: 10\ncarbo: 5\nsugars: 6\npotass: 280\nvitamins: 25\nshelf: 3\nweight: 1\ncups: 0.33\nrating: 68.402973\nrecommendation: Kids’, metadata={‘source’: ‘100% Bran’, ‘row’: 0}), , …..

Costruzione dell’embedding

embeddings = OpenAIEmbeddings()

Crea un’istanza di Pinecone per il database vettoriale dai dati ‘data’

vectordb = Pinecone.from_documents(text_chunks, embeddings, index_name="demoindex")

Crea un retriever per interrogare il database vettoriale.

retriever = vectordb.as_retriever(score_threshold=0.7)

Ottieni dati dal database vettoriale

rdocs = retriever.get_relevant_documents("Cocoa Puffs")rdocs

Utilizza Prompt e recupera i dati

from langchain.prompts import PromptTemplateprompt_template = """Dati il contesto seguente e una domanda, genera una risposta basata solo su questo contesto. Ti prego di dire "Non lo so". Non cercare di inventare una risposta.CONTESTO: {context}DOMANDA: {question}"""PROMPT = PromptTemplate(template=prompt_template, input_variables=["context", "question"])chain_type_kwargs = {"prompt": PROMPT}

from langchain.chains import RetrievalQAchain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever, input_key="query", return_source_documents=True, chain_type_kwargs=chain_type_kwargs)

Esegui la query dei dati.

chain('Puoi per favore consigliare una marca di cereali per bambini?')

Risultato della query

{'query': 'Puoi per favore consigliare una marca di cereali per bambini?','result': [Document(page_content='nome: Crispix\nproduttore: K\ntipo: C\n calorie: 110\nproteine: 2\ngrassi: 0\nsodio: 220\nfibra: 1\ncarbo: 21\nzuccheri: 3\npotassio: 30\nvitamine: 25\nscaffale: 3\npeso: 1\ntazze: 1\nrating: 46.895644\nconsigli: per bambini', metadata={'row': 21.0, 'source': '/content/drive/My Drive/Colab_Notebooks/cereal.csv'}), ..]

Conclusioni

Spero che tu possa capire come funzionano i database vettoriali, i loro componenti, l’architettura e le caratteristiche dei database vettoriali nelle soluzioni di intelligenza artificiale generativa. Capisci come il database vettoriale sia diverso dal database tradizionale e come si confronti con gli elementi del database convenzionale. In effetti, l’analogia ti aiuta a capire meglio il database vettoriale. I passaggi del database vettoriale Pinecone e l’indicizzazione ti aiuteranno a creare un database vettoriale e a ottenere la chiave per l’implementazione del codice seguente.

Punti chiave

  • Compatibile con dati strutturati, non strutturati e semi-strutturati.
  • Si adatta alle tecniche di embedding e alle caratteristiche altamente indicizzate.
  • Le interazioni avvengono attraverso il testo normale utilizzando un prompt (ad esempio, in inglese). E i dati sono memorizzati in rappresentazioni matematiche.
  • La calibrazione della similarità nei database vettoriali avviene mediante – Distanza euclidea, Similarità coseno e Prodotto punto.

Domande frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e sono utilizzati a discrezione dell’autore.