Первый и самый очевидный недостаток — это молодость экосистемы и изменчивость API. Weaviate активно развивается, что означает частые обновления, добавление новых функций, но также и потенциальные breaking changes. «Мы начали интеграцию с версии 1.14, а к моменту выхода в прод уже была 1.18 с существенными изменениями в модульной системе. Пришлось срочно вносить правки в код», — делится опытом Артем Сидоров, CTO стартапа в области edtech. Для стартапа с небольшим количеством разработчиков это может стать серьезной нагрузкой, отвлекающей от развития основного продукта.
Второй ключевой момент — сложность настройки и эксплуатации в self-hosted режиме. Официальная документация предлагает развернуть Weaviate с помощью Docker Compose или Kubernetes. Для команды без глубокого опыта в администрировании баз данных и оркестрации контейнеров это может стать проблемой. Требуется настройка отдельного кластера etcd для распределенного хранения метаданных, понимание работы модулей (как text2vec, qna), которые запускаются в отдельных контейнерах. Мониторинг, бэкапы, обновление — все это ложится на плечи команды. Облачная версия Weaviate Cloud Service (WCS) снимает эти проблемы, но это уже платный сервис, который увеличивает операционные расходы (OpEx) стартапа.
Третий недостаток — это стоимость и сложность масштабирования для высоких нагрузок. Weaviate хранит векторы и данные в памяти для скорости. Это означает, что объем оперативной памяти — ключевой ресурс. При росте объема данных (миллионы объектов) стоимость инстансов с большим объемом RAM может стать неподъемной для раннего стартапа. Горизонтальное масштабирование (шардирование) возможно, но его настройка требует экспертизы. «Мы столкнулись с тем, что при неравномерном распределении векторов (skewed data) один шард был загружен на 90%, а другие простаивали. Пришлось переделывать стратегию шардирования», — рассказывает Сидоров.
Четвертый камень преткновения — это выбор и интеграция моделей векторизации. Weaviate гибко работает с разными моделями (OpenAI, Cohere, Hugging Face, custom), но каждая настройка требует глубокого понимания. Неправильно выбранная модель или её параметры приведут к низкому качеству семантического поиска. Например, использование общей модели для специфичной предметной области (например, юридические документы) без дообучения даст плохие результаты. А дообучение модели и создание собственного модуля — отдельная сложная задача.
Пятый момент — ограничения в запросах и агрегациях. Weaviate не является полноценной заменой реляционной или документоориентированной БД. Сложные вложенные фильтры, агрегации по нескольким полям, джойны — все это либо отсутствует, либо работает с ограничениями. Если вашему приложению нужна сложная бизнес-логика на стороне базы данных, Weaviate может не подойти. Он создан для быстрого векторного/гибридного поиска, а не для сложных аналитических запросов.
Шестой недостаток — это риски, связанные с open source. Несмотря на лицензию BSD-3, основная разработка ведется компанией SeMI Technologies. Это создает определенную вендорскую зависимость. Критические исправления безопасности, важные фичи и направление развития определяются одним поставщиком. Для стартапа, строящего на Weaviate ключевую часть продукта, это потенциальный риск.
Что же делать стартапу, который все же хочет использовать Weaviate? Эксперты дают следующие рекомендации:
- Начинайте с облачного сервиса (WCS) на ранних этапах, чтобы избежать головной боли с инфраструктурой.
- Тщательно протестируйте качество поиска на ваших данных с разными моделями векторизации перед полной интеграцией.
- Заложите в архитектуру приложения абстракцию над слоем доступа к данным, чтобы в случае необходимости было проще заменить Weaviate на другой движок.
- Внимательно следите за обновлениями и изменениями в API. Используйте точные версии в зависимостях.
- Рассчитывайте бюджет на оперативную память заранее, исходя из прогноза роста данных.
Комментарии (13)