6.2 Векторная база данных: базовое устройство, документы и атрибуты
Векторные базы данных (БД), в отличие от классических БД, хранят векторное представление элемента (предпосчитанный эмбединг) для каждого элемента, по которому в дальнейшем можно осуществлять поиск.

GigaChain поддерживает различные векторные БД, например Chroma, Faiss или Pinecode. В этом уроке мы рассмотрим работу с современной и бесплатной Chroma.

Векторную БД можно инициализировать как из стандартных строк, так и из «документов» — специальной сущности GigaChain, которая включает в себя контент и атрибуты.

Для удобства в GigaChain также реализованы Document Loaders, которые инициализируют базу из файлов различных форматов: JSON, PDF, HTML и других. У каждого Document Loader есть специфичные аргументы по типу данных — об этом читайте подробнее в документации LangChain.

Приведём пример использования JSONLoader. Достаточно указать путь до файла и его структуру:
Как видно в примере, каждый элемент объекта Document содержит поле page_content, которое хранит контент документа, и поле metadata, которое включает в себя словарь атрибутов документа.

Теперь попробуем инициализировать базу Chroma:
  • импортируем необходимые модули;
  • инициализируем loader для загрузки исходного текста;
  • делим текст на отдельные элементы-документы с помощью CharacterTextSplitter — для которых дальше мы реализуем поиск;
  • определяем эмбединг-функцию — чтобы получить эмбединг каждого документа и текста запроса при поиске;
  • инициализируем базу Chroma с нашим наборов подтекстов и эмбединг-функцией.
Готово. В следующей части выполним поиск по документам.