Guia de Uso do pgvector
pgvector
é um módulo de extensão de terceiros para PostgreSQL que oferece suporte ao tipo de dados de vetor e métodos de acesso IVFFlat e HNSW. Ele é adequado para cenários que requerem processamento eficiente de dados vetoriais, como aprendizado de máquina, processamento de imagens e processamento de linguagem natural. Este documento detalhará como instalar e usar o pgvector
no ServBay.
Instalando o pgvector
O ServBay já vem com o módulo de extensão pgvector
, você só precisa ativá-lo no banco de dados. Aqui estão os passos para ativar o pgvector
:
Conectar ao banco de dados PostgreSQL:
bashpsql -U seu_usuario -d seu_banco_de_dados
1Criar a extensão:
sqlCREATE EXTENSION vector;
1Verificar a instalação:
sql\dx
1
Configurando o pgvector
Após ativar o pgvector
, você pode criar e gerenciar dados vetoriais e utilizar vários métodos de acesso para operações.
Criando Tabela de Dados Vetoriais
Aqui está um exemplo de como criar uma tabela que contém dados vetoriais.
Criar a tabela:
sqlCREATE TABLE embeddings ( id SERIAL PRIMARY KEY, vector VECTOR(3) );
1
2
3
4Inserir dados de exemplo:
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
Criando Índice de Vetores
Para melhorar o desempenho das consultas, recomenda-se criar índices para a coluna de vetor.
Criar índice IVFFlat:
sqlCREATE INDEX idx_ivfflat_vector ON embeddings USING ivfflat (vector) WITH (lists = 100);
1Criar índice HNSW:
sqlCREATE INDEX idx_hnsw_vector ON embeddings USING hnsw (vector) WITH (m = 16, ef_construction = 200);
1
Consultas de Vetores com pgvector
Aqui estão alguns exemplos comuns de consultas vetoriais.
Consulta de Vizinhança mais Próxima
- Consultar o vetor mais próximo:sql
SELECT id, vector FROM embeddings ORDER BY vector <-> '[0.2, 0.3, 0.4]' LIMIT 5;
1
2
3
Consulta de Similaridade de Vetores
- Consultar similaridade de vetores:sql
SELECT id, vector, (vector <-> '[0.2, 0.3, 0.4]') AS similarity FROM embeddings ORDER BY similarity LIMIT 5;
1
2
3
Visualização de Dados Vetoriais
Você pode usar várias ferramentas de visualização de dados (como Matplotlib) para visualizar dados vetoriais no pgvector
.
Usando Matplotlib
Instalar Matplotlib:
bashpip install matplotlib
1Criar script Python:
pythonimport psycopg2 import matplotlib.pyplot as plt # Conectar ao banco de dados PostgreSQL conn = psycopg2.connect( dbname="seu_banco_de_dados", user="seu_usuario", password="sua_senha", host="localhost" ) cur = conn.cursor() # Consultar dados vetoriais cur.execute("SELECT vector FROM embeddings") vectors = cur.fetchall() # Extrair coordenadas dos vetores x = [v[0][0] for v in vectors] y = [v[0][1] for v in vectors] z = [v[0][2] for v in vectors] # Criar gráfico de dispersão 3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z) ax.set_xlabel('Rótulo X') ax.set_ylabel('Rótulo Y') ax.set_zlabel('Rótulo Z') plt.show() # Fechar conexão com o banco de dados 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
Resumo
pgvector
é um módulo de extensão poderoso para vetores, através de uma configuração e uso simples, você pode realizar armazenamento e consultas eficientes de dados vetoriais no PostgreSQL. ServBay já vem com o módulo de extensão pgvector
, basta seguir os passos deste documento para instalá-lo e configurá-lo. Com várias funcionalidades de consulta e análise vetorial, você pode utilizar melhor os dados vetoriais, fornecendo suporte de banco de dados confiável para suas aplicações.