~6m1:39:32
freeCodeCamp.org

Vector Databases Full Course for Beginners – Embeddings, Similarity Search & ChromaDB

3 нояб. 2026 г.

Read: ~6m · You save: 94 min

Векторные базы данных: полный курс для начинающих — эмбеддинги, поиск по сходству и ChromaDB

Курс с нуля: векторы, косинусное сходство, токенизация, эмбеддинги Gemini и ChromaDB. Учимся искать информацию по смыслу, а не по ключевым словам.

Курс посвящён векторным базам данных. Он охватывает векторы и метрики сходства, токенизацию, модели эмбеддингов, внутреннее устройство векторных баз данных и практический проект на ChromaDB. По словам автора, он работает программным инженером 15 лет и руководителем направления AI-инженерии 4 года. Автор утверждает, что знание векторных баз данных необходимо инженерам в 2026 году: программистам, AI-инженерам и инженерам машинного обучения.

Курс состоит из семи разделов:

  1. Основы: что такое векторная база данных, зачем она нужна, как работает и где применяется.
  2. Векторы и векторное сходство.
  3. Токены и токенизация.
  4. Преобразование текста в векторы и модели эмбеддингов.
  5. Демонстрация генерации эмбеддингов с помощью модели Google Gemini.
  6. Внутренняя архитектура векторной базы данных: хранение, индексация, алгоритмы поиска.
  7. Практический проект: генерация эмбеддингов, хранение в ChromaDB и семантический поиск.

1. Основы векторных баз данных

Определение

Векторная база данных предназначена для хранения, индексации и поиска многомерных векторных эмбеддингов. Эти эмбеддинги создаются моделями эмбеддингов и обеспечивают семантический поиск.

Конвейер обработки данных

Большинство векторных баз данных работает по единой схеме независимо от поставщика:

  1. Исходные данные. Текст, изображения, документы, код или другие данные передаются в модель эмбеддингов.
  2. Эмбеддинги. Модель преобразует данные в длинный список чисел с плавающей запятой. Эти числа отражают смысл исходных данных и называются векторными эмбеддингами. Близкие по смыслу фрагменты получают эмбеддинги, которые располагаются близко друг к другу в векторном пространстве.
  3. Хранение. Эмбеддинги сохраняются вместе со ссылкой на исходный объект и, при необходимости, с метаданными.
  4. Индексация. Векторная база данных строит индекс на основе алгоритмов приблизительного поиска ближайших соседей (approximate nearest neighbor, ANN).

Без индекса поиск похожих изображений среди 1 миллиона объектов требует сравнения запроса со всеми векторами. Такой линейный перебор имеет сложность O(n). Индекс позволяет не выполнять полный перебор и ускоряет поиск. Разные базы данных используют разные методы индексации, но цель во всех случаях одна: быстрый и точный поиск.

Фазы работы

  • Фаза загрузки (injection). Данные преобразуются в эмбеддинги, сохраняются и индексируются.
  • Фаза поиска (retrieval). Запрос пользователя или приложения преобразуется в эмбеддинг той же моделью. Векторная база данных ищет наиболее близкие векторы. Затем результаты ранжируются по оценке сходства, при необходимости применяются фильтры по метаданным, и возвращаются первые K наиболее релевантных результатов.

Одна и та же модель эмбеддингов должна использоваться и при загрузке, и при запросе. Только в этом случае все эмбеддинги находятся в одном векторном пространстве и поддаются сравнению.

Типы данных

Тип данныхПримеры
СтруктурированныеТаблицы, строки, фиксированная схема
ПолуструктурированныеJSON, логи, события
НеструктурированныеТексты, PDF, аудио, видео, изображения

Неструктурированные данные имеют высокую размерность и описываются смыслом. Традиционные базы данных могут хранить такие данные, но не могут выполнять по ним поиск по смыслу в масштабе.

Традиционные и векторные базы данных

