Установка pgvector в PostgreSQL: коротко и с данными
Конспект страницы: 6 разделов коротко, данные на 14 октября 2026 и ответы на 3 вопроса. Полный разбор с примерами: Установка pgvector в PostgreSQL.
Коротко
Установка pgvector это сборка расширения командой make install или готовый Docker-образ pgvector/pgvector, после чего в нужной базе выполняют CREATE EXTENSION vector. Расширение версии 0.8.7 работает с PostgreSQL 13 и новее и хранит векторы рядом с обычными таблицами, без отдельного сервиса. Если PostgreSQL у вас уже есть, pgvector избавит от отдельной векторной базы.
Конспект по разделам
pgvector: векторный поиск прямо в PostgreSQL
pgvector добавляет в PostgreSQL тип vector и поиск ближайших соседей по расстоянию L2, скалярному произведению, косинусу и другим метрикам. Векторы лежат в обычной таблице рядом с текстом, правами и связями, их бэкапит обычный pg_dump. Лицензия PostgreSQL License.
pgvector в Docker и docker compose
Образ pgvector/pgvector это официальный образ PostgreSQL с уже собранным расширением. Тег выбирают по версии базы, например pg18-trixie. После запуска подключитесь и включите расширение в нужной базе: docker compose exec db psql -U postgres -c "CREATE EXTENSION vector;".
Установка pgvector на свой PostgreSQL в Ubuntu
Затем CREATE EXTENSION vector; в нужной базе. На PostgreSQL 17.0-17.2 документация просит сначала обновиться до 17.3 или новее. Если планируете управляемую базу у провайдера, проверьте в её панели список доступных расширений: ставить своё расширение на чужой сервер нельзя.
- Поставьте заголовки PostgreSQL: sudo apt install postgresql-server-dev-18 (замените 18 на свою версию).
- Соберите расширение:
Индексы pgvector: HNSW или IVFFlat
Индекс создают отдельно под каждую метрику. Большой HNSW строится заметно быстрее, если граф помещается в maintenance_work_mem: PostgreSQL сам предупредит, когда памяти не хватило. Только не задавайте её так, чтобы съесть всю память сервера.
Сколько места и памяти займёт pgvector
Миллион векторов размерности 1024 в типе vector занимает около 4,1 ГБ, в halfvec вдвое меньше. Индекс HNSW добавляет сверху, и для быстрого поиска его держат в памяти. Резервные копии такой базы делают как у любой PostgreSQL, схема в разделе бэкапы.
Запустите свой сервер за пару минут
Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.
- NVMe-диски и гарантированная доля процессора
- Root-доступ и любой софт, от Docker до игровых серверов
- Маркетплейс: 91 приложение в один клик
- Бесплатный перенос проекта силами специалистов
Данные
| Тип | Размер одного вектора | Предел для индекса |
|---|---|---|
| vector (float32) | 4 × размерность + 8 байт | 2 000 измерений |
| halfvec (float16) | 2 × размерность + 8 байт | 4 000 измерений |
| bit | для двоичных векторов | 64 000 измерений |
| HNSW | IVFFlat | |
|---|---|---|
| Скорость поиска | Выше при той же точности | Ниже |
| Построение | Медленнее, больше памяти | Быстрее, меньше памяти |
| Пустая таблица | Можно создать сразу | Нужны данные для обучения |
Данные на 14 октября 2026.
Вопросы и ответы
Какой Docker-образ нужен для pgvector?
pgvector/pgvector с тегом под версию PostgreSQL, например pgvector/pgvector:pg18-trixie. Это официальный образ postgres с уже собранным расширением, переменные окружения те же.
Почему в pgvector не создаётся индекс на 3072 измерения?
Индексы по типу vector ограничены 2 000 измерений. Храните эмбеддинги как halfvec (до 4 000 для индекса) или уменьшите размерность в настройках модели эмбеддингов.
Нужно ли выполнять CREATE EXTENSION после установки pgvector?
Да, один раз в каждой базе, где нужны векторы. Сама установка только кладёт файлы расширения в PostgreSQL.