Hướng Dẫn Sử Dụng pgvector
pgvector
là một module mở rộng của PostgreSQL, cung cấp kiểu dữ liệu vector và các phương thức truy cập như IVFFlat và HNSW. Nó phù hợp với các tình huống cần xử lý dữ liệu vector hiệu quả như học máy, xử lý hình ảnh và xử lý ngôn ngữ tự nhiên. Bài viết này sẽ hướng dẫn chi tiết cách cài đặt và sử dụng pgvector
trong ServBay.
Cài Đặt pgvector
ServBay đã bao gồm sẵn module mở rộng pgvector
, bạn chỉ cần kích hoạt nó trong cơ sở dữ liệu. Dưới đây là các bước để kích hoạt pgvector
:
Kết nối đến cơ sở dữ liệu PostgreSQL:
bashpsql -U your_username -d your_database
1Tạo mở rộng:
sqlCREATE EXTENSION vector;
1Xác minh cài đặt:
sql\dx
1
Cấu Hình pgvector
Sau khi kích hoạt pgvector
, bạn có thể tạo và quản lý dữ liệu vector, và sử dụng các phương thức truy cập khác nhau để thao tác.
Tạo Bảng Dữ Liệu Vector
Dưới đây là một ví dụ về cách tạo bảng chứa dữ liệu vector.
Tạo bảng:
sqlCREATE TABLE embeddings ( id SERIAL PRIMARY KEY, vector VECTOR(3) );
1
2
3
4Chèn dữ liệu mẫu:
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
Tạo Chỉ Mục Vector
Để cải thiện hiệu suất truy vấn, nên tạo chỉ mục cho cột vector.
Tạo chỉ mục IVFFlat:
sqlCREATE INDEX idx_ivfflat_vector ON embeddings USING ivfflat (vector) WITH (lists = 100);
1Tạo chỉ mục HNSW:
sqlCREATE INDEX idx_hnsw_vector ON embeddings USING hnsw (vector) WITH (m = 16, ef_construction = 200);
1
Sử Dụng pgvector Để Truy Vấn Vector
Dưới đây là một vài ví dụ về truy vấn vector thường dùng.
Truy Vấn Gần Nhất
- Truy vấn vector gần nhất:sql
SELECT id, vector FROM embeddings ORDER BY vector <-> '[0.2, 0.3, 0.4]' LIMIT 5;
1
2
3
Truy Vấn Độ Tương Tự Vector
- Truy vấn độ tương tự vector:sql
SELECT id, vector, (vector <-> '[0.2, 0.3, 0.4]') AS similarity FROM embeddings ORDER BY similarity LIMIT 5;
1
2
3
Dữ Liệu Vector Hình Ảnh
Bạn có thể sử dụng các công cụ hình ảnh hóa dữ liệu khác nhau (như Matplotlib) để hình ảnh hóa dữ liệu vector trong pgvector
.
Sử Dụng Matplotlib
Cài đặt Matplotlib:
bashpip install matplotlib
1Tạo 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
Tổng Kết
pgvector
là một module mở rộng vector mạnh mẽ, giúp bạn thực hiện lưu trữ và truy vấn dữ liệu vector hiệu quả trong PostgreSQL thông qua các cấu hình và sử dụng đơn giản. ServBay đã bao gồm sẵn module mở rộng pgvector
, bạn chỉ cần làm theo các bước trong bài viết để cài đặt và cấu hình. Bằng cách tận dụng các chức năng truy vấn và phân tích vector, bạn có thể tận dụng dữ liệu vector tối đa để cung cấp hỗ trợ cơ sở dữ liệu đáng tin cậy cho ứng dụng của mình.