Векторную базу для RAG выбирают по пяти свойствам, а не по рейтингам: объём и нагрузка, фильтры по правам и метаданным, поиск по словам рядом со смысловым, способ эксплуатации у вас и требования к размещению данных. Для умеренного объёма и существующего PostgreSQL чаще всего хватает pgvector. Отдельные Qdrant и Weaviate нужны, когда PostgreSQL перестаёт справляться или нужны возможности, которых в нём нет.

Выбор базы влияет на качество ответов меньше, чем кажется: большую часть ошибок даёт разбиение документов и права, а не хранилище. Поэтому решение стоит принимать быстро, на ваших данных, и оставлять возможность его сменить. Что такое эмбеддинги и зачем нужна такая база, описано в статье «Векторные базы данных простыми словами», а как устроена вся система вокруг неё, — на странице «RAG-система на заказ».

Коротко. Есть PostgreSQL и умеренный объём: pgvector. Много векторов, частые фильтры и независимое масштабирование: Qdrant. Нужны встроенный гибридный поиск и готовые модули: Weaviate. Облачные сервисы подходят для открытых данных. Любой выбор проверяйте на своих вопросах и держите скрипт пересборки индекса.

Правило выбора в четырёх вопросах

Четыре вопроса отсекают большую часть вариантов до всякого сравнения.

ВопросЕсли ответ «да»Если ответ «нет»
Данные нельзя размещать у внешнего провайдера?Облачные сервисы отпадают, остаются базы, которые вы запускаете самиОблачный сервис возможен, но сравнивайте его и по цене владения
Есть PostgreSQL и команда, которая его знает?pgvector стартовый вариант: меньше новых компонентовОтдельная векторная база не сложнее для эксплуатации, чем ещё одна база
Объём или нагрузка заметно выше типичной для одной базы вашего отдела?Смотрите на отдельную векторную базу с независимым масштабированиемНе усложняйте: хватит расширения
Нужны гибридный поиск, раздельные клиенты, сложные фильтры сразу?Проверьте Qdrant и Weaviate по этим возможностям на своей версииБазового набора расширения достаточно

Если вы отвечаете «да» на первый вопрос, это сужает выбор, но не решает его. Остальное решают нагрузка и эксплуатация, о которых ниже. Для данных ограниченного доступа облачные сервисы чаще всего не подходят по требованиям заказчика: индекс содержит смысловое представление ваших текстов, и размещать его у провайдера вы должны сознательно.

Критерии: что сравнивать и о чём спросить

Ниже критерии в порядке влияния на проект. Для каждого вопрос, который стоит задать себе или подрядчику.

КритерийПочему важенЧто спросить
Фильтры по метаданнымПрава, редакции, отделы и клиенты применяются как условия к поиску, и от их скорости зависит работа всей системыКак быстро работает поиск с фильтром, который отсекает большую часть данных, и не пропадают ли результаты
Поиск по словам рядом со смысловымАртикулы, номера договоров и редкие термины смысловой поиск находит плохоЕсть ли гибридный поиск в самой базе или его собирают на стороне приложения
Обновление и удалениеРедакции документов меняются, а отозванный документ должен исчезнуть полностьюКак удалять фрагменты по условию и как скоро изменения видны в поиске
Объём и нагрузкаОпределяют, хватит ли одной машины и как расти дальшеСколько фрагментов будет через год, сколько запросов в пик, сколько памяти нужно под индекс
ЭксплуатацияКопии, обновления, мониторинг, восстановление: всё это ваша работа после сдачиКто будет обновлять базу, как проверить восстановление из копии, что будет при сбое узла
Размещение и лицензияДанные ограниченного доступа, импортозамещение, условия использованияГде лежат данные, на какой лицензии выпущена база и что произойдёт при её смене
Сообщество и зрелостьРасширение и база живут столько, сколько их поддерживаютКак часто выходят обновления и как устроен переход между версиями

Последний пункт проверяйте по документации и журналу изменений на день выбора. Мы не приводим версий и цифр производительности: они устаревают быстрее, чем логика выбора.

Сравнение вариантов: pgvector, Qdrant, Weaviate, облачные сервисы

Сравнение общее и намеренно без цифр скорости: результаты зависят от ваших данных, размерности векторов, фильтров и железа. Проверять стоит на своём наборе, как описано в разделе о проверке ниже.

