Что такое Chroma

Chroma - это open source векторная база данных. Она работает с векторами и находится в открытом доступе. Любой желающий может начать использовать эту базу данных для хранения своих векторов.

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

Chroma работает не только с Python, но Python - это основной нативный инструмент, с которым эта база данных может взаимодействовать.

Сценарии использования

Основные сценарии использования Chroma - это семантический поиск. Мы ищем не по точному вхождению какого-то слова. Например, мы ищем слово "хлеб". Мы будем искать не только по слову "хлеб", но и по всем смысловым значениям, которые находятся рядом.

Например, векторная база данных по слову "хлеб" может выдать:

  • зерно
  • завод
  • хлебопекарню

Это все понятия, которые находятся близко друг к другу. Мы ищем не только "хлеб", "хлебный" и подобные вхождения. Мы ищем семантические значения, которые будут подходить под наш поиск. Эту базу данных можно использовать для поиска по документации, по базе знаний, по статьям.

Часто Chroma используют для RAG-систем и ассистентов. База данных входит в систему RAG, и вы можете использовать её для хранения эмбеддингов. Большая информация разбивается на куски, переводится в векторы. Эти векторы хранятся в векторной базе данных Chroma.

Поскольку AI и ассистенты имеют ограниченный контекст, мы выбираем из этой векторной базы данных куски, которые по смысловой нагрузке больше всего подходят к запросу пользователя. Эти данные выдаются ассистенту, и он уже формирует ответ на основе этого контекста.

Также Chroma может использоваться для систем рекомендаций, подбора похожего контента, статей, продуктов и для кластеризации. Это более специфичные примеры использования, которые тоже имеют место быть.

Интеграция и ограничения

Chroma - это инструмент, который позволяет связывать различные узлы систем, взаимодействующих с искусственным интеллектом. Она хранит эмбеддинги, которые были созданы с помощью OpenAI, Ollama и других инструментов. Если LLM-модель запросит какие-то данные, Chroma выдаёт эти данные.

Также существует тесная связь с библиотекой LangChain. Там есть инструменты, которые позволяют более эффективно работать с этой базой данных. Пользовательский интерфейс может быть реализован как Telegram-бот, веб-браузер и так далее.

Chroma получила широкое распространение в связи с появлением систем искусственного интеллекта. Нужно где-то хранить дёшево векторные данные, и Chroma - это хорошее решение, если вы разрабатываете на Python.

Нужно понимать, что Chroma не является единственной векторной базой данных. Это лишь одно из решений, которое вы можете применить в своей работе. Есть некоторые архитектурные ограничения:

  • не оптимизирована для систем с высокой нагрузкой
  • ограниченная масштабируемость
  • не предназначена для хранения огромного объёма данных
  • не лучший выбор для десятков миллионов векторов
  • зависимость от экосистемы Python

Chroma хорошо подходит для проектов, где нужно:

  • запустить MVP
  • быстро попробовать что-то и посмотреть, как это будет работать
  • локальные RAG-системы
  • чат-боты
  • офлайн-решения
  • демо-приложения
  • проекты с небольшими и средними объёмами данных

Для high-production систем, если вы выкладываете это на продакшн-сервер, стоит поискать другие векторные базы данных. Если у вас большие объёмы (миллионы, десятки миллионов векторов), то Chroma может не подойти. Если требуется отказоустойчивая архитектура или вы пишете программу не на Python, лучше рассмотреть другие варианты.

Chroma - это простой и удобный способ добавить семантический поиск и RAG-систему в ваш проект без сложной инфраструктуры, которую нужно разворачивать.