Guide d'utilisation de pgvector
pgvector
est un module d'extension tiers pour PostgreSQL qui offre un type de données vecteur ainsi que des méthodes d'accès IVFFlat et HNSW. Il est conçu pour les scénarios nécessitant un traitement efficace des données vectorielles, comme l'apprentissage automatique, le traitement d'images et le traitement du langage naturel. Cet article explique en détail comment installer et utiliser pgvector
dans ServBay.
Installation de pgvector
ServBay intègre déjà le module d'extension pgvector
, vous devez simplement l'activer dans la base de données. Voici les étapes pour activer pgvector
:
Se connecter à la base de données PostgreSQL :
bashpsql -U your_username -d your_database
1Créer l'extension :
sqlCREATE EXTENSION vector;
1Vérifier l'installation :
sql\dx
1
Configuration de pgvector
Après avoir activé pgvector
, vous pouvez créer et gérer des données vectorielles et utiliser diverses méthodes d'accès pour les manipuler.
Création d'une table de données vectorielles
Voici un exemple montrant comment créer une table contenant des données vectorielles.
Créer une table :
sqlCREATE TABLE embeddings ( id SERIAL PRIMARY KEY, vector VECTOR(3) );
1
2
3
4Insérer des données d'exemple :
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
Création d'un index vectoriel
Pour améliorer les performances de recherche, il est recommandé de créer un index pour la colonne vectorielle.
Créer un index IVFFlat :
sqlCREATE INDEX idx_ivfflat_vector ON embeddings USING ivfflat (vector) WITH (lists = 100);
1Créer un index HNSW :
sqlCREATE INDEX idx_hnsw_vector ON embeddings USING hnsw (vector) WITH (m = 16, ef_construction = 200);
1
Requêtes vectorielles avec pgvector
Voici quelques exemples de requêtes vectorielles courantes.
Recherche de plus proches voisins
- Rechercher le vecteur le plus proche :sql
SELECT id, vector FROM embeddings ORDER BY vector <-> '[0.2, 0.3, 0.4]' LIMIT 5;
1
2
3
Recherche de similarité vectorielle
- Rechercher la similarité vectorielle :sql
SELECT id, vector, (vector <-> '[0.2, 0.3, 0.4]') AS similarity FROM embeddings ORDER BY similarity LIMIT 5;
1
2
3
Visualisation des données vectorielles
Vous pouvez utiliser divers outils de visualisation de données (comme Matplotlib) pour visualiser les données vectorielles dans pgvector
.
Utilisation de Matplotlib
Installer Matplotlib :
bashpip install matplotlib
1Créer un script Python :
pythonimport psycopg2 import matplotlib.pyplot as plt # Connect to PostgreSQL database conn = psycopg2.connect( dbname="your_database", user="your_username", password="your_password", host="localhost" ) cur = conn.cursor() # Query vector data cur.execute("SELECT vector FROM embeddings") vectors = cur.fetchall() # Extract vector coordinates x = [v[0][0] for v in vectors] y = [v[0][1] for v in vectors] z = [v[0][2] for v in vectors] # Create 3D scatter plot fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') plt.show() # Close database connection 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
Conclusion
pgvector
est un module d'extension vectorielle puissant, permettant une configuration simple et une utilisation efficace pour le stockage et la recherche de données vectorielles dans PostgreSQL. ServBay inclut déjà le module d'extension pgvector
, vous pouvez donc commencer à l'utiliser en suivant les étapes de cet article. Grâce aux divers types de requêtes et fonctions d'analyse vectorielle, vous pouvez mieux exploiter les données vectorielles et offrir un support de base de données fiable à vos applications.