RAG

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

Chroma как начать работать с векторным поиском
Mikhail
Автор
Mikhail
Опубликовано 01.09.2025
0,0
Views 12

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

Надеюсь, эта статья поможет вам начать свой путь в мире векторных баз данных! Если у вас есть ещё вопросы, смело задавайте их.

Авторизуйтесь, чтобы оставить комментарий.

Комментариев: 0

Нет комментариев.