Chroma как начать работать с векторным поиском


Chroma — это мощная векторная база данных, которая упрощает работу с векторными эмбеддингами и семантическим поиском. Она позволяет находить информацию не по ключевым словам, а по смыслу, что делает её идеальным инструментом для современных AI-приложений, таких как чат-боты, рекомендательные системы и системы поиска.
В этой статье мы покажем, как использовать Chroma DB на простом примере. Вы научитесь устанавливать библиотеку, создавать коллекцию, добавлять в неё данные и выполнять семантический поиск.
Что такое Chroma рассматривали в этой статье.
Установка и настройка
Прежде всего, вам нужно установить библиотеку Chroma DB. Это можно сделать с помощью пакетного менеджера pip
. Откройте терминал или командную строку и выполните следующую команду:
pip install chromadb
Эта команда загрузит и установит все необходимые компоненты для работы с Chroma DB.
Пример использования Chroma
Этот пример демонстрирует базовый процесс работы с Chroma: от инициализации клиента до получения результатов семантического поиска.
import chromadb
# 1. Инициализация клиента Chroma
# Запускаем клиент в памяти (in-memory) для простоты примера
client = chromadb.Client()
# 2. Создание коллекции
# Коллекция — это аналог таблицы в традиционной базе данных
collection = client.create_collection(name="my_documents")
# 3. Добавление данных
# Мы добавляем три документа с их ID и метаданными
collection.add(
documents=["Это статья о машинах", "Это статья о компьютерах", "Это о космосе"],
metadatas=[{"source": "статья_1"}, {"source": "статья_2"}, {"source": "статья_3"}],
ids=["doc1", "doc2", "doc3"]
)
# 4. Выполнение семантического поиска
# Ищем документ, который наиболее похож по смыслу на наш запрос "Машина времени"
results = collection.query(
query_texts=["Машина времени"],
n_results=1
)
# 5. Вывод результатов
# Векторный поиск найдёт "Это статья о машинах", так как "Машина времени" семантически ближе к "машинам", чем к другим документам.
print(results)
Разбор кода:
client = chromadb.Client()
: Эта строка создаёт клиента Chroma DB. В данном случае база данных работает локально в оперативной памяти (in-memory), что удобно для быстрых тестов.client.create_collection(...)
: Коллекция — это основная единица хранения. Вы можете рассматривать её как таблицу, в которой будут храниться ваши документы.collection.add(...)
: Методadd
используется для добавления данных в коллекцию. Он принимает три ключевых аргумента:documents
: список текстов, которые нужно сохранить. Chroma DB автоматически преобразует их в векторы.metadatas
: список словарей с дополнительной информацией (например, источником, датой) для каждого документа.ids
: уникальные идентификаторы для каждого документа.
collection.query(...)
: Этот метод выполняет векторный поиск. Вы передаёте емуquery_texts
(ваш запрос) иn_results
(количество ближайших результатов, которые нужно вернуть).print(results)
: Вывод результатов показывает, что Chroma DB успешно нашла наиболее релевантный документ, несмотря на отсутствие точного совпадения слов.
Этот пример наглядно демонстрирует силу семантического поиска, который лежит в основе Chroma. В отличие от традиционного поиска по ключевым словам, он понимает смысл запроса и находит наиболее подходящие документы, что является критически важным для современных приложений.
Надеюсь, эта статья поможет вам начать свой путь в мире векторных баз данных! Если у вас есть ещё вопросы, смело задавайте их.
Авторизуйтесь, чтобы оставить комментарий.
Нет комментариев.