Come ho convertito un normale RDBMS in un database vettoriale per archiviare gli embedding
Come ho trasformato un RDBMS in un database vettoriale per memorizzare gli embedding.
Nel mondo dell’Intelligenza Artificiale Generativa di oggi, il database vettoriale è diventato una delle parti integrali nella progettazione di applicazioni basate su LLM. Che tu stia pianificando di costruire un’applicazione utilizzando OpenAI o Google’s Generative AI o che tu stia pensando di risolvere casi d’uso come la progettazione di un motore di raccomandazione o la costruzione di una visione artificiale (CV) o un database vettoriale, sarebbe un componente importante da considerare.
Cos’è un database vettoriale e perché sono diversi dal database tradizionale?
Nel mondo del machine learning, i vettori o gli embeddings rappresentano la rappresentazione numerica o matematica dei dati, che possono essere testo, immagini o contenuti multimediali (audio o video). LLM da OpenAI o altri possono trasformare i dati regolari in embeddings vettoriali con multidimensionalità di alto livello e memorizzarli nello spazio vettoriale. Queste forme numeriche aiutano a determinare il significato semantico tra i dati o a identificare schemi o clustering, o a stabilire relazioni. I database relazionali basati su colonne o i database NoSQL non sono in grado di memorizzare dati di embeddings vettoriali con multidimensionalità ed espansione efficiente se necessario. Qui entra in gioco un database vettoriale, che è un tipo speciale di database progettato per gestire e memorizzare questo tipo di dati di embeddings e, allo stesso tempo, offre alte prestazioni e scalabilità.
Durante il recupero dei dati o la ricerca degli indici, il database tradizionale restituisce risultati che corrispondono esattamente alla query, mentre il database vettoriale utilizza algoritmi come il Kth-Nearest Neighbor (K-NN) o l’Approximate Nearest Neighbor (A-NN) per trovare vettori simili nelle stesse dimensioni o con la distanza più breve, applicando l’algoritmo del coseno e restituendo risultati simili. Ciò aiuta a risolvere casi d’uso come la ricerca di immagini simili tra insiemi di foto scattate, la costruzione di un motore di raccomandazione basato sull’uso o l’identificazione di schemi tra un pool di grandi dataset.
Come puoi vedere, il database vettoriale è dotato della capacità di memorizzare ed effettuare ricerche efficienti sui dati vettoriali, il che è essenziale per progettare e costruire applicazioni di intelligenza artificiale utilizzando i Large Language Models (LLM). Abbiamo molti database vettoriali come utilizzi On-Premise come Redis Enterprise o Milvus o offerte SAAS come Pinecone. In questo articolo, esploreremo il database relazionale più popolare, Postgres, e come possiamo convertirlo in un database vettoriale completo in grado di funzionare con altri popolari database vettoriali di livello Enterprise.
- Un ricercatore dell’UCLA ha sviluppato una libreria Python chiamata ClimateLearn per accedere ai dati climatici di ultima generazione e ai modelli di apprendimento automatico in modo standardizzato e semplice.
- Questo modello di linguaggio proteico basato sull’intelligenza artificiale sblocca la modellazione di sequenze a uso generale.
- Principali strumenti per la privacy DNS nel 2023
Come convertire Postgres in un database vettoriale?
Postgres è uno dei database relazionali più popolari, che è open source ma ha una performance simile a molti database relazionali di livello Enterprise. È presente sul mercato da molto tempo, dominando con la sua performance, facilità d’uso e robustezza.
La comunità open source ha sviluppato un’estensione chiamata pgvector che, una volta installata e attivata, può trasformare un’installazione regolare di Postgres per supportare lo sviluppo di applicazioni di intelligenza artificiale generativa memorizzando e indicizzando gli embeddings generati da qualsiasi LLM con qualsiasi dimensione. La cosa migliore è che non solo i dati di embeddings, ma anche i dati regolari possono essere memorizzati e indicizzati nello stesso database. Pgvector utilizza gli algoritmi dei nearest neighbors esatti e approximate durante le query dei dati, quindi a volte supera altri database.
Ecco il file Docker compose che ho usato per avviare una versione Docker di Postgres già con l’estensione pgvector integrata. Nel Docker compose, ho aggiunto anche Pgadmin come client del database in modo da poter accedere al tuo database.
Fig 1: Comando Docker compose per eseguire Postgres con pgvector.
Fig 2: Cliente PGAdmin (accessibile tramite porta 5050)
Dopo aver aggiunto il server Postgres in esecuzione, utilizza il seguente comando SQL per abilitare l’estensione vettoriale:
Conclusioni
In questo articolo, abbiamo esplorato come possiamo utilizzare la potenza della comunità open source per lanciare un database vettoriale scalabile ma robusto e ad alte prestazioni basato su un sistema di database relazionale tradizionale. Se sei un ingegnere di data science o un ingegnere software o stai semplicemente progettando o esplorando soluzioni per il tuo prossimo progetto basato sull’intelligenza artificiale, allora Postgres con pgvector ti aiuterà sicuramente a risolvere alcuni casi d’uso come la ricerca di similarità, il motore di raccomandazione e il rilevamento di anomalie. Abbiamo anche dimostrato come Postgres con l’estensione pgvector possa essere installato e configurato in modo semplice utilizzando strumenti come Docker compose e integrato con il framework di microservizi esistente.