Традиционные базы данных оптимизированы для точного совпадения. Они поддерживают поиск по ключевым словам, диапазонные запросы, соединения (joins) и транзакции. Поиск по смыслу они не выполняют: если искомое слово отсутствует в документе, информация не будет найдена, даже если намерение пользователя совпадает с содержанием документа.

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

ПризнакТрадиционная база данныхВекторная база данных
Структура данныхСтроки и столбцыВекторы и эмбеддинги
СхемаФиксированная, управляемая схемойГибкая
Тип поискаПо ключевым словам, условия WHEREПоиск по сходству, по смыслу
АлгоритмыТочное совпадениеПоиск ближайших соседей

Векторная база данных не заменяет традиционную. В типичной архитектуре традиционная база данных остаётся системой записи (system of record), а векторная база данных создаёт слой семантического поиска поверх неё.

Области применения

  • Рекомендательные системы. Автор называет Netflix, Amazon и YouTube. Пользователи и объекты (товары, фильмы) представляются векторами. Вектор пользователя формируется из его поведения: кликов, просмотров, истории покупок. Вектор объекта формируется из отзывов и характеристик. Поиск ближайших соседей возвращает релевантные рекомендации.
  • Поиск на естественном языке.
  • RAG-конвейеры (Retrieval-Augmented Generation). Векторные базы данных передают языковым моделям релевантный контекст.
  • Обнаружение мошенничества и аномалий.
  • Поиск похожих документов, изображений и кода.

2. Векторы и метрики сходства

Определение вектора

В машинном обучении и векторных базах данных вектор — это одномерный массив чисел. Каждое число представляет признак объекта.

  • Допустимы одномерные массивы произвольной длины.
  • Скаляр (одно число) вектором не является.
  • Двумерный массив (матрица) и трёхмерный массив вектором не являются.
  • Не каждый вектор является эмбеддингом. Все эмбеддинги — векторы, но не все векторы — эмбеддинги.

Число измерений равно числу признаков. Пример с автомобилями:

  • Один признак (скорость). Автомобиль A — 180, автомобиль B — 160, автомобиль C — 80. Автомобили с близкой скоростью располагаются на числовой прямой близко друг к другу.
  • Два признака (скорость и пробег). Автомобили с близкими значениями обоих признаков образуют кластер на плоскости.
  • Три признака (скорость, пробег и цена). Автомобили отображаются в трёхмерном пространстве. Похожие по всем трём признакам автомобили группируются вместе.

По словам автора, модели эмбеддингов создают векторы размерностью до 3000. Принципы, которые наглядны в двух- и трёхмерном пространстве, сохраняются и в пространствах большей размерности: похожие векторы располагаются ближе, различающиеся — дальше.

Метрика сходства

Метрика сходства — это функция, которая принимает два вектора и возвращает числовую оценку их близости. Разные метрики определяют сходство по-разному. Рассматриваются две метрики: косинусное сходство и евклидово расстояние.

Косинусное сходство

Косинусное сходство сравнивает направление векторов и не учитывает их величину (модуль).

  • Формула. Числитель — скалярное произведение векторов. Знаменатель — произведение их модулей (длин).
  • Диапазон значений. От −1 до 1.
  • Значение 1. Угол между векторами равен 0°, векторы направлены одинаково. Векторы похожи.
  • Значение 0. Угол равен 90°, векторы ортогональны. Между ними нет связи.
  • Значение −1. Угол равен 180°, векторы направлены противоположно. Векторы связаны, но имеют противоположное направление.

Пример. Векторы A = (2, 0, 1) и B = (4, 0, 2).

  1. Скалярное произведение: 2·4 + 0·0 + 1·2 = 10.
  2. Модули: |A| ≈ 2,23; |B| ≈ 4,47.
  3. Косинусное сходство: 10 / (2,23 · 4,47) ≈ 1.

Модуль вектора B почти вдвое больше модуля вектора A, но косинусное сходство равно 1. Векторы направлены одинаково, поэтому сходство максимально.

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

