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.
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:
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:

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.
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.
Per supportare le funzionalità basate sull'AI di oggi, è necessario poter archiviare e gestire i vector embedding.
PostgreSQL può essere potente da solo, ma poiché i suoi dati sono strutturati in modo rigido in tabelle, righe e colonne, la sua capacità di query è in gran parte limitata alla corrispondenza di parole chiave e pattern.
Nel mondo dell'AI, i dati complessi come testo, immagini e audio vengono codificati come rappresentazioni vettoriali. Queste codifiche consentono ai modelli di AI di comprendere il contesto e le relazioni semantiche all'interno dei dati, costituendo la base di funzionalità come la ricerca intelligente, i consigli e l'AI generativa.
L'estensione pgvector porta la ricerca semantica in PostgreSQL, utilizzando i vector embedding per trovare risultati basati sul significato di una query, anziché solo sulle corrispondenze di parole chiave come farebbe SQL. Questo processo, noto come ricerca di similarità, semplifica l'aggiunta di funzionalità di ricerca avanzate direttamente nelle applicazioni senza la necessità di riprogettare o spostare i dati in un database vettoriale separato.
Per scoprire di più sui vector embedding, dai un'occhiata alla nostra guida allo sviluppo di app di AI generativa.
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.
Sfruttando la scalabilità, il supporto per le transazioni e l'affidabilità di PostgreSQL, pgvector gestisce in modo efficiente set di dati ad alta dimensionalità. Inoltre, l'utilizzo di una sintassi SQL familiare lo rende accessibile ai team esistenti, eliminando la necessità di strumenti o infrastrutture aggiuntivi dedicati all'indicizzazione e alla ricerca vettoriale.
Si integra facilmente nelle app esistenti basate su PostgreSQL.
Migliora la scalabilità di PostgreSQL per set di dati in crescita.
Offre funzionalità personalizzabili come metriche di distanza e indicizzazione.
Eredita la sicurezza e l'affidabilità di PostgreSQL.
Consente di eseguire query senza problemi su dati strutturati e non strutturati.
Fornisce una soluzione semplice da usare per gli sviluppatori per lavorare con dati su larga scala e ad alta dimensionalità.
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.
Cloud SQL e AlloyDB per PostgreSQL supportano pgvector, consentendoti di archiviare ed eseguire query sui vector embedding utilizzando comandi SQL standard.
Utilizza il tuo client PostgreSQL preferito (come psql, pgAdmin o la console Google Cloud) per connetterti alla tua istanza Cloud SQL o AlloyDB.
Esegui il seguente comando SQL per abilitare l'estensione sul tuo database. Devi eseguire questa operazione una sola volta per database.
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:
Puoi inserire i vector embedding proprio come i dati standard. I vettori sono formattati come array racchiusi tra parentesi quadre.
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.
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:
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.