Chroma

Chroma (часто называемая ChromaDB) — это открытая векторная база данных, оптимизированная под удобство разработчика и быструю локальную итерацию. Если Pinecone нацелен на продакшен-масштаб как управляемый сервис, ниша Chroma — противоположный конец рабочего процесса: она в одном `pip install chromadb`, запускается внутри процесса Python-скрипта, Jupyter-ноутбука или лёгкого Docker-контейнера, требуя нулевой внешней инфраструктуры для запуска RAG-прототипа. Почему это важно для AI/SaaS-разработчиков: самый быстрый способ проверить, действительно ли retrieval-augmented generation решит продуктовую проблему, — построить одноразовый прототип, и Chroma убирает из этого цикла любое трение, связанное с настройкой: не нужны API-ключи, облачный аккаунт, оплата. Именно поэтому она стала векторным хранилищем по умолчанию в примерах «быстрого старта» LangChain и LlamaIndex, и многие команды выпускают её в продакшен для небольших-средних наборов данных, прежде чем «повышаться» до Pinecone, Qdrant или pgvector, когда понадобится многоузловой масштаб или более строгие операционные гарантии. Как это работает: Chroma хранит векторы, документы и метаданные вместе в «коллекциях» (примерно аналог таблицы). Она берёт на себя шаг эмбеддинга, если вы не передаёте векторы напрямую, — передайте сырой текст и настроенную функцию эмбеддинга, и Chroma автоматически обратится к OpenAI, Sentence-Transformers или другому провайдеру. Под капотом она использует индекс HNSW (через библиотеку hnswlib) для приближённого поиска ближайших соседей и сохраняет данные на диск (SQLite + хранилище наподобие Parquet), так что локальная коллекция переживает перезапуски процесса. Она поддерживает фильтрацию по метаданным с синтаксисом запросов в стиле Mongo (`where={"category": "faq", "views": {"$gt": 100}}`) и может работать в клиент-серверном режиме для небольших продакшен-развёртываний. Разбор примера: независимый разработчик создаёт инструмент «чат с вашим PDF». При загрузке файла бэкенд разбивает PDF на фрагменты по 800 символов с перекрытием в 100 символов, создаёт коллекцию Chroma, привязанную к этому документу (`chroma_client.create_collection(name=f"doc_{file_id}")`), и добавляет фрагменты через `collection.add(documents=chunks, ids=chunk_ids)`. Во время запроса `collection.query(query_texts=["Каков срок уведомления о расторжении?"], n_results=4)` возвращает наиболее релевантные фрагменты, которые встраиваются в промпт для LLM. Поскольку всё работает в одном процессе Python, весь прототип выпускается менее чем в 100 строках кода без необходимости в облачной векторной базе данных. Chroma также поставляется с клиент-серверным режимом (`chromadb.HttpClient`) для команд, которые хотят сохранить тот же простой API, но перенести хранение на общий сервер, когда прототип начинает получать реальное использование, — смягчая обрыв «переходи на большую базу данных», характерный для некоторых инструментов прототипирования. Chroma поддерживается как по-настоящему открытый проект (лицензия Apache 2.0) с опциональным размещённым предложением «Chroma Cloud» для команд, которые хотят тот же API без самостоятельного хостинга сервера, — но, в отличие от Pinecone, запуск её самостоятельно бесплатно, без оплаты по использованию, остаётся полностью поддерживаемым и именно так её сегодня фактически эксплуатирует в продакшене большинство небольших и средних команд.

Похожие термины

Ещё термины: Данные и инфраструктура