Евклидово расстояние

Евклидово расстояние измеряет длину прямой между двумя векторами в пространстве. Направление не учитывается.

  • Формула. Сумма квадратов разностей соответствующих координат, из которой извлекается квадратный корень.
  • Диапазон значений. От 0 до бесконечности.
  • Значение 0. Векторы совпадают.
  • Большое значение. Векторы различаются.

Пример. Векторы A = (3, 1, 2) и B = (6, 4, 5).

  1. Разности: 3 − 6 = −3; 1 − 4 = −3; 2 − 5 = −3.
  2. Квадраты разностей: 9 + 9 + 9 = 27.
  3. Квадратный корень: √27 ≈ 5,2.

Евклидово расстояние применяется в GPS-системах и робототехнике, где важно физическое расстояние. В векторных базах данных для эмбеддингов чаще используется косинусное сходство.


3. Токены и токенизация

Роль токенов

Модели эмбеддингов не работают с исходными данными напрямую. Сначала исходные данные преобразуются в токены, то есть в числовое представление. Затем токены преобразуются в векторные эмбеддинги. Этот этап выполняется внутри модели.

Токены сами по себе не несут смысла. Смысл формируется на этапе создания эмбеддингов. Токены также служат единицей тарификации: модели эмбеддингов взимают плату за количество токенов, а не за объём данных.

Токенизация — это разбиение исходных данных на токены. На входе токенизатора находятся исходные данные, на выходе — последовательность токенов (числовое представление).

Типы токенизации

Посимвольная токенизация (character tokenization). Каждый символ становится отдельным токеном. Для фразы «I love vector database» получается 13 уникальных символов и, соответственно, 13 токенов. Основной недостаток: количество токенов быстро растёт.

Пословная токенизация (word tokenization). Каждое слово становится токеном. Для той же фразы получается пять токенов (четыре слова и пробелы, по словам автора). Недостаток: каждое слово рассматривается как отдельная единица. Например, слова tokenization и token не связаны между собой, хотя первое содержит второе.

Субсловная токенизация (subword tokenization). Слова разбиваются на более мелкие части, которые часто повторяются. Например, tokenization разбивается на token и ization; globalization — на global и isation. Это уменьшает количество токенов и позволяет повторно использовать общие части. Современные большие языковые модели используют субсловную токенизацию. Разбиение подбирается обучением, чтобы минимизировать количество токенов.

Пример токенизатора OpenAI

Автор приводит пример из токенизатора OpenAI:

  • Абзац из 252 символов преобразуется в 53 токена.
  • Многие слова соответствуют одному токену, но некоторые разбиваются на несколько. Слово indivisible состоит из двух токенов.
  • Unicode-символы, например эмодзи, могут разбиваться на несколько токенов по байтам. Один эмодзи в примере превращается в четыре токена.
  • Часто встречающиеся последовательности символов могут объединяться в один токен. Последовательности 123, 456 и 789 становятся отдельными токенами.

4. Модели эмбеддингов

Преобразование токенов в смысл

Токены — это числовое представление текста, но не его смысл. Модель эмбеддингов принимает токены и создаёт векторные эмбеддинги, которые отражают смысл. Например, эмбеддинг в 1000 измерений представляет собой 1000 координат в векторном пространстве. Тексты с близким смыслом располагаются близко друг к другу, тексты с разным смыслом — далеко.

Поскольку эмбеддинги являются векторами, над ними можно выполнять векторные операции. Автор демонстрирует это на модели GloVe (300 измерений) в векторной песочнице:

  • king − man + woman ≈ queen. Модель не обучалась на этом соотношении, но результат следует из взаимного расположения векторов.
  • Delhi − India + Japan ≈ Tokyo. Делли — столица Индии, Токио — столица Японии.

Эти операции лежат в основе семантического поиска: близость векторов отражает близость смысла.

По словам автора, современные модели создают эмбеддинги размерностью около 3000.

