Что сравнивали
Задача — поиск по 500 тысячам фрагментов с фильтром по правам доступа. Сравнивали скорость ответа, точность поиска, стоимость инфраструктуры и сложность поддержки.
Результаты
- Скорость. На нашем объёме pgvector с индексом HNSW отвечал за 20–40 мс — для пользователя разница с отдельной базой незаметна.
- Права доступа. В PostgreSQL фильтр по ролям и поиск выполняются одним запросом. С отдельной базой права приходится дублировать и синхронизировать.
- Поддержка. Одна база — одни бэкапы, один мониторинг, одна процедура восстановления.
- Стоимость. Отдельная база — это ещё один сервер или облачный сервис с отдельным счётом.
CREATE INDEX ON doc_chunks
USING hnsw (embedding vector_cosine_ops);
Когда нужна отдельная база
Отдельное векторное хранилище оправдано на десятках миллионов векторов, при очень высокой нагрузке на поиск или когда нужны функции, которых нет в pgvector. Для большинства корпоративных баз знаний PostgreSQL хватает с запасом — и это одна система вместо двух.