ВариантСильные стороныОграниченияКогда выбирать
pgvectorРасширение PostgreSQL: векторы лежат рядом с данными и правами, обычные запросы и транзакции, привычные копии; точный и приближённый поискБольшие объёмы и частые обновления нагружают ту же базу; индекс требует памяти и времени на построение; гибридный поиск собирается из полнотекстового поиска PostgreSQLПервый запуск, умеренный объём, команда знает PostgreSQL, права и метаданные уже в этой базе
QdrantОтдельная база для векторов: фильтрация по полям во время поиска, масштабирование без привязки к основной базе, запуск у васЕщё один компонент: копии, мониторинг, обновления; данные в ней нужно согласовывать с основным хранилищем; возможности гибридного поиска проверяйте на выбранной версииМного векторов, высокая нагрузка, много фильтров, нужна независимость от основной базы
WeaviateОтдельная база со встроенным гибридным поиском и модулями для работы с эмбеддингами, поддержкой раздельных клиентовБольше настроек и зависимостей, часть возможностей зависит от версии и выбранных модулей; проще ошибиться в конфигурацииНужны встроенные модули и гибридный поиск, команда готова разбираться в настройках
Поисковый движок с векторным поискомOpenSearch или Elasticsearch: полнотекстовый и векторный поиск в одном местеТяжёлая эксплуатация, если движка у вас ещё нет; векторные возможности зависят от версииПоисковый движок уже есть и обслуживается, и полнотекстовый поиск первичен
Облачный сервисНапример Pinecone: нет эксплуатации, быстрый стартИндекс и смысловое представление текстов хранятся у провайдера; зависимость от его условий и цен; для данных ограниченного доступа чаще не подходят по требованиям заказчикаПрототип или продукт на открытых данных, когда размещение не ограничено

Существуют и другие варианты: библиотеки вроде FAISS (это не база данных, а набор алгоритмов поиска), встраиваемые хранилища для быстрых прототипов. Для рабочей системы с правами и обновлениями их обычно не берут, но для эксперимента на ноутбуке они удобны.

Права доступа: фильтровать до поиска или после

Это самый частый источник тихих ошибок. Допустим, сотрудник видит только документы своего отдела. Есть два способа применить это ограничение.

  • Фильтр после поиска. Система находит десять ближайших фрагментов по всему индексу, затем выбрасывает те, что сотрудник видеть не вправе. Остаётся два-три, и ответ бедный, а если все десять чужие, система скажет «не нашла», хотя нужный документ есть. Чужие фрагменты при этом побывали в памяти приложения и могут попасть в журнал.
  • Фильтр вместе с поиском. Условие по отделу или уровню доступа входит в сам запрос к базе, и ближайшие фрагменты ищутся только среди разрешённых. Ответ полный, чужое не обрабатывается.

Второй способ требует, чтобы база эффективно искала с фильтрами, и именно поэтому первый критерий в таблице выше. Проверяйте его на самом сложном вашем фильтре, например «документы моих отделов за исключением архивных и устаревших редакций». Если права слишком сложны для условия в запросе (наследование по папкам, личные исключения), их вычисляют заранее и записывают в метаданные как список групп.

Приёмка прав — отдельный прогон: из-под каждой роли просим закрытый документ прямым вопросом, переформулировкой и вопросом, который пересказывает его косвенно. Для SaaS с отдельными индексами клиентов к этому добавляется тест изоляции, описанный в статье «Мультиарендность в SaaS».

Сколько места и памяти понадобится: расчёт порядка

Не нужно искать чужие цифры. Порядок объёма вы посчитаете сами.

  1. Оцените число фрагментов: общий объём текста, делённый на средний размер фрагмента. Один документ даёт от нескольких до многих десятков фрагментов, в зависимости от разбиения.
  2. Умножьте на размерность вектора вашей модели эмбеддингов и на размер одного числа (обычно четыре байта, если не сжимать). Получится объём сырых векторов.
  3. Прибавьте индекс для быстрого поиска: он занимает дополнительную память, а его размер зависит от настроек.
  4. Прибавьте тексты и метаданные фрагментов, которые хранятся рядом.
  5. Умножьте на запас для роста и для пересборки индекса, при которой старый и новый существуют одновременно.

Размерность зависит от модели эмбеддингов, поэтому смена модели меняет и объём, и качество, и требует пересборки индекса целиком. Для больших объёмов используют сжатие векторов, которое экономит память ценой небольшой потери точности; её измеряют на вашей выборке, а не принимают на веру.

Как проверить выбор на своих данных за неделю

Не нужно строить всю систему, чтобы сравнить два хранилища. Нужны данные, вопросы и пять простых замеров.

  1. Соберите образец. Репрезентативная часть ваших документов, обработанная одним и тем же разбиением и одной моделью эмбеддингов для всех кандидатов.
  2. Возьмите двадцать-тридцать реальных вопросов с известными документами-ответами, включая несколько вопросов с артикулами и номерами, и несколько вопросов без ответа.
  3. Сравните полноту поиска. Для каждого вопроса: нужный фрагмент попал в число найденных или нет. Сравнивайте кандидатов по одним и тем же вопросам.
  4. Измерьте скорость с фильтром. Ваш самый строгий фильтр прав, а не поиск без условий. Смотрите и на типичный, и на худший по времени запрос.
  5. Проверьте жизненный цикл. Замените документ новой редакцией, удалите документ, остановите базу и восстановите из копии. Запишите, сколько это заняло и что пришлось делать руками.

По итогам ясно, различаются ли кандидаты на ваших данных. Часто они неотличимы по качеству поиска, и тогда выбирают по эксплуатации: чем меньше новых компонентов, тем лучше. Это ещё одна причина начинать с того, что вы уже умеете обслуживать.

Как не привязаться к одной базе