Типы моделей эмбеддингов

1. Модели словных эмбеддингов (word embeddings). Принимают отдельное слово и возвращают вектор. Примеры: Word2Vec и GloVe.

  • Ограничение: эмбеддинг создаётся для отдельного слова без учёта контекста. В предложениях «river bank» (берег реки) и «bank account» (банковский счёт) слово bank получает один и тот же вектор.
  • По словам автора, в современных системах такие модели практически не используются. Они стали отправной точкой для дальнейших исследований.

2. Модели текстовых эмбеддингов (text embedding models). Принимают предложение, абзац или документ целиком и возвращают один вектор. Это позволяет сравнивать предложения, абзацы и документы с поисковым запросом.

  • Поставщики: OpenAI, Google Gemini и другие.
  • Применение: семантический поиск, RAG-системы, рекомендательные системы.
  • По словам автора, такие модели лежат в основе большинства языковых моделей.

3. Мультимодальные эмбеддинги (multimodal embeddings). Создают эмбеддинги для текста и изображений. Они применяются, когда документ содержит и текст, и изображения (например, PDF с иллюстрациями).

  • Если данные только текстовые, мультимодальные модели не требуются.

Популярные модели

Автор упоминает следующие модели:

  • Текстовые эмбеддинги OpenAI.
  • Gemini Embedding 001 от Google — текстовая модель.
  • Модели Cohere — для поиска и RAG.
  • CodeBERT от Microsoft — для поиска и сравнения кода.
  • Gemini Embedding 2 от Google — мультимодальная модель, выпущенная в апреле 2026 года. Поддерживает текст, изображения, видео, аудио и PDF.

Список не является исчерпывающим.


5. Генерация эмбеддингов с помощью Gemini

Модели Gemini

gemini-embedding-001 (Gemini Embedding 001):

  • Вход: текст. Выход: текстовые эмбеддинги.
  • Лимит входных токенов: 2048.
  • Размерность выходного вектора настраивается в диапазоне от 128 до 3072.
  • Рекомендуемые размерности: 768, 1536 и 3072.
  • Последнее обновление: июнь 2025 года.

Gemini Embedding 2:

  • Выпущена в апреле 2026 года.
  • Вход: текст, изображения, видео, аудио и PDF.
  • Лимит входных токенов: около 8192.
  • Размерность выходного вектора настраивается в диапазоне от 128 до 3072. Рекомендуемые размерности совпадают с предыдущей моделью.

В демонстрации используется Gemini Embedding 001.

Ход демонстрации в Google Colab

  1. Импорт библиотек. Используются библиотека Google для работы с Gemini API, pandas и функция cosine_similarity из scikit-learn.
  2. Настройка ключа API. Ключ API хранится в разделе Secrets в Colab. Для работы требуется предварительно создать ключ Google API.
  3. Создание клиента. На основе ключа создаётся клиент Gemini API.
  4. Генерация эмбеддингов. Вызывается метод client.models.embed_content с тремя параметрами:
    • название модели — gemini-embedding-001;
    • содержимое — список предложений;
    • конфигурация: output_dimensionality = 768 и task_type = semantic similarity.
  5. Проверка результата. Длина каждого эмбеддинга составляет 768, как и задано в конфигурации.

Результаты сравнения

Автор вычисляет матрицу косинусного сходства. Наиболее похожие пары предложений:

  • «How do I write a Python function?» и «How can I write a class in Java?».
  • «Which smartphone has the best camera?» и «What is the best Android phone?».
  • «Turn off the lights» и «Switch off the lights».

Визуализация

Для визуализации 768-мерных эмбеддингов применяется метод главных компонент (PCA), который сокращает размерность до трёх. Результат строится в трёхмерном пространстве и в интерактивном виде с помощью Plotly. Близкие по смыслу предложения располагаются рядом.


6. Архитектура векторной базы данных

Векторная база данных состоит из четырёх основных компонентов.

