Vector Database Performance Compared: pgvector vs Pinecone vs Qdrant vs Weaviate
Каждая команда, которая делает поиск или RAG, в какой-то момент доходит до выбора векторной базы. На это часто уходит непропорционально много времени.
За последний год автор статьи использовал pgvector в продакшене и параллельно прогнал через тесты несколько альтернатив. Разница между ними есть, но она редко становится решающей на практике.
Pinecone закрывает вопрос инфраструктуры: поднял и работаешь. Это удобно на старте и в прототипах, но за это платишь меньшим контролем над тем, как именно считается recall.
Qdrant заметно выделяется на сценариях с фильтрацией. Если в запросах много условий поверх векторного поиска или нужен self-host, он даёт очень предсказуемую и быструю производительность.
Milvus имеет смысл, когда речь идёт о сотнях миллионов или миллиардах векторов. Там уже важны шардинг и партиционирование, и у него это реализовано зрелее, чем у остальных.
Weaviate упрощает жизнь, если нужен гибридный поиск, когда в одном запросе сочетаются keyword и vector. Плюс у него аккуратно сделан managed-вариант.
pgvector хорошо ложится в существующий стек с Postgres. До примерно 10 миллионов векторов он закрывает задачи без отдельной инфраструктуры. Дальше уже приходится думать про масштабирование, например через pgvectorscale.
Но в реальных системах узкое место другое.
Задержка 5 мс против 15 мс на векторном запросе не влияет на восприятие продукта. Пользователь этого не увидит. Зато разница между сильной и слабой моделью эмбеддингов сразу видна в результатах поиска. В одном случае ответы попадают в контекст, в другом нет.
Та же история с релевантностью и UX. Переранжирование, нормальная работа с контекстом, понятные ответы, всё это даёт кратно больший эффект, чем выбор между двумя быстрыми базами.
@tldr_data
Post #63
73
- 👍 1