Guida all'uso di pgvector
pgvector
è un modulo esterno per PostgreSQL che fornisce un tipo di dato vettoriale e metodi di accesso IVFFlat e HNSW. È utile per scenari che richiedono un'elaborazione efficiente dei dati vettoriali, come machine learning, elaborazione di immagini e elaborazione del linguaggio naturale. Questo documento illustrerà come installare e utilizzare pgvector
su ServBay.
Installazione di pgvector
ServBay include già il modulo di estensione pgvector
, è sufficiente abilitarlo nel database. Ecco i passaggi per abilitare pgvector
:
Connettersi al database PostgreSQL:
bashpsql -U il_tuo_username -d il_tuo_database
1Creare l'estensione:
sqlCREATE EXTENSION vector;
1Verificare l'installazione:
sql\dx
1
Configurazione di pgvector
Una volta abilitato pgvector
, è possibile creare e gestire dati vettoriali ed utilizzare vari metodi di accesso per le operazioni.
Creare una tabella di dati vettoriali
Ecco un esempio di come creare una tabella contenente dati vettoriali.
Creare la tabella:
sqlCREATE TABLE embeddings ( id SERIAL PRIMARY KEY, vector VECTOR(3) );
1
2
3
4Inserire dati di esempio:
sqlINSERT INTO embeddings (vector) VALUES ('[0.1, 0.2, 0.3]'), ('[0.4, 0.5, 0.6]'), ('[0.7, 0.8, 0.9]');
1
2
3
4
Creare un indice vettoriale
Per migliorare le performance delle query, è consigliabile creare un indice per la colonna vettoriale.
Creare un indice IVFFlat:
sqlCREATE INDEX idx_ivfflat_vector ON embeddings USING ivfflat (vector) WITH (lists = 100);
1Creare un indice HNSW:
sqlCREATE INDEX idx_hnsw_vector ON embeddings USING hnsw (vector) WITH (m = 16, ef_construction = 200);
1
Utilizzo di pgvector per le query vettoriali
Ecco alcuni esempi di query vettoriali comuni.
Query del vicino più prossimo
- Query per il vettore più vicino:sql
SELECT id, vector FROM embeddings ORDER BY vector <-> '[0.2, 0.3, 0.4]' LIMIT 5;
1
2
3
Query di similarità vettoriale
- Query per similarità vettoriale:sql
SELECT id, vector, (vector <-> '[0.2, 0.3, 0.4]') AS similarity FROM embeddings ORDER BY similarity LIMIT 5;
1
2
3
Visualizzare i dati vettoriali
È possibile utilizzare vari strumenti di visualizzazione dei dati (come Matplotlib) per visualizzare i dati vettoriali in pgvector
.
Utilizzo di Matplotlib
Installare Matplotlib:
bashpip install matplotlib
1Creare uno script Python:
pythonimport psycopg2 import matplotlib.pyplot as plt # Connessione al database PostgreSQL conn = psycopg2.connect( dbname="il_tuo_database", user="il_tuo_username", password="la_tua_password", host="localhost" ) cur = conn.cursor() # Eseguire query sui dati vettoriali cur.execute("SELECT vector FROM embeddings") vettori = cur.fetchall() # Estrarre le coordinate dei vettori x = [v[0][0] for v in vettori] y = [v[0][1] for v in vettori] z = [v[0][2] for v in vettori] # Creare un grafico a dispersione 3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z) ax.set_xlabel('Etichetta X') ax.set_ylabel('Etichetta Y') ax.set_zlabel('Etichetta Z') plt.show() # Chiudere la connessione al database cur.close() conn.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Conclusione
pgvector
è un modulo di estensione vettoriale potente che, attraverso una semplice configurazione e utilizzo, consente di implementare un'efficiente memorizzazione e interrogazione di dati vettoriali in PostgreSQL. ServBay include già il modulo di estensione pgvector
, è sufficiente seguire i passaggi descritti in questo documento per installarlo e configurarlo. Grazie alle varie funzionalità di query e analisi vettoriali, è possibile sfruttare al meglio i dati vettoriali e fornire supporto affidabile al database per le applicazioni.