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 для сохранения данных на жесткий диск, чтобы программа загружала данные с диска при запуске.