Решение, принятое сегодня, может поменяться через год: вырастет объём, изменится политика размещения, выйдет новая версия. Заранее сделайте четыре вещи, и смена обойдётся дешевле.

  • Исходные тексты и метаданные хранятся не только в векторной базе. Их источник истины лежит в обычной базе или хранилище файлов, а индекс можно пересобрать.
  • Записана версия модели эмбеддингов для каждого индекса. Без этого не понять, почему поиск вернул случайное после обновления.
  • Есть скрипт пересборки индекса с нуля, и его хотя бы раз запускали полностью.
  • Доступ к базе идёт через тонкий слой в вашем коде: «добавить фрагмент», «искать с фильтром», «удалить по условию». Не размазывайте вызовы клиентской библиотеки по всему проекту.

Тогда переход с pgvector на Qdrant или обратно сводится к реализации слоя и пересборке индекса, а выборка вопросов покажет, не ухудшилось ли качество.

Ошибки, из-за которых выбор оказывается неудачным

  • Выбирают по рекламе и обзорам. Скорость на чужих данных ничего не говорит о ваших фильтрах и вашем объёме.
  • Начинают с самой тяжёлой архитектуры «на вырост». Кластер из нескольких узлов для коллекции, которая помещается в память одной машины, добавляет эксплуатацию, но не качество.
  • Не проверяют фильтры. Поиск без условия быстр, а с условием по правам медленнее или возвращает пустой результат.
  • Меняют модель эмбеддингов, не пересобрав индекс. Векторы от разных моделей несравнимы, и поиск начинает работать случайно.
  • Считают, что база решит задачу качества. Если документы разобраны плохо, никакая база не вернёт из них точный ответ.
  • Размещают индекс у внешнего провайдера, не оценив данные. Индекс содержит смысловое представление текстов, и для данных ограниченного доступа это решение должно быть осознанным.

Что делаем мы и с чего начать

Начинаем с обследования: 200 000 ₽ и 2–3 недели за один набор источников и сценарий, 350 000 ₽ и 3–4 недели при нескольких системах и ролях. На выходе документ с выбором хранилища и причинами выбора, правилами разбиения, схемой прав, эталонной выборкой и вилкой бюджета. Стоимость вычитается из первого этапа, если продолжаете с нами, а документом можно пользоваться и без нас.

Дальше лёгкий пилот (150 000–400 000 ₽, 2–8 недель) или тяжёлый (400 000–1 200 000 ₽, 2–3 месяца), затем вывод в эксплуатацию этапами, и на любой ступени можно остановиться. Мы берём один контур, а не внедрение по всей компании, и не дежурим круглосуточно. Исходный код и индексы остаются в вашем контуре, репозиторий ваш с первого коммита. Цены и сроки — на странице «Тарифы», описание услуги — на странице «RAG-система на заказ». Если вам нужен готовый ассистент для сотрудников, а не разработка, смотрите ИИ-ассистента по документам.

Частые вопросы

Какую векторную базу выбрать для RAG?

Если есть PostgreSQL и умеренный объём, начните с pgvector. Для больших объёмов, частых фильтров и независимого масштабирования смотрите Qdrant, при необходимости встроенных гибридного поиска и модулей — Weaviate. Выбор подтверждайте на своих вопросах.

Достаточно ли pgvector для рабочей системы?

Для умеренного объёма и нагрузки достаточно. Признаки, что пора смотреть на отдельную базу: растущий объём, заметная нагрузка на основную базу от поиска, сложные фильтры по метаданным, требование независимого масштабирования.

Нужен ли отдельный поиск по словам рядом с векторным?

Для артикулов, номеров договоров, редких терминов обычно да. Смысловой поиск находит близкое по смыслу, но плохо находит точные идентификаторы. Гибридный поиск встроен в часть баз, в других его собирают из полнотекстового поиска и векторного на стороне приложения.

Можно ли использовать облачный сервис вроде Pinecone?

Для открытых данных и прототипов можно. Для данных ограниченного доступа облачные сервисы чаще всего не подходят по требованиям заказчика, потому что индекс хранится у провайдера. Решение о размещении принимаете вы.

Что будет, если сменить модель эмбеддингов?

Индекс придётся пересобрать целиком, потому что векторы разных моделей несравнимы. Поэтому версию модели записывают в метаданные индекса и держат скрипт пересборки. После смены прогоняют выборку вопросов и сравнивают качество.

Как проверить права доступа в векторной базе?

Из-под каждой роли просят закрытый документ прямым вопросом, переформулировкой и косвенным пересказом. Фильтр прав входит в запрос к базе, а не накладывается на результат: иначе чужие фрагменты попадают в память приложения и журнал.

Сколько памяти нужно под индекс?

Число фрагментов умножьте на размерность вектора и размер числа, затем прибавьте индекс, тексты и запас для пересборки. Точная цифра зависит от модели и настроек, поэтому её считают на образце ваших документов на обследовании.

Сколько стоит выбор и настройка?

Выбор хранилища входит в обследование: 200 000 ₽ за один набор источников и сценарий или 350 000 ₽ при нескольких системах. Сумма вычитается из первого этапа, если продолжаете с нами. Лёгкий пилот — 150 000–400 000 ₽.