Векторные базы данных в закрытом контуре: инфраструктура для RAG
RAG (retrieval-augmented generation) даёт бизнесу и госсектору способ применять языковые модели к собственным документам, не отправляя их во внешнее облако. Модель отвечает не по «памяти», а по найденным фрагментам ваших регламентов, договоров и баз знаний. Сердце такой системы – векторная база данных: она хранит эмбеддинги документов и за миллисекунды находит семантически близкие к запросу. Если данные относятся к гостайне, персональным данным или коммерческому секрету, всю эту инфраструктуру нужно развернуть в закрытом контуре, без доступа в интернет. Разберём, что это значит на практике.
Что выбрать в качестве движка
Готовых SaaS-сервисов вроде Pinecone в закрытом контуре нет по определению – остаются решения, которые ставятся на свои серверы. Рабочие варианты на август 2024 года: Qdrant (российская разработка, Apache 2.0), Weaviate, Milvus, а также расширение pgvector для PostgreSQL.
Отдельный движок (Qdrant, Milvus) выигрывает на больших объёмах и высокой нагрузке: фильтрация по метаданным, квантизация, шардирование из коробки. Но это ещё одна система в вашем стеке – со своим бэкапом, мониторингом и обновлениями.
pgvector привлекателен тем, что вы остаётесь в знакомом PostgreSQL: один транзакционный контур, один инструмент резервного копирования, привычные права доступа. Для коллекций до нескольких миллионов векторов этого достаточно, особенно если PostgreSQL у вас уже в продуктиве после импортозамещения СУБД. Выбор между специализированным движком и расширением к существующей базе – частный случай дилеммы «кастом против коробки»: не берите тяжёлый отдельный продукт, пока его не требует профиль нагрузки.
Железо и модель эмбеддингов
Векторный поиск упирается в память и в скорость индекса HNSW. Считайте грубо: миллион векторов размерностью 1024 в float32 – это около 4 ГБ только под сами векторы, плюс граф индекса сверху. Для отзывчивого поиска индекс должен помещаться в RAM, поэтому планируйте память с запасом, а не «по факту загрузки».
Вторая половина задачи – модель, которая превращает текст в векторы. Она тоже работает внутри контура, обычно на GPU. Здесь критично зафиксировать версию: пересчёт эмбеддингов для всего корпуса при смене модели – дорогая операция, а размерность вектора жёстко связана со схемой базы. Подбор модели под русский язык и доменную лексику, выделение GPU и сайзинг узлов закладываются на этапе проектирования ИТ-инфраструктуры под нагрузку, а не решаются в последний день.
Изоляция и независимость
Закрытый контур – это не только отсутствие интернета. Это отдельная сеть, свой реестр контейнеров, офлайн-поставка моделей и образов, локальный мониторинг. Все компоненты должны обновляться без выхода наружу, иначе первая же CVE превращается в проблему доставки патчей.
Берите движки с открытой лицензией и стандартными протоколами. Проприетарный формат индекса или закрытый API эмбеддингов – это vendor lock-in, который в изолированной среде особенно болезнен: мигрировать придётся вручную и целиком.
Вывод
Векторная БД в закрытом контуре – обычная инфраструктурная задача: выбрать движок под профиль нагрузки, рассчитать память и GPU, обеспечить офлайн-обновления и не привязаться к одному вендору. Начните с честной оценки объёма данных и требований к изоляции – это определит и движок, и железо, и бюджет.