Что это
pgvector - расширение PostgreSQL для хранения числовых представлений текста и поиска похожих записей. Оно не читает PDF и не отвечает как чат: сначала отдельная модель превращает текст в embeddings, затем приложение использует найденные фрагменты.
Главное удобство - не нужно сразу заводить вторую базу. Текст, его источник, права доступа и вектор можно связать SQL-запросом. Например, помощник ищет в инструкциях только того отдела, которому разрешен доступ. Проверку прав должен обеспечить разработчик.
Начните с маленькой учебной таблицы и точного поиска. Ускоряющий индекс имеет смысл добавлять после замера на вашей выборке: быстрый результат бесполезен, если нужные документы перестали попадать в выдачу.
Ключевые параметры
- Категория: Векторные базы
- Сложность: Для разработчика
- Запуск: Около 30 минут
- Open-source: Да
- Данные: Высокий контроль
- Чувствительные данные: Только с настройками
Сильные стороны
- Векторный поиск можно сочетать с SQL-фильтрами и связями обычных таблиц.
- Можно начать с точного поиска и использовать его как контрольную выдачу.
- HNSW и IVFFlat дают варианты ускорения поиска на больших выборках.
- Открытая лицензия позволяет запускать расширение на собственной инфраструктуре.
Ограничения
- Расширение должно быть установлено на сервере; не каждый хостинг дает такую возможность.
- Создание embeddings, разбор документов и ответы модели нужно организовать отдельно.
- Приближенные индексы меняют баланс скорости и полноты; фильтры могут сократить выдачу.
- Индексы, объем векторов и обслуживание базы расходуют память и ресурсы сервера.
Как использовать
1. Подготовка. Выберите отдельную учебную PostgreSQL. Администратор должен установить pgvector по инструкции для вашей ОС или подтвердить его наличие у хостера. Не меняйте рабочую базу ради первого теста.
2. Настройка. В учебной базе выполните CREATE EXTENSION vector; затем CREATE TABLE vector_demo (id text PRIMARY KEY, embedding vector(3));. Добавьте записи: INSERT INTO vector_demo VALUES ('a','[1,0,0]'),('b','[0,1,0]'),('c','[0.9,0.1,0]');. Три координаты здесь нужны только для понятного теста.
3. Первый результат. Выполните SELECT id FROM vector_demo ORDER BY embedding <-> '[1,0,0]' LIMIT 2;. Получите ближайшие записи без отдельной нейросети и без ускоряющего индекса.
4. Проверка. Ожидайте a, затем c. После этого создайте embeddings реальных учебных текстов одной моделью и используйте ее же для запросов. Проверьте известные ответы, права и фильтры; сравните приближенный индекс с исходным точным поиском.
Примеры сценариев
- Найти инструкцию по возвратам среди разрешенных документов.
- Связать результат поиска с названием и датой исходного файла.
- Сравнить качество выдачи до и после добавления индекса.
Доступ и оплата
- Модель оплаты: Open-source
- Бесплатный тариф: Да
- Работа в РФ: Да
- VPN: Не нужен
- Русский интерфейс: Не известно
- Русский язык: Не известно
pgvector бесплатен по PostgreSQL License. API здесь означает SQL-интерфейс расширения. Самостоятельный сервер не требует VPN для работы; загрузка пакетов и внешняя embedding-модель могут иметь свои условия доступа и оплаты.
Когда не подходит
- Получить готовый чат после CREATE EXTENSION
- Смешивать векторы разных embedding-моделей
- Выбирать индекс без проверки качества поиска
Альтернативы
Qdrant и Chroma - отдельные векторные хранилища. Pinecone удобен, если нужен управляемый облачный сервис. pgvector особенно уместен, когда PostgreSQL уже есть и важны SQL-связи; победителя для любой нагрузки нет.