#stack · дневник проектов

Postgres вместо специальной базы для AI

Postgres вместо специальной базы для AI

Когда я делал AI-поиск товаров в Price AI, передо мной встал классический выбор современного разработчика. Поиск по смыслу работает через векторы — это такие длинные списки чисел, которые описывают «о чём» товар. Их надо где-то хранить и быстро искать похожие. Под эту задачу есть модные специальные базы: Pinecone, Weaviate, Qdrant.

Я выбрал не их. Я остался на обычном Postgres, добавив к нему расширение pgvector.

Соблазн взять модное был. Это и в резюме круто, и на конференциях есть о чём рассказать. Но я сел и подумал про реальность.

У меня уже есть Postgres. В нём лежат товары, поставщики, заказы — вся бизнес-логика. Если я добавляю отдельную базу под векторы, я получаю два хранилища вместо одного. Их надо синхронизировать: добавил товар сюда — не забудь добавить его эмбеддинг туда. Удалил — не забудь удалить. Бэкапить теперь две системы. Мониторить две системы. И главное — теперь может сломаться что-то одно, и продукт сломается частично. Это хуже чем когда падает всё разом, потому что баг сложнее заметить.

При этом мой объём — 290 тысяч векторов. Это копейки. Под Pinecone обычно идут проекты с миллионами и десятками миллионов. У pgvector с моим объёмом поиск отрабатывает за миллисекунды.

И ещё один момент, который перевесил окончательно. У меня в реальном поиске почти никогда не бывает «найди просто похожее». Запрос всегда сложнее: «найди похожее, но из категории "пицца-печи", дешевле 200 тысяч, и чтобы было в наличии». То есть смысловой поиск пересекается с обычными фильтрами по колонкам. В Postgres это один SQL-запрос — он умеет всё сразу. В специализированной базе так не получится: либо сначала ищешь похожих и потом фильтруешь руками (медленно), либо строишь два запроса в две системы и склеиваешь результаты (сложно).

Pinecone я взял бы если бы у меня было 50 миллионов векторов и нагрузка как у Spotify. У меня их 290 тысяч и нагрузка как у обычного B2B-кабинета. Postgres у меня уже работает, я его знаю, его знают коллеги, у него надёжный бэкап. Это три лучших аргумента для любого инструмента в проекте.

Скучные технологии — лучшие технологии. Не потому что они плохие, а потому что они уже один раз доказали что работают. И ты не тратишь свой проект на их повторное доказательство.

Это дневник инженера автоматизации

Такие разборы выходят 6 раз в неделю в моём Telegram-канале — кейсы, цифры и грабли из реальных проектов, без воды и курсов.

Читать каналили забрать чек-лист «5 автоматизаций» →
← MAX растёт — стоит ли бизнесу заводить там присутствиеКуда утекают заявки в малом бизнесе →