1. API-шлюз (API gateway)

Точка входа в базу данных. Предоставляет API для операций:

  • сохранение векторов;
  • обновление векторов;
  • чтение векторов;
  • удаление векторов;
  • запросы для поиска.

Операции загрузки выполняются в фазе загрузки, операции запроса — в фазе поиска.

2. Слой индексации (indexing layer)

Организует векторы для эффективного поиска по сходству и позволяет избегать полного перебора. Аналогичный слой есть в традиционных базах данных. Большинство векторных баз данных применяют два метода:

  • IVF (Inverted File Index) — инвертированный файловый индекс;
  • HNSW (Hierarchical Navigable Small World) — иерархический навигируемый граф малого мира.

Цель слоя — поиск с низкой задержкой среди миллионов векторов.

3. Слой хранения (storage layer)

Хранит многомерные векторы. Главные требования:

  • быстрая вставка, чтение и удаление;
  • долговечность и надёжность, которые обеспечиваются репликацией;
  • масштабирование, которое обеспечивается партиционированием.

4. Слой обработки запросов (query processing layer)

Обрабатывает векторы запросов. Слой взаимодействует с индексом и хранилищем, выполняет фильтрацию и ранжирование результатов.


7. Практический проект: семантический поиск в ChromaDB

Ход работы

  1. Генерация эмбеддингов. Эмбеддинги создаются моделью Gemini Embedding 001 с размерностью 768. Тот же способ использован в демонстрации предыдущего раздела.
  2. Установка ChromaDB. Выполняется командой pip install chromadb.
  3. Создание клиента. Клиент chromadb.PersistentClient сохраняет данные на диск в заданной директории.
  4. Создание коллекции. Коллекция аналогична таблице в реляционной базе данных. Используется метод get_or_create_collection, который создаёт коллекцию, если её нет. В примере коллекция называется codedex chromadb demo.
  5. Сохранение данных. В коллекцию передаются три массива:
    • documents — исходные тексты;
    • embeddings — эмбеддинги этих текстов;
    • ids — идентификаторы записей.

Выполнение запроса

Перед поиском запрос также преобразуется в эмбеддинг. Требования:

  • использовать ту же модель, что и при загрузке (Gemini Embedding 001);
  • использовать ту же размерность (768).

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

Затем выполняется collection.query с эмбеддингом запроса и параметром количества результатов.

Результаты поиска

  • Запрос «programming». Найдены фразы «How do I write a Python function?» и «How can I create a class in Java?». Слова programming в них нет. Поиск по ключевым словам не нашёл бы эти фразы.
  • Запрос «electronics». Найдены фразы «Apple released a new iPhone» и «Which smartphone has the best camera?». Они относятся к электронике, хотя слова electronics в них нет.

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


Ключевые выводы

  • Векторная база данных хранит эмбеддинги и выполняет поиск по сходству, а не по точному совпадению.
  • Эмбеддинг — это вектор, координаты которого отражают смысл данных. Близкие по смыслу данные располагаются близко друг к другу.
  • Косинусное сходство учитывает направление вектора. Евклидово расстояние учитывает расстояние между точками. Для эмбеддингов чаще применяется косинусное сходство.
  • Токенизация преобразует данные в числовое представление. Субсловная токенизация используется в современных языковых моделях. Модели эмбеддингов тарифицируют использование по количеству токенов.
  • Модели текстовых эмбеддингов и мультимодальные модели применяются в семантическом поиске, RAG-системах и рекомендательных системах.
  • Архитектура включает API-шлюз, слой индексации (IVF, HNSW), слой хранения и слой обработки запросов.
  • Запросы и загрузка данных должны использовать одну и ту же модель эмбеддингов с одинаковой размерностью.
  • Векторная база данных дополняет традиционную базу данных и не заменяет её.

Введение и обзор курса

