RAG

Self-hosting RAG-векторной базы (ChromaDB и pgvector)

чтение · 7 мин

Retrieval-augmented generation нужно где-то хранить эмбеддинги. Размещая это векторное хранилище на своём VPS, ты держишь документы приватными, а расходы — фиксированными. Два надёжных варианта: ChromaDB (просто) или PostgreSQL с pgvector (для продакшена).

Шаги

01

Вариант A — ChromaDB

ChromaDB — самый быстрый способ начать. Установи его через pip и запусти сервер с постоянным каталогом данных.

$ python3 -m venv venv && source venv/bin/activate
$ pip install chromadb
$ chroma run --path ~/chroma-data --port 8000
02

Вариант B — PostgreSQL + pgvector

Для продакшен-конфигурации добавь расширение pgvector в PostgreSQL и храни эмбеддинги рядом с реляционными данными.

$ sudo apt-get install -y postgresql postgresql-16-pgvector
$ sudo -u postgres psql -c "CREATE EXTENSION vector;"
03

Создай векторный столбец

В pgvector храни эмбеддинги как векторный столбец и добавь индекс для быстрого поиска по сходству.

CREATE TABLE docs (id bigserial PRIMARY KEY, content text, embedding vector(1536));
CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops);
04

Сохраняй и резервируй данные

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

$ pg_dump -Fc ragdb > ~/backups/rag-$(date +%F).dump
05

Держи приватно с 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 →