Векторный поиск: pgvector, HNSW и IVFFlat — когда нужна отдельная векторная база?
Векторный поиск ищет ближайших соседей в пространстве эмбеддингов, и на объёмах выше десятков тысяч точный перебор становится дорог — используют приближённые индексы. HNSW строит многоуровневый граф соседства: высокое качество и скорость поиска, дорогое построение и заметный расход памяти; параметры m и ef_construction задают качество графа, ef_search — компромисс «точность против скорости» на чтении. IVFFlat разбивает пространство на списки по центроидам и просматривает несколько ближайших: строится быстрее и занимает меньше, но требует обучения на данных и хуже держит качество при обновлениях. Для большинства продуктовых задач pgvector в PostgreSQL достаточен: миллионы векторов, фильтрация по обычным колонкам в том же запросе, транзакции и отсутствие второй системы. Отдельная векторная база оправдана при десятках миллионов векторов, потребности в горизонтальном шардировании, гибридном поиске из коробки и жёстких требованиях к задержке.