Guía de uso de pgvector
pgvector
es un módulo de extensión de terceros para PostgreSQL que proporciona tipos de datos vectoriales y métodos de acceso IVFFlat y HNSW. Es adecuado para escenarios que requieren un procesamiento eficiente de datos vectoriales, como aprendizaje automático, procesamiento de imágenes y procesamiento de lenguaje natural. Este artículo presentará detalladamente cómo instalar y usar pgvector
en ServBay.
Instalación de pgvector
ServBay ya incluye el módulo de extensión pgvector
, solo necesitas habilitarlo en tu base de datos. A continuación se presentan los pasos para habilitar pgvector
:
Conectarse a la base de datos PostgreSQL:
bashpsql -U your_username -d your_database
1Crear la extensión:
sqlCREATE EXTENSION vector;
1Verificar la instalación:
sql\dx
1
Configuración de pgvector
Después de habilitar pgvector
, puedes crear y gestionar datos vectoriales, y utilizar varios métodos de acceso para operar con ellos.
Crear tablas de datos vectoriales
A continuación se muestra un ejemplo de cómo crear una tabla que contiene datos vectoriales.
Crear la tabla:
sqlCREATE TABLE embeddings ( id SERIAL PRIMARY KEY, vector VECTOR(3) );
1
2
3
4Insertar datos de ejemplo:
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
Crear índice vectorial
Para mejorar el rendimiento de las consultas, se recomienda crear un índice para la columna vectorial.
Crear índice IVFFlat:
sqlCREATE INDEX idx_ivfflat_vector ON embeddings USING ivfflat (vector) WITH (lists = 100);
1Crear índice HNSW:
sqlCREATE INDEX idx_hnsw_vector ON embeddings USING hnsw (vector) WITH (m = 16, ef_construction = 200);
1
Uso de pgvector para consultas vectoriales
A continuación se presentan algunos ejemplos comunes de consultas vectoriales.
Consulta de vecinos más cercanos
- Consultar el vector más cercano:sql
SELECT id, vector FROM embeddings ORDER BY vector <-> '[0.2, 0.3, 0.4]' LIMIT 5;
1
2
3
Consulta de similitud vectorial
- Consulta de similitud de vectores:sql
SELECT id, vector, (vector <-> '[0.2, 0.3, 0.4]') AS similarity FROM embeddings ORDER BY similarity LIMIT 5;
1
2
3
Visualización de datos vectoriales
Puedes utilizar varias herramientas de visualización de datos (como Matplotlib) para visualizar los datos vectoriales en pgvector
.
Usar Matplotlib
Instalar Matplotlib:
bashpip install matplotlib
1Crear un script de Python:
pythonimport psycopg2 import matplotlib.pyplot as plt # Conectar a la base de datos PostgreSQL conn = psycopg2.connect( dbname="your_database", user="your_username", password="your_password", host="localhost" ) cur = conn.cursor() # Consultar datos vectoriales cur.execute("SELECT vector FROM embeddings") vectors = cur.fetchall() # Extraer coordenadas vectoriales x = [v[0][0] for v in vectors] y = [v[0][1] for v in vectors] z = [v[0][2] for v in vectors] # Crear gráfico de dispersión en 3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z) ax.set_xlabel('Etiqueta X') ax.set_ylabel('Etiqueta Y') ax.set_zlabel('Etiqueta Z') plt.show() # Cerrar la conexión a la base de datos 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
Conclusión
pgvector
es un potente módulo de extensión vectorial que, con una configuración y uso sencillo, permite almacenar y consultar datos vectoriales de manera eficiente en PostgreSQL. ServBay ya incluye el módulo de extensión pgvector
, solo debes seguir los pasos de este artículo para instalarlo y configurarlo. A través de varias funciones de consulta y análisis de vectores, puedes aprovechar mejor los datos vectoriales y proporcionar un soporte de base de datos confiable para tus aplicaciones.