pgvector или Pinecone: как выбрать векторную базу
pgvector, Pinecone или Weaviate: как выбрать векторную базу для ИИ-ассистента с памятью. Главный критерий не бенчмарк, а на чьём сервере лежат Ваши данные.
Алекс сидит в стеклянной переговорке допоздна и сравнивает три варианта для памяти своего рабочего ассистента: он привык проверять такие решения сам, не передоверяя их никому. Короткого ответа в духе «берите вот эту базу» честно дать нельзя, и в этом вся суть. pgvector, Pinecone и Weaviate решают одну задачу: хранить смысл записей и быстро находить близкое по смыслу. Отличаются они не столько скоростью, сколько тем, где физически стоит база и кто держит ключи от сервера. pgvector это открытое расширение обычного PostgreSQL: база живёт внутри Вашего Postgres, на Вашем сервере, и данные остаются у Вас. Pinecone это управляемый облачный сервис: база работает на инфраструктуре провайдера, а Вы обращаетесь к ней по сети. Weaviate занимает середину: открытый код, который можно поднять у себя или взять как управляемое облако. Для ИИ-ассистента, чья память копит Ваше дело месяцами, решающим оказывается не выигрыш в миллисекундах на бенчмарке, а вопрос владения: на чьём сервере лежат Ваши данные. Ниже разберём три варианта именно по этой оси.
Почему бенчмарк не главный критерий
Кажется, что выбор базы это спор о скорости: кто быстрее находит соседей, тот и лучше. Проект ann-benchmarks, который годами сравнивает десятки реализаций приближённого поиска, показывает, что всё устроено тоньше. Он меряет не одну цифру, а связку двух: полноту выдачи (recall) и число запросов в секунду. Между ними всегда компромисс: можно искать точнее, но медленнее, или быстрее, но с риском изредка пропустить идеального соседа.
Отсюда главный методический принцип проекта: у каждой библиотеки перебирают множество настроек и оставляют только точки на «границе точность против скорости», отбрасывая заведомо проигрышные. Практический вывод для непрограммиста простой: единственного победителя по цифрам нет. На типичных объёмах инструменты идут плотной группой у этой границы, и разница между ними для памяти личного ассистента, где записей сотни тысяч, а не миллиарды, на практике незаметна.
Если по скорости три базы для нашей задачи примерно равны, то выбирать надо по тому, что действительно различает их: по устройству и по тому, кому принадлежит сервер, на котором база стоит.
pgvector: база внутри Вашего Postgres
pgvector это открытое расширение PostgreSQL, обычной проверенной базы данных, на которой десятилетиями работают банки и магазины. Оно добавляет в знакомую базу тип «вектор» и поиск по близости смысла. По умолчанию pgvector ищет точно, с полной выдачей, а при желании включается приближённый поиск через индекс: HNSW, который строит из векторов многослойный граф, или IVFFlat, который делит векторы на списки. Поддерживаются привычные меры близости, от косинусной до L2.
Главное свойство pgvector не в цифрах поиска, а в наследстве Postgres. Векторы лежат в той же базе, что и остальные данные, и получают её гарантии: ACID, резервные копии, восстановление на момент времени, репликацию. Обращаться к базе можно из любого языка, у которого есть клиент Postgres. Код открыт и опубликован на GitHub: его можно проверить, развернуть на своём сервере и забрать целиком вместе с файлами.
Именно поэтому на pgvector построена память Хермес. Векторная память живёт в PostgreSQL на сервере клиента, а не в закрытом облаке. Как эмбеддинги и поиск по смыслу устроены изнутри, мы разбираем в обзоре темы память ИИ-ассистента.
Pinecone: управляемое облако
Pinecone решает ту же задачу с другого конца. Это управляемый облачный сервис для векторного поиска: провайдер держит инфраструктуру, следит за масштабированием и обслуживанием, а Вы обращаетесь к базе по сети через его интерфейс. Для команды, которая не хочет заниматься серверами, это снимает целый пласт забот: не нужно самому поднимать базу, обновлять её и держать в рабочем состоянии.
За удобство есть архитектурная плата, и назвать её честнее, чем обойти. База работает на инфраструктуре провайдера, а не на Вашей. Это не хуже и не лучше само по себе, это другое распределение ролей: обслуживание берёт на себя провайдер, но и сервер с Вашими данными физически его. Для проекта, где данные обезличены и легко заменимы, такой размен часто оправдан. Для памяти, которая накапливает Ваше дело, вопрос звучит иначе, и к нему мы придём ниже.
Weaviate: открытый код и два способа развернуть
Weaviate стоит посередине между двумя предыдущими. Это отдельная векторная база с открытым кодом, которую разворачивают рядом с приложением, а не внутри Postgres. Открытость даёт то же, что у pgvector: код можно проверить и поднять у себя.
Особенность Weaviate в том, что у него два пути сразу. Первый: развернуть базу на собственном сервере, тогда данные остаются у Вас. Второй: взять Weaviate как управляемое облако, тогда обслуживание уходит провайдеру, а вместе с ним туда переезжает и сервер с данными. Получается, что выбор внутри одного продукта повторяет весь наш спор в миниатюре: та же база в первом варианте оставляет данные у Вас, во втором нет. Это удобно напоминает, что дело не в названии базы, а в том, где Вы решили её поставить.
Главный критерий: кто держит ключи от сервера
Сведём три варианта воедино. По скорости на нашей задаче они близки. По устройству различаются: pgvector расширяет Postgres, Weaviate это отдельная база, Pinecone это сервис. Но настоящая развилка проходит не между тремя именами, а между двумя ответами на один вопрос: на чьём сервере стоит база.
Для памяти ИИ-ассистента этот вопрос перевешивает остальные. Память копит Ваше дело месяцами: клиентов, цены, договорённости, решения. Через полгода ценность ассистента во многом уже не в модели, а в этой накопленной базе. И тогда важно не то, какой алгоритм на доли процента точнее, а то, сможете ли Вы в любой момент снять базу с диска и унести. Разница здесь как между сейфом дома и ячейкой в чужом банке: и там, и там вещи в сохранности, но до ячейки Вы добираетесь по расписанию банка, а не своему. Если сервер Ваш, база уезжает вместе с Вами. Если сервер провайдера, при уходе Вы оставляете накопленное ему. Владение определяется не строкой в соглашении, а тем, где физически лежат файлы. Алекс именно поэтому и сидит вечерами над такими решениями сам: он не любит держать важное там, куда не дотянется в любой момент.
Так устроена память в продукте intakto: база на pgvector стоит на сервере клиента в РФ, данные не уходят за рубеж, а сам сервер принадлежит клиенту по договору. Решите уйти, заберёте базу целиком.
Как выбрать под свою задачу
Практический ориентир такой. Если Вы собираете временный прототип или демонстрацию, где данные обезличены и не жалко, управляемое облако вроде Pinecone или облачного Weaviate экономит время: не надо поднимать сервер, всё готово из коробки. Скорость старта здесь важнее владения, потому что владеть особо нечем.
Если же речь о долговременной памяти, которая хранит Ваших клиентов и Ваши решения и должна остаться Вашей, выбор смещается к тому, что стоит на Вашем сервере: pgvector внутри Postgres или самостоятельно развёрнутый Weaviate. Здесь миллисекунды отступают, а на первое место выходит один вопрос: сможете ли Вы забрать свою базу.
Проверка не требует знания кода. Спросите поставщика ассистента, можете ли Вы получить файлы своей векторной базы и перенести их на свой сервер. Ответ скажет о продукте больше, чем любое сравнение бенчмарков.
Что выбрать: pgvector или Pinecone?
Зависит от того, что важнее: чтобы база стояла на Вашем сервере или чтобы её обслуживал провайдер. pgvector это открытое расширение PostgreSQL: база живёт внутри Вашего Postgres, данные остаются у Вас, забрать их можно вместе с сервером. Pinecone это управляемый облачный сервис: провайдер снимает заботы об обслуживании, но база работает на его инфраструктуре. Для памяти о Вашем деле, которая копится месяцами, решающим чаще оказывается владение, а не удобство обслуживания.
Какая векторная база лучше для RAG?
Для RAG подходят все три, потому что задача у них общая: хранить эмбеддинги и быстро находить близкие по смыслу фрагменты. Проект ann-benchmarks показывает, что на типичных объёмах инструменты идут плотной группой у границы «точность против скорости», и одного победителя по цифрам нет. Поэтому выбор для RAG упирается не в бенчмарк, а в то, где стоит база и кто держит ключи от сервера с Вашими данными.
Есть ли бесплатная open source векторная база?
Да. pgvector это открытое расширение PostgreSQL: код опубликован на GitHub, лицензия открытая, развернуть можно на любом своём сервере без платы за сам движок. Weaviate тоже открыт: его можно поднять у себя. Открытый код даёт два свойства, которых нет у закрытого облака: базу можно проверить и её можно забрать. Именно на pgvector построена память Хермес.
Чем Weaviate отличается от pgvector?
pgvector это расширение внутри обычного PostgreSQL: векторы лежат в той же базе, что и остальные данные, и наследуют её резервные копии и надёжность. Weaviate это отдельная векторная база с открытым кодом, которую разворачивают рядом. У Weaviate два пути: поднять у себя или взять как управляемое облако. В первом случае данные остаются у Вас, во втором переезжают на инфраструктуру провайдера. Сам выбор внутри Weaviate это и есть выбор владения.
источники (2)
- pgvector: open-source vector similarity search for Postgres · GitHub, pgvector
- ANN Benchmarks · GitHub, Erik Bernhardsson