Минимальный стек для RAG: два сервиса. PostgreSQL — метаданные, пользователи, при необходимости pgvector. Qdrant — векторное хранилище для эмбеддингов. Ниже — конфигурация и порядок запуска.
Роль компонентов
PostgreSQL: структурированные данные — документы, разделы, пользователи, сессии. Qdrant: similarity search по векторам. Связка типична для RAG: поиск в Qdrant по эмбеддингу запроса, подтягивание метаданных и текстов из PostgreSQL или кеша. Данные в одном контуре; интерфейс — отдельный слой.
Конфигурация docker-compose
Файл docker-compose.yml. Два сервиса. PostgreSQL: пароль и объём. Qdrant: образ и порт. Пример:
version: '3.8'
services:
postgres:
image: postgres:15-alpine
environment:
POSTGRES_USER: adminica
POSTGRES_PASSWORD: your_secure_password
POSTGRES_DB: adminica
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U adminica"]
interval: 5s
timeout: 5s
retries: 5
qdrant:
image: qdrant/qdrant:latest
volumes:
- qdrant_storage:/qdrant/storage
ports:
- "6333:6333"
environment:
QDRANT__SERVICE__GRPC_PORT: 6334
volumes:
pgdata:
qdrant_storage:
Запуск: docker compose up -d. Порты и роли компонентов:
| Сервис | Порт | Назначение |
|---|---|---|
| PostgreSQL | 5432 | Подключение приложения, миграции, метаданные документов |
| Qdrant REST | 6333 | Dashboard, API коллекций, проверка здоровья |
| Qdrant gRPC | 6334 | Быстрый поиск по векторам из приложения |
Верификация
PostgreSQL: psql -h localhost -U adminica -d adminica -c "SELECT 1". Qdrant: http://localhost:6333/dashboard или curl http://localhost:6333/collections. Дальше: настройка приложения — URL и ключи к БД и Qdrant, создание коллекции, загрузка эмбеддингов через API.
RAG поверх стека
Приложение подключается к PostgreSQL (миграции, документы/чанки) и к Qdrant (коллекция, индексация, поиск). После деплоя: миграции БД, переиндексация. Готовый стек с UI можно верифицировать в облаке; затем — развернуть тот же конфигурационный файл у себя. Архив создаётся один раз; обслуживание — непрерывно.
Практики применения
- Разверните стек по статье в тестовом окружении; проверьте
psqlиcurl .../collections. - Затем настройте приложение, создайте коллекцию и загрузите эмбеддинги; документируйте шаги в базе знаний.
Итого: два сервиса в одном docker-compose.yml, healthcheck для PostgreSQL, volumes для данных. Проверка — psql и curl http://localhost:6333/collections. Дальше — настройка приложения и загрузка эмбеддингов.