Chroma - это встраиваемое приложение базы данных, встроенное в наш код в виде пакета. Преимущество Chroma заключается в его простоте. Если вам нужна векторная база данных для реализации памяти LLM при разработке приложений LLM, поддерживается поиск похожих текстов и вы не хотите устанавливать независимую векторную базу данных, Chroma - хороший выбор. В настоящее время библиотека Chroma поддерживает два языка: Python и JavaScript. Этот учебник в основном основан на Python.

1. Установка Chromadb

pip install chromadb

Примечание: Текущая версия chromadb не совместима с Python 3.11. Рекомендуется откатить версию Python.

2. Инициализация клиента Chroma

import chromadb
chroma_client = chromadb.Client()

3. Создание коллекции

Коллекция аналогична таблице в базе данных Chroma, где хранятся векторные данные (включая документы и другие исходные данные). Создайте коллекцию следующим образом:

collection = chroma_client.create_collection(name="tizi365")

4. Добавление данных

После определения коллекции добавьте данные в нее. Chroma будет хранить наши данные и создавать специальный векторный индекс на основе вектора текстовых данных для удобного последующего запроса.

4.1. Расчет векторов с использованием встроенной модели встраивания

collection.add(
    documents=["Это документ", "Еще один документ"],
    metadatas=[{"источник": "мой_источник"}, {"источник": "мой_источник"}],
    ids=["id1", "id2"]
)

4.2. Указание значений векторов при добавлении данных

collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["Это документ", "Еще один документ"],
    metadatas=[{"источник": "мой_источник"}, {"источник": "мой_источник"}],
    ids=["id1", "id2"]
)

5. Запрос данных

Теперь вы можете запрашивать похожие текстовые данные, и Chroma вернет "n" наиболее похожих результатов. Вот пример запроса похожего содержимого документа на основе параметра запроса query_texts:

results = collection.query(
    query_texts=["Это текст запроса"],
    n_results=2
)

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