Введение: зачем нужны векторные базы данных и где они применяются.

  • Курс рассчитан на начинающих, предварительные знания не требуются
  • Ведущий: 15 лет работы software engineer и 4 года как lead AI engineer
  • Векторные БД лежат в основе AI-агентов, рекомендательных систем, RAG и корпоративных баз знаний
  • Пайплайн включает фазу инжекции (загрузка) и фазу извлечения (поиск)

Определение и устройство векторной базы данных

Векторная БД хранит, индексирует и ищет многомерные векторные эмбеддинги, обеспечивая семантический поиск; сравнивается с традиционными реляционными БД.

  • Определение: база данных для хранения, индексации и поиска многомерных векторных эмбеддингов
  • Эмбеддинг-модель преобразует данные в список чисел с плавающей точкой, сохраняющих смысл
  • Похожие по смыслу тексты имеют близкие векторы в векторном пространстве
  • Вместе с эмбеддингами хранятся ссылка на исходный контент и опциональные метаданные
  • Линейный поиск по 1 млн изображений имеет сложность O(n) и слишком медленный
  • Запрос пользователя проходит через ту же модель эмбеддингов, так как все векторы должны находиться в одном пространстве
  • Этапы выдачи: ранжирование по score, фильтрация по метаданным, возврат top-K результатов
  • Традиционные БД работают по ключевым словам и точному совпадению; векторные БД — по смыслу
  • Типы данных: структурированные (таблицы), полуструктурированные (JSON, логи), неструктурированные (текст, PDF, аудио, видео, изображения)
  • Векторная БД не заменяет традиционную: традиционная остаётся системой записи, векторная строит слой семантического поиска поверх неё
  • Варианты применения: рекомендательные системы (Netflix, Amazon, YouTube), NLP-поиск, RAG, обнаружение мошенничества и аномалий

Векторы и метрики сходства

Вектор в машинном обучении — одномерный массив чисел, где каждое число описывает признак объекта; сходство измеряется косинусным сходством и евклидовым расстоянием.

  • Вектор — одномерный массив чисел; матрица и трёхмерный массив векторами не являются
  • Количество измерений равно количеству признаков объекта
  • Все векторы не являются эмбеддингами, но эмбеддинги — это векторы
  • Иллюстрация на примере автомобилей: скорость, пробег, цена дают векторы 1D, 2D, 3D
  • Эмбеддинги моделей поддерживают до 3000 измерений
  • Метрика сходства — функция, принимающая два вектора и возвращающая числовой score
  • Косинусное сходство сравнивает направление, а не величину; диапазон от -1 до 1
  • Косинус 1 — угол 0° (одинаковое направление), 0 — угол 90° (ортогональны, без связи), -1 — угол 180° (противоположные направления)
  • Пример косинусного сходства: A=(2,0,1), B=(4,0,2), скалярное произведение 10, результат примерно 1
  • Евклидово расстояние — длина прямой между точками; диапазон от 0 до бесконечности; пример A=(3,1,2), B=(6,4,5) дает sqrt(27) ≈ 5.2
  • Косинусное сходство широко используется в поиске, рекомендациях и RAG; евклидово — в GPS и робототехнике
  • Для векторных БД и эмбеддингов ведущей метрикой назван косинус

Токены и токенизация

Токенизация разбивает сырые данные на токены, которые затем превращаются в эмбеддинги; токены являются единицей тарификации моделей.

  • Эмбеддинг-модели не понимают сырой текст, поэтому он сначала преобразуется в токены
  • Токены — основа тарификации: оплата идёт по количеству токенов, а не по размеру данных
  • Три типа токенизации: посимвольная, пословная и субсловная (subword)
  • Посимвольная токенизация: пример 'I love vector database' дает около 13 токенов; проблема — их слишком много
  • Пословная токенизация: 5 токенов, но словарь английского языка огромен, и слова вроде 'tokenization' считаются отдельно
  • Субсловная токенизация разбивает слова на части (например, 'global' + 'isation'), сокращая число токенов
  • Современные LLM используют субсловную токенизацию
  • Пример OpenAI tokenizer: абзац из 252 символов превращается в 53 токена
  • Эмодзи в Unicode могут разбиваться на несколько токенов (пример: 4 токена)

