Che cos'è pgvector?

pgvector è un'estensione per PostgreSQL (chiamato anche Postgres) che semplifica l'utilizzo dei vettori, consentendoti di archiviarli, cercarli e indicizzarli direttamente nel tuo database relazionale.

Con pgvector, l'aggiunta di funzionalità avanzate come la ricerca di somiglianze alle applicazioni e agli agenti AI può essere semplice e scalabile, senza dover spostare i dati o modificare le architetture delle applicazioni per collegare il nuovo tipo di dati vettoriali.

Crea app basate sull'AI su Google Cloud con pgvector, LangChain e LLM

Concetti fondamentali

pgvector è un'estensione open source per PostgreSQL che ti aiuta ad archiviare, indicizzare e cercare vettori ad alta dimensionalità direttamente all'interno del tuo database PostgreSQL esistente. pgvector è noto per il supporto di:

  • Ricerca di somiglianze: confronta i pattern semantici nei dati, anziché utilizzare la corrispondenza delle parole chiave
  • Applicazioni di AI: operazioni dell'agente AI e applicazioni di ricerca, tra cui motori di suggerimenti, chatbot, elaborazione del linguaggio naturale e rilevamento delle anomalie

Che cos'è un vettore?

Un vettore rappresenta i dati numericamente in modo da catturarne le caratteristiche chiave, mappandoli in uno spazio matematico virtuale. In questo spazio, gli elementi simili, come parole, immagini o oggetti, sono posizionati vicini tra loro.

Ad esempio, considera le parole "cappotto" e "giacca". Le ricerche tradizionali basate su parole chiave non collegherebbero queste due parole come simili, perché le loro lettere sono piuttosto diverse. Un sistema di e-commerce che volesse unire queste parole chiave dovrebbe farlo manualmente. Tuttavia, le rappresentazioni vettoriali di questi due termini sarebbero molto simili perché condividono significati simili, fornendo risultati di ricerca più accurati per gli utenti e facendo risparmiare tempo agli sviluppatori.

Allo stesso modo, se scatti due foto diverse di gatti, a livello di pixel potrebbero essere molto diverse. Tuttavia, i loro incorporamenti vettoriali li posizionerebbero molto vicini nello spazio matematico, proprio come un essere umano identificherebbe facilmente entrambe queste immagini come immagini di gatti:

Immagine di un gatto generata da Gemini

Per far funzionare questo processo, un modello di embedding trasforma i dati non elaborati, come immagini o testo, in vector embedding. pgvector archivia questi embedding nel database. Quando un utente invia una query, anche questo input viene convertito in un vettore. pgvector calcola quindi la distanza tra il vettore della query e i vettori archiviati per identificare in modo efficiente i "vicini più prossimi" con i punteggi di somiglianza più alti.

Per scoprire di più sui diversi tipi di ricerca dei vicini più prossimi, dai un'occhiata alla nostra guida allo sviluppo di app di AI generativa.

Domande frequenti su pgvector

PostgreSQL è un sistema di gestione di database relazionali open source e robusto, progettato per gestire dati strutturati utilizzando tabelle, righe e colonne.

pgvector è un'estensione che viene eseguita all'interno di PostgreSQL. Aggiunge "vector", un nuovo tipo di dati, al database, consentendo l'archiviazione e l'elaborazione degli incorporamenti vettoriali insieme ai dati operativi standard.

No, pgvector è un'estensione che si integra direttamente nel tuo database PostgreSQL esistente. Ciò consente di aggiungere funzionalità avanzate di AI e ricerca senza gestire un'infrastruttura nuova o separata.

pgvector in PostgreSQL per applicazioni di AI e di ricerca

Grazie alla sua capacità di gestire vettori ad alta dimensionalità, pgvector supporta una serie di applicazioni avanzate.

La corrispondenza delle parole chiave nei database relazionali tradizionali spesso non riesce a identificare connessioni significative nei dati. La ricerca di somiglianze confronta la prossimità dei vettori utilizzando metriche come la distanza euclidea e la distanza del coseno per trovare pattern più profondi, fondamentali per applicazioni come il riconoscimento delle immagini e la ricerca semantica, in cui i risultati sono classificati in base al significato. Nell'e-commerce, ad esempio, la ricerca di somiglianze consente di fornire consigli sui prodotti analizzando il comportamento degli utenti e trovando articoli correlati.

L'elaborazione del linguaggio naturale basata su vettori consente agli agenti AI di comprendere il contesto, il che porta a conversazioni più personalizzate e risposte più accurate. Il supporto multilingue migliora le prestazioni degli assistenti virtuali e delle piattaforme di assistenza clienti.

pgvector migliora i flussi di lavoro di AI consentendo l'archiviazione e l'esecuzione di query sugli incorporamenti vettoriali, che sono essenziali per identificare pattern insoliti nei dati. Analizzando la prossimità dei vettori, aiuta a rilevare le anomalie in tempo reale per la prevenzione delle frodi, la sicurezza di rete o il controllo della qualità.

L'analisi del sentiment analizza l'intento di un messaggio, consentendoti di indirizzare in modo appropriato i commenti negativi per un'azione più rapida e creando soluzioni su misura.

Per un singolo database che eccelle sia nelle query SQL tradizionali che nella ricerca di vertici moderna, prendi in considerazione AlloyDB per PostgreSQL. AlloyDB utilizza l'algoritmo di ricerca di similarità vettoriale ScaNN (Scalable Nearest Neighbor) sviluppato da Google, offrendo prestazioni significativamente superiori rispetto ad altri servizi PostgreSQL basati su cloud per workload transazionali e analitici all'interno di database di grandi dimensioni.

Scopri come AlloyDB esegue ricerche simultanee su dati strutturati e non strutturati.

Come abilitare e utilizzare pgvector nei database Google Cloud

Cloud SQL e AlloyDB per PostgreSQL supportano pgvector, consentendoti di archiviare ed eseguire query sui vector embedding utilizzando comandi SQL standard.

1. Connettiti all'istanza

Utilizza il tuo client PostgreSQL preferito (come psql, pgAdmin o la console Google Cloud) per connetterti alla tua istanza Cloud SQL o AlloyDB.

2. Abilita l'estensione pgvector

Esegui il seguente comando SQL per abilitare l'estensione sul tuo database. Devi eseguire questa operazione una sola volta per database.

  • SQL
Caricamento in corso...

3. Crea una tabella con una colonna vettoriale

Crea una nuova tabella (o modifica una tabella esistente) per includere una colonna per i dati vettoriali. Devi specificare le dimensioni del vettore. Ad esempio, per creare una tabella per l'archiviazione di embedding tridimensionali:

  • SQL
Caricamento in corso...

4. Inserisci dati vettoriali

Puoi inserire i vector embedding proprio come i dati standard. I vettori sono formattati come array racchiusi tra parentesi quadre.

  • SQL
Caricamento in corso...

5. Esegui query utilizzando la ricerca di similarità

Ora puoi eseguire query sui dati per trovare gli elementi più prossimi. L'operatore <-> calcola la distanza euclidea (distanza L2), che viene comunemente utilizzata per trovare gli elementi più simili.

  • SQL
Caricamento in corso...

6. Aggiungi un indice per le prestazioni

Per set di dati più grandi, l'aggiunta di un indice può accelerare in modo significativo le prestazioni di ricerca. Gli indici HNSW e ScaNN sono opzioni di uso comune. Ecco un esempio di HNSW:

  • SQL
Caricamento in corso...

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti gratuiti da spendere su Google Cloud.

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud