Self-hosting RAG-векторной базы (ChromaDB и pgvector)
чтение · 7 мин
Retrieval-augmented generation нужно где-то хранить эмбеддинги. Размещая это векторное хранилище на своём VPS, ты держишь документы приватными, а расходы — фиксированными. Два надёжных варианта: ChromaDB (просто) или PostgreSQL с pgvector (для продакшена).
Шаги
Вариант A — ChromaDB
ChromaDB — самый быстрый способ начать. Установи его через pip и запусти сервер с постоянным каталогом данных.
$ python3 -m venv venv && source venv/bin/activate
$ pip install chromadb
$ chroma run --path ~/chroma-data --port 8000 Вариант B — PostgreSQL + pgvector
Для продакшен-конфигурации добавь расширение pgvector в PostgreSQL и храни эмбеддинги рядом с реляционными данными.
$ sudo apt-get install -y postgresql postgresql-16-pgvector
$ sudo -u postgres psql -c "CREATE EXTENSION vector;" Создай векторный столбец
В pgvector храни эмбеддинги как векторный столбец и добавь индекс для быстрого поиска по сходству.
CREATE TABLE docs (id bigserial PRIMARY KEY, content text, embedding vector(1536));
CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops); Сохраняй и резервируй данные
Держи каталог данных на томе, который переживает перезагрузки, и настрой регулярные бэкапы, чтобы индекс никогда не потерялся.
$ pg_dump -Fc ragdb > ~/backups/rag-$(date +%F).dump Держи приватно с Tailscale
Векторное хранилище не должно быть открыто в публичный интернет. Привяжи его к интерфейсу Tailscale, чтобы доступ был только с твоих устройств.
$ sudo ufw allow in on tailscale0 to any port 8000 proto tcp Частые вопросы
ChromaDB или pgvector — что выбрать? +
ChromaDB быстрее для прототипов и чисто векторных нагрузок. Выбирай pgvector, если уже используешь PostgreSQL или хочешь держать векторы и реляционные данные в одной ACID-базе.
Сколько диска нужно эмбеддингам? +
Примерно число измерений умножить на 4 байта на вектор, плюс накладные расходы индекса. Эмбеддинг на 1536 измерений — около 6 КБ; миллион таких — несколько ГБ, что легко помещается на диск VPS.
Как делать бэкап? +
Для pgvector используй pg_dump по расписанию; для ChromaDB делай снапшот каталога persist. Храни копии вне сервера.
Связанные гайды
Размести свой RAG-стек сам
VPS с диском и памятью, которые нужны приватной векторной базе.
Посмотреть тарифы VPS →