Модели эмбеддингов

Эмбеддинги переводят данные в векторы, где смысл кодируется координатами; векторная арифметика показывает семантические связи; модели делятся на три типа.

  • Токены сами по себе не несут смысла, эмбеддинг-модель переводит их в векторы с семантикой
  • Эмбеддинг — координаты в векторном пространстве (например, 1000 измерений)
  • Векторная арифметика: king − man + woman ≈ queen; Delhi − India + Japan ≈ Tokyo (модель GloVe 300d)
  • Типы моделей: word embeddings (Word2Vec, GloVe), text embeddings (OpenAI, Gemini и др.), multimodal embeddings (текст + изображения)
  • Недостаток word embeddings: нет контекста, слово 'bank' в 'river bank' и 'bank account' получает один вектор
  • Text embeddings кодируют предложения, абзацы и целые документы
  • Multimodal embeddings подходят для PDF с текстом и изображениями
  • Упомянутые модели: OpenAI, Gemini embedding 001 и 2, CodeBERT (Microsoft), модели Cohere
  • Ключевой вывод: токенизация → эмбеддинг-модель → векторы для поиска, RAG и рекомендаций

Демо: эмбеддинги Gemini

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

  • Gemini embedding 001: вход — текст, вывод — текстовые эмбеддинги, лимит 2048 токенов, размерность от 128 до 3072, рекомендованные 768, 1536 и 3072, обновление июнь 2025
  • Gemini embedding 2: выпущена в апреле 2026, поддерживает текст, изображения, видео, аудио и PDF, лимит около 8192 токенов
  • В демо используется Gemini embedding 001 с размерностью 768 и task type semantic similarity
  • Код: импорт google-genai, pandas, cosine_similarity из sklearn; API-ключ хранится в секретах Colab
  • Метод client.models.embed_content принимает модель, контент и конфигурацию
  • Примеры сходства: 'how do I write a python function' ближе всего к 'how can I write a class in Java'; 'which smartphone has the best camera' к 'what is the best Android phone'; 'turn off the lights' к 'switch off the lights'
  • PCA уменьшает 768 измерений до 3 для визуализации; интерактивная версия строится через plotly

Внутренняя архитектура векторной БД

Архитектура векторной БД включает четыре слоя: API-шлюз, слой индексации, слой хранения и слой обработки запросов.

  • API-шлюз — точка входа: операции вставки, обновления, чтения и удаления векторов, а также запросы
  • Операции записи (инжекция) отличаются от операций запроса (поиска)
  • Индексный слой обеспечивает быстрый поиск без полного перебора; применяются IVF (inverted file index) и HNSW (hierarchical navigable small worlds)
  • Слой хранения обеспечивает быструю вставку, выборку и удаление, отказоустойчивость через репликацию и масштабирование через партиционирование
  • Слой обработки запросов принимает поисковые запросы, координирует индекс и хранилище, применяет фильтрацию и ранжирование

Демо: ChromaDB и семантический поиск

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

  • Установка: pip install chromadb
  • Клиент: chromadb.PersistentClient с директорией для хранения данных
  • Collection аналогична таблице в SQL; создаётся методом get_or_create_collection
  • В коллекцию добавляются эмбеддинги, исходные тексты (documents) и идентификаторы (ids)
  • Запрос: эмбеддинг запроса генерируется той же моделью и той же размерностью, иначе поиск не работает
  • Запрос 'programming' возвращает 'How do I write a Python function' и 'How can I create a class in Java', хотя слова programming в них нет
  • Запрос 'electronics' возвращает 'Apple released a new iPhone' и 'Which smartphone has the best camera'
  • Семантический поиск лежит в основе рекомендательных систем современных e-commerce платформ