Руководство по использованию pgvector
pgvector
— это сторонний модуль расширения для PostgreSQL, который предоставляет тип данных вектора, а также методы доступа IVFFlat и HNSW. Он пригоден для сценариев, требующих эффективного управления векторными данными, таких как машинное обучение, обработка изображений и обработка естественного языка. В этой статье подробно описано, как установить и использовать pgvector
в ServBay.
Установка pgvector
ServBay уже включает модуль расширения pgvector
, необходимо только включить его в базе данных. Ниже приведены шаги для включения pgvector
:
Подключение к базе данных PostgreSQL:
bashpsql -U your_username -d your_database
1Создание расширения:
sqlCREATE EXTENSION vector;
1Проверка установки:
sql\dx
1
Настройка pgvector
После включения pgvector
можно создавать и управлять векторными данными, а также использовать различные методы доступа.
Создание таблицы с векторными данными
Пример ниже демонстрирует, как создать таблицу с векторными данными.
Создание таблицы:
sqlCREATE TABLE embeddings ( id SERIAL PRIMARY KEY, vector VECTOR(3) );
1
2
3
4Вставка примерных данных:
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
Создание векторного индекса
Для повышения производительности запросов рекомендуется создать индекс для векторных колонок.
Создание индекса IVFFlat:
sqlCREATE INDEX idx_ivfflat_vector ON embeddings USING ivfflat (vector) WITH (lists = 100);
1Создание индекса HNSW:
sqlCREATE INDEX idx_hnsw_vector ON embeddings USING hnsw (vector) WITH (m = 16, ef_construction = 200);
1
Использование pgvector для запросов векторов
Примеры ниже демонстрируют некоторые распространенные запросы для работы с векторными данными.
Поиск ближайших соседей
- Запрос ближайшего вектора:sql
SELECT id, vector FROM embeddings ORDER BY vector <-> '[0.2, 0.3, 0.4]' LIMIT 5;
1
2
3
Запросы по схожести векторов
- Запрос схожести векторов:sql
SELECT id, vector, (vector <-> '[0.2, 0.3, 0.4]') AS similarity FROM embeddings ORDER BY similarity LIMIT 5;
1
2
3
Визуализация векторных данных
Вы можете использовать различные инструменты для визуализации данных, такие как Matplotlib, для визуализации векторных данных из pgvector
.
Использование Matplotlib
Установка Matplotlib:
bashpip install matplotlib
1Создание скрипта на Python:
pythonimport psycopg2 import matplotlib.pyplot as plt # Подключение к базе данных PostgreSQL conn = psycopg2.connect( dbname="your_database", user="your_username", password="your_password", host="localhost" ) cur = conn.cursor() # Запрос векторных данных cur.execute("SELECT vector FROM embeddings") vectors = cur.fetchall() # Извлечение координат векторов x = [v[0][0] for v in vectors] y = [v[0][1] for v in vectors] z = [v[0][2] for v in vectors] # Создание 3D-диаграммы рассеяния 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() # Закрытие подключения к базе данных 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
Заключение
pgvector
— это мощный модуль расширения для работы с векторами, который позволяет реализовать эффективное хранение и запросы векторных данных в PostgreSQL. ServBay уже включает этот модуль, и его можно начать использовать, следуя шагам, описанным в этой статье. Различные функции для запросов и анализа векторов помогут вам лучше использовать векторные данные, предоставляя надежную поддержку для ваших приложений.