Сначала сформулируйте нагрузку
Запишите число vectors, размерность, прирост в сутки, QPS, p95 latency, долю обновлений, фильтры и число tenants. Без этих данных сравнение продуктов превращается в перечень функций.
PostgreSQL или отдельный движок
pgvector сохраняет транзакции, SQL, backup и привычную эксплуатацию. Специализированная база обычно предлагает больше search-функций и независимое масштабирование. Цена отдельного кластера включает мониторинг, миграции и новую компетенцию команды.
Exact и approximate search
Exact nearest neighbor даёт точный baseline, но плохо масштабируется. HNSW обычно предлагает сильный speed/recall trade-off ценой памяти и более тяжёлой сборки. IVFFlat дешевле по памяти и быстрее строится, но требует обучения и настройки lists/probes.
Фильтры меняют результат
ANN может сначала найти соседей, а затем отфильтровать их - в итоге вернётся меньше k документов. Проверяйте pre-filter, post-filter и iterative scans на ваших tenant и permission-фильтрах. Фильтрация - часть качества, а не только безопасности.
Hybrid search и reranking
Если нужны артикулы, имена и точные формулировки, проверьте BM25/sparse retrieval, fusion и reranker. Встроенная поддержка сокращает код, но не отменяет eval-набор и контроль latency.
Multitenancy и доступ
Сравните shared collection с tenant filter, отдельные partitions и отдельные collections. Нужны доказуемая изоляция, quotas, encryption, audit и удаление данных клиента. Один общий ANN-индекс может влиять на recall разных tenants.
Надёжность и переносимость
Проверьте snapshots, point-in-time recovery, replication, rolling upgrade, export и восстановление на чистом кластере. Архив без регулярного restore drill нельзя считать резервной копией.
Считайте TCO и exit plan
Включите RAM индекса, реплики, storage, egress, ingestion, reranking, инженеров и простой миграции. Проведите небольшой bake-off на одинаковом корпусе и заранее зафиксируйте формат экспорта vectors и metadata.