Векторная база данных Chroma: установка и Docker, коротко и с данными
Конспект страницы: 6 разделов коротко, данные на 14 октября 2026 и ответы на 3 вопроса. Полный разбор с примерами: Векторная база данных Chroma: установка и Docker.
Коротко
Векторная база данных Chroma ставится командой pip install chromadb для работы прямо из Python или контейнером chromadb/chroma, который слушает порт 8000 и хранит данные в папке /data. Для первого RAG её удобно брать из-за встроенного режима без сервера, а для доступа по сети ей нужен прокси с паролем. Для прототипа хватит Chroma прямо в Python без сервера.
Конспект по разделам
Три режима работы Chroma и какой выбрать
Chroma хранит эмбеддинги текстов вместе с исходным текстом и метаданными и ищет ближайшие по смыслу. Для RAG на старте это удобно: клиент ставится одной командой и работает без отдельного сервиса. Клиенты есть для Python ( pip install chromadb ) и JavaScript ( npm install chromadb ).
Установка Chroma через pip и запуск сервера
Модель эмбеддингов Chroma может посчитать сама встроенной функцией, но для документов на русском лучше передавать векторы от многоязычной модели, например из Ollama. Главное правило: и документы, и вопросы считаются одной и той же моделью.
- Поставьте пакет в виртуальное окружение: pip install chromadb.
- Для встроенного режима создайте клиента с папкой: chromadb.PersistentClient(path="./chroma").
- Для режима сервера запустите chroma run --path /srv/chroma, а в приложении подключайтесь через chromadb.HttpClient(host="localhost", port=8000).
Chroma в Docker: том /data и docker compose
Команда из документации, с привязкой порта к локальному адресу: Без тома на /data коллекции исчезнут вместе с контейнером. В compose это сервис с образом chromadb/chroma, томом /srv/chroma-data:/data и портом; пример в документации дополнительно поднимает сборщик трассировок OpenTelemetry и Zipkin, для начала они не нужны. Живость сервера проверяет запрос curl http://localhost:8000/api/v2/heartbeat.
Как закрыть Chroma от чужих запросов
Страница документации о запуске в Docker не описывает встроенную аутентификацию. Поэтому сервер Chroma держат во внутренней сети: порт привязан к 127.0.0.1, приложения в соседних контейнерах ходят по имени сервиса. Доступ снаружи только через прокси Если базой пользуются с другого сервера, поставьте впереди Caddy или Nginx с HTTPS и паролем либо пускайте только адреса своих серверов.
Chroma, Qdrant или pgvector: что выбрать под RAG
Переезд с Chroma на Qdrant или pgvector обычно сводится к повторной загрузке тех же векторов. Подбор сервера под объём коллекций: Объём коллекций, место расчёта эмбеддингов и нагрузка: калькулятор подберёт конфигурацию
Запустите свой сервер за пару минут
Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.
- NVMe-диски и гарантированная доля процессора
- Root-доступ и любой софт, от Docker до игровых серверов
- Маркетплейс: 91 приложение в один клик
- Бесплатный перенос проекта силами специалистов
Данные
| Режим | Как запускается | Когда подходит |
|---|---|---|
| Встроенный | Библиотека в процессе Python, данные в папке | Прототип, скрипт, один пользователь |
| Клиент-сервер | chroma run или Docker-образ | Несколько приложений, сервер команды |
| Chroma Cloud | Облако разработчиков | Не хотите держать сервер |
| Chroma | Qdrant | pgvector | |
|---|---|---|---|
| Старт | pip install, без сервера | Docker-контейнер | Расширение PostgreSQL |
| Порт | 8000 | 6333 и 6334 | 5432 |
| Ключ API из коробки | В документации Docker не описан | Есть, включается в конфигурации | Пароли PostgreSQL |
| Лицензия | Apache 2.0 | Apache 2.0 | PostgreSQL License |
Данные на 14 октября 2026.
Вопросы и ответы
Где Chroma в Docker хранит данные?
В папке /data внутри контейнера. Смонтируйте её на диск хоста флагом -v /srv/chroma-data:/data, тогда коллекции переживут пересоздание контейнера и обновление образа.
Нужен ли Chroma отдельный сервер?
Для прототипа нет: в Python она работает внутри скрипта и хранит данные в папке. Сервер нужен, когда к базе обращаются несколько приложений или людей.
Как проверить, что сервер Chroma запущен?
Запросом к /api/v2/heartbeat на порту 8000: работающий сервер отвечает без ошибки. Этот же адрес подходит для мониторинга.